2010-12-08 72 views
3

我正在嘗試創建一個矩形的簡單圓頂。我能夠使用bezierCurveTo方法來創建上限,但是我必須利用控制點的y值來獲得曲線的正確高度。如果我有寬度,並且我知道曲線通過的高度是他們找到控制點的y值的公式?我現在所擁有的功能是查找畫布中貝塞爾曲線的高度

c.moveTo(130,55); 
c.bezierCurveTo(130,-18,0,-18,0,55); 

-18是我有什麼設置y值來獲得曲線約穿越Y = 0

+0

您是否需要使用貝塞爾曲線及其所有的功能,或者是否需要一個簡單的圓弧`arcTo`給你需要的東西? – Phrogz 2010-12-08 04:21:11

+0

@Progro技術上不行,但我喜歡貝塞爾曲線在通向直線部分的兩側如何變直。正如我提到的,我有一些工作,我只是想知道如果我再次遇到這個問題,公式會是什麼。 – qw3n 2010-12-08 21:37:31

回答

4

是的,有一個簡單的答案這個Bezier曲線的約束版本。服用從維基百科here三次貝塞爾曲線的定義,並沿着曲線求解中點(T = 0.5),y的最小值將是:

1/4 Ymax + 3/4 Ymin 

(YMAX是的y值起點和終點,Ymin是兩個控制點的y值)。 或者,中點爲0,

Ymin = -1/3 Ymax. 

所以,既然你有YMAX = 55,YMIN必須是1/3 * 55 = -18.333 .. - 這就是爲什麼18你的工作例。