从球坐标旋转体

时间:2011-03-11 21:11:31

标签: graphics 3d geometry

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

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

修改

我想我明白了。

旋转在与摄像机相同方向的第3轴上,一旦计算出来,就会对摄像机坐标进行2D变换。这意味着比在3轴(ok两轴和一个倾斜)中旋转需要应用总共4个正弦/余弦计算和4次乘法。如果有人提出更好的事情,可以自由发表回答。

2 个答案:

答案 0 :(得分: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 φ)

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

答案 1 :(得分:5)

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

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

我没有将回复点发布在评论中,但认为它会有用。