是否可以旋转其顶点以球坐标定义的主体。 目前我正在用VHDL进行拼贴项目,关于旋转十二面体和呈现VGA。
我应用了pinhole camera model方程式,只需要两个正弦/余弦计算和每个顶点两次乘法。 我只是考虑在两个角度上使用3个步骤围绕第3轴旋转,但我无法找出正确的方程式,即使这是可能的。
修改
我想我明白了。
旋转在与摄像机相同方向的第3轴上,一旦计算出来,就会对摄像机坐标进行2D变换。这意味着比在3轴(ok两轴和一个倾斜)中旋转需要应用总共4个正弦/余弦计算和4次乘法。如果有人提出更好的事情,可以自由发表回答。
答案 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φ)
我没有将回复点发布在评论中,但认为它会有用。