2012-11-10 72 views
0

我正在製作地圖程序,並且我有輪廓跟蹤的粗糙輪廓,現在我想用貝塞爾平滑這些輪廓。 我不知道如何使終點平滑。你知道,我必須將開始和結束混合以具有相同的切線。我發現了幾種算法,他們都沒有處理這個問題。 我知道這可以用差異來解決,但我沒有進入那件事。所以我希望有人能夠給我一個關鍵部分一個明顯的代碼示範。使用貝塞爾使貝塞爾平滑粗糙多邊形的算法

回答

0

我不明白你的申請,但我會回答如何匹配兩條貝塞爾曲線: 如果你有兩條具有控制點(A1,A2,...,AN-1,AN)的貝塞爾曲線和B1,B2,...,BN-1,BN)並且想要將A的結束與B的開始匹配,首先必須確保AN = B1(例如通過將兩者都設置爲(AN + B1)/ 2 )。

爲了使其切向連續AN-1(AN/B1),B2必須在一條直線上。 線的方向可以通過平均A的最後一個分段的方向和B的第一個分段的方向找到:d =((AN-AN-1)+(B2-AN))/ 2。

在2D中: 通過分別找到線(AN,d)和線(AN-2,AN-1)和(B2,B3)的交點來重新定位AN-1和B2。 對於3D,您可能需要將線與由(B2,B3)構造的平面相交,並通過計算(B2-B3)和d的叉積找到第三個點。