2013-03-27 238 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