2014-11-17 62 views
2

我正在編程一個遊戲,並且非常感謝您的幫助。我會直截了當地指出:我將使用什麼樣的公式來將有限線上的點轉換爲原點(0,0)?Line to Circle轉換

例子:

 Matrix A contains points: (0, 2), (1, 2), (2, 2), (3, 2) 
    Matrix T is the standard transformation matrix (an equation is equally as helpful) 
    Matrix B is the transformation where AT = B so that B contains points: 
           (0, 2), (2, 0), (0, -2), (-2, 0) 
    Where vector (0, 2) is the eigenvector. 

我一直有問題是轉型依賴於點(也許它們轉換到正常的正n邊形poylgon的點?)的數量,並與我有限知識,我不知道如何解決這個問題。提前感謝您至少閱讀此問題。

編輯:我想說,我不確定是否存在一種變換,因爲第一個點的值和最後一個點的值右側被省略,因此數據丟失。

回答

2

矩陣變換是線性的(或者在齊次座標中是線性的)。這意味着,例如,

((p1 + p2)/2)M = ((p1 M) + (p2 M))/2 
在其他字

p1的和p2中間點被轉化成的p1p2變換的中間。

如果你有4個共線點,沒有矩陣可以將它們映射到非共線點。

如果您正在尋找一個通用映射,則需要更復雜的公式。一個易於實現(對於小尺寸的輸入)並具有非常好的屬性radial basis function (RBF) interpolator

在這種情況下,您可以指定一個點的任意列表P[i]並指定它們各自的目的地Q[i]。你最終會得到一個平滑的函數T,該函數將任何點映射到另一個點,並且針對所有指定點的T(P[i]) = Q[i]

如果源點不是一般的,而是在一個規則的網格上,那麼一個簡單的三次樣條網可以爲您提供一個很好的平滑插值器(顯然這是大多數圖像變形軟件中使用的)。