2011-10-09 171 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以獲得所需的效果。後者是將解決我上面解釋的方程的方法。