2013-03-27 273 views
0

我想通過引用2D視口旋轉3D Cylinder。已知圓柱體的半徑和二維平移,我怎樣才能找出它轉動的角度?將2D視口轉換轉換爲3D旋轉

Illustration of what i want to find out

+0

這將有助於瞭解更多關於您的情況以及您試圖實現的具體內容。目前還不清楚你想如何將旋轉和翻譯相關聯。 – 2013-03-27 17:30:19

+0

@KendallFrey我用插圖編輯了我的文章,希望你明白我的意思。謝謝! – icube 2013-03-27 17:56:46

+0

如果您試圖爲2D-3D映射找到合適的搜索項,則通常的術語是「未投影」,它將2D結構(通常是點光線)逆向散射爲3D光線。 – JerKimball 2013-03-27 22:24:23

回答

1

假設氣缸從A旋轉到B.另外,讓我們假定A是θ度逆時針和B是順時針θ度水平。因此,A和B之間的角度是

A的y座標由r*sin(θ)給出,B的y座標僅爲-r*sin(θ)

因此,2*r*sin(θ) = D(泛距離)

求解θ

θ = asin(D/(2*r)) 

(其中阿辛是反正弦函數)

另一個(可能更魯棒的)的方法是將計算三角形的垂直和底部,然後執行atan2(perp,base)

垂線簡單地爲D/2,而基數爲sqrt(R*R - D*D/4)

+0

您使用的公式不會取決於您使用的[projection](http://en.wikipedia.org/wiki/Graphical_projection)嗎? – 2013-03-27 20:29:57

+0

絕對!好點,@ScottChamberlain。我假設這是一個像這樣的「輪子」小部件:http://android-devblog.blogspot.com/2010/05/wheel-ui-contol.html – 2013-03-27 22:15:23

+0

@RahulBanerjee謝謝!你的配方似乎對我的情況非常有用。我實際上正在做一個觸摸3D旋轉木馬。通過觸摸操作和慣性來實現它。 – icube 2013-03-28 01:52:57