2011-10-09 176 views
0

我会如何绘制一个UIBezierpath来连接三个点。我知道必须有一个公式/算法,但我一直在寻找并找不到它。会有人能够帮助我用一些代码绘制一条贝塞尔曲线通过三点。如果你给公式没有代码,这也将是有益的。这样很容易理解:start =开始点,cp1 =第一个控制点,cp2 =第二个控制点,end =结束点。基于三点绘制贝塞尔曲线?

在此先感谢

回答

1

这是可惜不是简单的事情要做,所以如果可能的话,我会搜索周围的一些代码,解决了方程你(这是在那里,相信我)。

这就是说,你需要做的是根据你的观点推导出一个方程式。最可能使用的方程是二次方程,所以你将有y = ax^2 + bx + c。使用你的三点,你将把x和y分别插入公式中。然后,您可以对函数进行本地化以查找a,b和c中的值。一旦你找到这些点,你有三个点的完整等式。

这就是你将如何以纯粹的数学形式解决它,虽然它似乎有一些内部方法可以用来简化事情(我的背景是物理学,所以我跳过枪,只是直奔数学在搜索文档之前)。在UIBezierPath Class Reference中,您应该能够使用- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint以获得所需的效果。后者是将解决我上面解释的方程的方法。