从球坐标旋转体

Luk*_*hne 4 3d graphics geometry

是否可以旋转其顶点在球坐标中定义的主体.目前我正在用VHDL进行拼贴项目,关于旋转十二面体和呈现VGA.

我应用针孔相机模型方程,只需要两个正弦/余弦计算和每个顶点两次乘法.我只是考虑在两个角度上使用3个步骤围绕第3轴旋转,但我无法找出正确的方程式,即使这是可能的.

编辑

我想我明白了.

在计算它们时,在与摄像机方向相同的第3轴上旋转只是摄像机坐标的2D变换.这意味着比在3轴(ok两轴和一个倾斜)中旋转需要应用总共4个正弦/余弦计算和4次乘法.如果有人提出更好的东西,可以自由发布回答.

Blu*_*eft 8

您可以通过改变θ围绕y轴旋转,并通过改变φ绕z轴旋转.但是,围绕x轴旋转会更加困难.

一种简单的方法是将所有内容转换为catesian坐标,执行旋转并转换回来.

(x,y,z)(球 - 笛)的方程是

x = r sin ? cos ?
y = r sin ? sin ?
z = r cos ?

围绕x轴旋转(x,y,z)到新点(x',y',z')角度α的等式是

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 ?)

我不知道是否有办法进一步减少,但它应该有效.


cos*_*sis 5

希望这将有助于将来的某个人,但上述答案中存在一个小错误.它应该是:

φ'= tan-1(y'/ x')= tan-1(tanφcosα - cotanθsinαsecφ)

我没有将回复点发表在评论中,但认为它会很有用.