将2D视口转换转换为3D旋转

时间:2013-03-27 17:25:27

标签: c# wpf math 3d geometry

我正在尝试参考2D视口旋转3D圆柱体。通过圆柱的半径和已知的2D平移,我怎样才能找到它转动的角度?

Illustration of what i want to find out

1 个答案:

答案 0 :(得分:1)

让我们假设圆柱体从A旋转到B.此外,我们假设A是逆时针的θ度,B是从水平方向顺时针θ度。因此,A和B之间的角度为

A的y坐标由r*sin(θ)给出,B的y坐标仅为-r*sin(θ)

因此,2*r*sin(θ) = D(平移距离)

解决θ

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

(其中asin是反正弦函数)

另一种(可能更强大)方法是计算三角形的垂直和底部,然后进行atan2(perp,base)

垂直线只是D/2,而基线是sqrt(R*R - D*D/4)