2010-03-16 93 views
8

我有兩個形狀是通道的橫截面。我想計算兩個定義點之間的中間點的橫截面。 在這種情況下使用什麼最簡單(相對簡單?)算法?二維插值算法

P.S .:我遇到了像自然鄰居和泊松這些看起來很複雜的算法。我正在尋找一個可以快速實施的簡單解決方案。

編輯:我從標題刪除單詞「最簡單」,因爲它可能是誤導性的

+1

橫截面是否總是凸多邊形?或者他們可以凹嗎? – 2010-03-16 09:14:19

+0

橫截面可以由凸面和凹面兩部分組成。 – Gayan 2010-03-16 09:23:16

+0

我想知道是否有高性能標記給出的解決方案 – Gayan 2010-03-16 11:30:51

回答

3

這是簡單的:

  1. 在每個橫截面繪製在均勻時間間隔的N個點沿着邊界橫截面。
  2. 從橫截面1上的第n個點到橫截面2上的第n個點繪製直線。
  3. 在舊橫截面之間的所需距離處取下新的橫截面。

簡單仍然:無需修改現有的橫截面的

  1. 使用一個。

這個第二個建議可能太簡單了,但我敢打賭,沒有人建議更簡單的建議!

編輯以下OP的評論:(太多了再評論)

嗯,你沒問一個簡單的方法!我不確定我是否看到與第一種方法相同的問題。如果橫截面不是太奇怪(如果它們是凸多邊形,則可能是最好的),並且您不會做任何奇怪的事情,比如將一個橫截面的左側映射到另一個橫截面的右側(從而迫使大量交叉線)那麼該方法應該產生某種明智的橫截面。如果您建議使用三角形和矩形,假設三角形坐在其底部,頂部有一個頂點。將該地圖指向矩形的左上角,然後圍繞連接相應點的兩個橫截面的邊界以相同方向(順時針或逆時針)繼續。我沒有看到任何交叉線,並且我在兩個交叉部分之間的任何距離都能看到明確的形狀。

+0

第二個肯定太簡單:) 第一個算法是依賴於形狀的周長,並在某些情況下會失敗s.a.從一個矩形變形爲一個三角形。兩個橫截面上的點不會重疊正確 – Gayan 2010-03-16 08:32:17

+0

明白了。在提出以前的評論時,我誤解了第一種方法。謝謝。 – Gayan 2010-03-16 09:19:35

+0

+ 1 - 第一個解決方案看起來是正確的。請注意,均勻間隔的間隔是不必要的(並且通常是不可能的);你只需要在兩者上選擇一個相應的點(例如頂部中心),然後繞過兩個形狀,在另一個缺失的地方添加頂點。例如,矩形1x2矩形的頂點可能在1/6,2/6,4/6和5/6處;等邊三角形可能在1/3 = 2/6和2/3 = 4/6處具有它們,所以它需要在1/6和5/6的周圍(即第一邊和最後邊的中點)。 – 2010-03-16 15:00:37

1

請注意,高性能標記的答案有些含糊不清,您可能需要解決並將定義其方法輸出的質量。最重要的一點是,當你在兩個橫斷面上繪製點時,你認爲它們之間有什麼樣的對應關係,也就是說,如果你這樣做的話,建議使用高性能標記,那麼標記點的順序就變得很重要。

我建議同時通過兩個橫截面旋轉(正交)平面,然後在一個橫截面上與該平面相交的一組點與一個橫截面上與該平面相交的一組點相匹配。假設這些集合中的點數沒有限制,但它肯定會降低原始情況下通信問題的複雜性。

1

這是另一個嘗試解決問題的方法,我認爲這是一個更好的嘗試。

鑑於兩個橫截面C_1C_2

將每個C_i與座標系(x,y)使得它們位於相對的方式是有意義的全局參考幀。將每個C_i分成上下曲線U_iL_i。這個想法是,你會想要連續變形曲線U_1U_2L_1L_2。 (請注意,如果您願意,可以擴展此方法以將每個C_i分割成m個曲線。)

執行此操作的方法如下。對於每個T_i = U_i, or L_i樣本點n,並確定插值多項式P{T_i}(x)。正如下面適當指出的那樣,插值多項式特別是在端點處易受振盪影響。取而代之的是內插多項式,可以使用最穩定的最小二乘擬合多項式。然後定義多項式P{U_1}(x) = a_0 + a_1 * x + ... + a_n * x^n的變形P{U_2}(x) = b_0 + b_1 * x + ... + b_n * x^n作爲Q{P{U_1},P{U_2}}(x, t) = (t * a_0 + (1 - t) b_0) + ... + (t * a_n + (1-t) * b_n) * x^n其中變形Q之上0<=t<=1其中t定義定義在該點處的變形在(即,在t=0我們在U_2t=1我們在U_1和在每個其它t我們處於兩個連續的變形。) Q{P{L_1},P{L_2}}(x, t)完全相同。這兩個變形構成了兩個截面之間的連續表示,您可以在任何t處進行取樣。

注意,所有這些確實是在對兩個橫截面的插值多項​​式的係數進行線性插值。還要注意,在分割橫截面時,您應該將約束條件放在相匹配的端點上,否則在變形中可能會出現「孔」。

我希望清楚。

編輯:解決了插值多項式中的振盪問題。

+0

插值多項式對於高n - 見http://en.wikipedia.org/wiki/Runge%27s_phenomenon – 2010-03-16 16:44:09

+0

是的,這是正確的,但是如果你將你的橫截面分成足夠多的子曲線,*我認爲*你基本上得到樣條插值(如果你選擇n = 3)。但是,我認爲需要分成多少個子曲線是關鍵點,因爲它將決定振盪。 – ldog 2010-03-16 16:47:32

+0

嘿,我想這是一個意見:P – ldog 2010-03-16 16:53:02