2017-02-25 70 views
2

我有一個關於計算曲線貝塞爾控制的問題。問題是,如下圖所示:如何用有損近似確定計算點的貝塞爾控制點?

Problem bezier curve

我有一個排序列表中的紅點,包括C和D.我需要找到F和E的問題是,不是每個點有在曲線上(曲線不需要通過任何點,除了開始和結束)。它只是一個「近似」。

我已經閱讀以下內容:

所以我就如何解決思路這就是:

  1. 通過C和d
  2. 如果點的個數是偶數計算從線的最遠點,看看列表中的前一個和下一個點,確定哪一個是遠離假想線並計算它們之間的中點
  3. 三點不足以得到曲線的形狀,我需要的值在25%和75%。幸運的是,有幾種方法可以確定:均勻間隔方法,弧長和離散方法。
  4. 現在我有5點(開始,25%,中,75%,結束)來描述我的曲線。我知道每個人的t值。曲線應該是這樣的:

maybe solution

從此,我需要點莫名其妙地插入貝塞爾公式,然後反向計算控制點......怎麼樣?

在此先感謝您的任何提示。

回答

2

我寫下了如何在"Creating a curve from three points"部分的「Bézier曲線入門」中做到這一點,儘管您可能還需要閱讀前兩節,因爲它們解釋了支持理論和代碼。

重要信息是for any given t, there is a fixed point on the line {start,end} that connects to your on-curve point Bezier(t)。在下面的圖片中,例如,點C總是與開始和結束的距離相同。根據您放置控制點的位置,曲線的樣子並不重要:對於t=0.5C始終位於開始和結束之間的中間位置。此外,{C,Bezier(t)}和{Bezier(t),{}}的長度之間的比率是固定的,所以如果你知道第一個,你做了什麼,那麼你立即知道A去哪裏,所以你有所有需要的信息。

enter image description here

就這樣,只要你喜歡,你唯一的自由參數是切線在t,或者更準確地說,左,右插的距離,你可以重建曲線。沒有超過三分,這幾乎是一個猜測的價值,有幾個「美學上令人滿意」的選項,但沒有一個適用於你的情況:你有一堆圍繞你所選擇的值的點,那麼你可以對切線做出有根據的猜測基於你所選擇的t值的點,並簡單地重建立方貝塞爾使用它。

隨着本地支柱在t

enter image description here

但考慮到你的數據,你可以得到一個更好的選擇。

0

最簡單的是最小二乘法逼近。如果B(t)是貝塞爾的方程,P 是近似點,叔是相應的參數值,要最大限度地減少LSQ = ∑ || B(噸 )-P i || = ∑ ((B X(噸)-P XI) +((B Ý(噸)-P 2 。)您可以將F和E的座標作爲變量,所以你送四個線性方程組,在四個變量:∂/∂ ˚F X(LSQ)= 0,∂/∂ ˚FÝ(LSQ)= 0,∂/∂ ë X(LSQ)= 0,∂/∂ ëÝ(LSQ)= 0。他們可以使用標準方法解決。要找到相應的參數值,您可以使用弦長近似法,該法給出了很好的結果:t i = || P i - P i-1 ||/total,total = || DP n || + ∑ || P i -P i-1 || (採取P = C)。如果您需要最佳近似值,則可以使用迭代算法來細化參數。

相關問題