2012-01-21 66 views
0

自從我做過這類數學以來已經有一段時間了,所以也許有人可以爲我回答這個問題。我不認爲這個問題正是我想要的,因爲我正在尋找精確x值的交點。如何找到沿貝塞爾樣條相交的Y值?

所以我有一個從X,Y到XX,YY的樣條線,每個末端都有控制點。我認爲我會說這是一條二次曲線是正確的(曲線不會交叉)。我打算使用給定圖形庫(目前正在考慮HTML5畫布)的路徑例程來繪製這條線,所以我不會自己繪製它。

我有許多點,表示爲X + n,我想找到交點的Y值。我並不是要求沿着這個路徑在給定點上的一個位置,我要求它在與X線相交的路徑上的位置。

我打算繪製一條垂直線來與它相遇,所以如果可能的話,如果該點精確到能夠以令人信服的方式與曲線相遇(不是由幾個像素關閉),那將是非常好的。

這些例程並不是很難自己畫線,所以我可以做到這一點,只要測試(容忍)沿圖的X值,如果它涉及到它。

*數學

+0

我不確定我完全理解你想要什麼。你有一條貝塞爾曲線(立方或二次方?),並且你想要找到X = k線與貝塞爾相交的位置?難道你不能把k代入Bezier方程並解決t?例如[這裏](http://en.wikipedia.org/wiki/Bezier_curve#Examination_of_cases),用k代替B(t)並求解t。 (它可能是多值的。)見[這裏](http://en.wikipedia.org/wiki/Cubic_equation)找到三次方程的根。 – user1118321

+0

我可以,但我希望可能有一個現成的函數或庫或者爲我做的事情(以僞代碼,JavaScript或C(我可以輕鬆移植到JS))。 – Joe

+0

[將2d樣條函數f(t)轉換爲f(x)]的可能副本(http://stackoverflow.com/questions/11518054/transform-2d-spline-function-ft-into-fx) –

回答

0

最近我回答一個非常類似的問題如何transform 2d spline function f(t) into f(x)。其中的答案從三次方程的精確解決方案(如三次貝塞爾樣條曲線是最常見的方案)和另一方面的簡單二分法,其中包含各種根發現算法。拿你的選擇。