2011-03-11 163 views
3

是否可以旋轉其頂點以球面座標定義的身體? 目前我正在做VHDL的拼貼項目,是關於旋轉十二面體和呈現VGA。從球座標旋轉身體

我申請了pinhole camera model等式,並且只需要兩次sin/cos計算和兩個每頂點乘法。 我只是想考慮繞着第三軸旋轉三個角度,但是我無法找出合適的方程,即使這是可能的。

編輯

我想我得到了它。

旋轉到與攝像頭相同方向的第3個軸,只要計算出相機座標的二維變換即可。這意味着比3軸旋轉(確定兩軸和一個傾角),您需要總共應用4次sin/cos計算和4次乘法。如果有人提出更好的建議,可以自由發表答案。

回答

8

您可以通過改變θ圍繞y軸旋轉,並通過改變φ圍繞z軸旋轉。儘管圍繞X軸旋轉有點困難。

一個簡單的方法是將所有東西都轉換爲catesian座標,執行旋轉並轉換回來。

爲方程(X,Y,Z)(球形到笛卡爾)是

 
x = r sin θ cos φ 
y = r sin θ sin φ 
z = r cos θ 

用於旋轉(X,Y,Z)到新的點(X方程 'Y', Z')繞x軸以角度α是

 
x' = x 
    = r sin θ cos φ 
y' = y cos α - z sin α 
    = (r sin θ sin φ) cos α - (r cos θ) sin α 
z' = y sin α + z cos α 
    = (r sin θ sin φ) sin α + (r cos θ) cos α 

爲(R,θ,φ)(笛卡爾到球形)是

 
r' = sqrt(x'2 + y'2 + z'2) 
    = r 
θ' = cos-1(z'/r') 
    = cos-1(sin θ sin φ sin α + cos θ cos α) 
φ' = tan-1(y'/x') 
    = tan-1(tan φ cos α - cotan θ sin α sec φ) 

我不知道的方程如果有一種方法來進一步減少,但它應該工作。

+0

我剛剛發佈我的解決方案。在你的情況下,有5次乘法,3次sin/cos(3次角),1次acos和1次atan函數繞3次斧旋轉,在我的解決方案中,我只加了2次sin/cos和2次乘法。問題也在VHDL中實現atan和acos函數。 – 2011-03-12 11:09:35

+0

@ralu:是的,只要使用第二組2D旋轉方程(忽略第一個和第三個方程)就可以工作,如果您認爲相機總是*定位並定向在x軸上。 – 2011-03-12 17:55:48

+0

實際上,只能通過更改φ才能繞z軸旋轉。這取決於你當前的(θ,φ)。這是有道理的,你必須轉換爲笛卡爾座標來做一個關於笛卡爾座標軸的旋轉 - 從某種意義上講,笛卡爾座標軸「不在那裏」 - 你不能通過簡單的加法「沿着x軸行進」在球座標 - 爲什麼你應該能夠圍繞它旋轉? – bobobobo 2012-02-24 19:29:43

5

希望這會對未來的人有所幫助,但上述答案存在一個小錯誤。它應該是:

φ」 = TAN-1(Y '/ X') = TAN-1(φ黃褐色COSα - 科坦θ罪α秒φ)

我沒有代表指出要在評論中發佈這一點,但認爲它會有用。

+0

感謝您分享此更新。 – 2011-09-08 12:21:44

+1

我將您的更新作爲修改應用於答案。我希望你是對的,因爲我沒有驗證它:) – leemes 2012-07-17 00:52:37

+1

我再次檢查它自己,並有另一個人在我發佈之前進行驗證。另外,我在工作中使用它,所以我最好是正確的。 =) – cosmosis 2012-07-17 01:18:19