作爲圖中的點,'X'可以映射兩個「Y」值,'Y'可以映射兩個「X」值。如何用下圖設置的點擬合曲線
當擬合這些點的曲線,它應該保證的一階導數和
二階導數可以計算出來。
編輯:兩個弗洛里斯和煎餅給了一個正確的答案,謝謝你的兩個。
作爲圖中的點,'X'可以映射兩個「Y」值,'Y'可以映射兩個「X」值。如何用下圖設置的點擬合曲線
當擬合這些點的曲線,它應該保證的一階導數和
二階導數可以計算出來。
編輯:兩個弗洛里斯和煎餅給了一個正確的答案,謝謝你的兩個。
與其嵌合「Y」爲「x」的功能,則需要分別適合:
其中't'是樣條(或其他曲線擬合,例如多項式)的固有座標。
我在圖片中假設你知道點的順序 - 它不僅僅是未分類點的混亂?因此,首先,您可以計算每個連續點之間的距離,並使用累積距離作爲't'參數。然後將樣條曲線擬合爲作爲t的函數的'x'和'y'座標。
謝謝你的回答! – tenos
在你的點簇中間選擇一個點 - 可能是重心。畫出一條從這個「原點」到第一個點的虛線。到點r=sqrt((x-x0)^2+(y-y0)^2);
的距離和角度theta=atan2((y-y0),(x-x0));
。針對所有點計算r
和theta
;如果theta包裝,添加2 * pi使其連續。現在,您可以擬合theta的函數r。最後,你可以對許多θ值進行插值並計算相應的x=r*cos(theta);
和y=r*sin(theta);
應該這樣做。
明白了,謝謝! – tenos
您也可以在這裏看到圖:https://skydrive.live.com/redir?resid=6878FDE2E655535!150&authkey=!AIKOYRVv1Pm-Z7c – tenos
您需要一個「樣條擬合」 - 如果您有樣條工具箱,那就是簡單。如果你不這樣做,你需要閱讀「C中的數字食譜」並自己做一些編碼。 – Floris
我在matlab中使用過樣條工具箱。但是對於圖中設置的點來說,它不起作用。 matlab中的「樣條擬合」的條件是這些點的'X'值不能相同。 @Floris – tenos