2010-02-19 46 views
1

我想編寫一個程序,讓我通過拖動它的頂點來任意扭曲紋理多邊形。假設新多邊形本身不相交,我希望紋理流暢地變形並且沒有重疊。我還應該能夠用新的形狀重複這個過程,並且損失量最小。如何隨意扭曲紋理多邊形?

有沒有這樣做的算法?

+0

這是用於實時應用還是較慢的技術也適合?對多邊形中的點數有任何限制?它保證凸? – tfinniga 2010-02-19 18:12:38

+0

較慢的技術很好。點數沒有限制,儘管它不會太高。凹面多邊形是允許和預期的。 – Archagon 2010-02-19 19:57:32

+0

另外,它不一定是實際的紋理。它可能只是多邊形內的多個連接點,儘管總體思路是相同的。 – Archagon 2010-02-19 20:10:39

回答

0

我能想到的最簡單的方法是對輸入多邊形進行三角測量(使用耳廓修剪方法或類似的方法),然後移動這些點。然後,您可以使用從原始多邊形到新空間的重心映射。

如果您正在尋找更強大的功能,您可以查看平均值座標。

1

這聽起來像你可能想在Schwarz-Christoffel mapping變化。這是一種保形映射,可以用來將多邊形與一個更簡單的區域(如磁盤)進行翹曲;儘管我沒有實現它,但顯然它在計算上易於處理。

對於您的應用程序,您可以設置從原始多邊形到簡單區域的映射,並計算修改後的多邊形的反向映射;結合這兩個應該給你一個從原始到修改的多邊形的很好的保形映射。

保形映射很好,很流暢,但它們有時可能以不直觀的方式表現;我可以想象一個動畫版本可能會產生一些有趣的「滑稽」效果。保形映射將保持多邊形內部的局部角度;這意味着非常靠近修改頂點的尺寸失真可能很嚴重。

1

在過去的一二十年裏,人們一直致力於解決這個問題,並且最先進的技術水平不斷提高(但數學也越來越難)。一個開始的好地方(以及我停下來的地方)是工作http://www.cs.technion.ac.il/~weber/Publications/Complex-Coordinates/

閱讀那裏的紙張,並查閱參考文獻中的論文。其中一個應該給你一個你願意實現的算法。