根据球坐标旋转的物体

问题描述 投票:4回答:2

是否可以旋转其顶点定义为球坐标的物体。目前,我正在VHDL中进行拼贴项目,并且涉及旋转十二面体并通过VGA呈现。

我应用了pinhole camera model方程,只需要两个sin / cos计算和每个顶点两个乘法。我只是在考虑绕3轴在两个角度上使用3步旋转,但是即使有可能,我也无法找出合适的方程。

编辑

我想我明白了。

在与摄影机相同方向上的第三轴上旋转只是摄影机坐标的2D变换。这意味着,与在3个轴上旋转(2个轴和1个倾斜度)相比,您总共需要进行4次sin / cos计算和4次乘法。如果有人提出更好的建议,请随意发表答案。

graphics 3d geometry
2个回答
8
投票

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

一种简单的方法是将所有内容都转换为直角坐标,执行旋转,然后再转换回去。

[x,y,z)(球面到笛卡尔的方程为]

x = r sinθcosφy = r sinθsinφz = r cosθ

[x,y,z)绕x轴以角度α旋转到新点(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φ)

我不知道是否有办法进一步减少该损失,但应该可以。


5
投票

希望这对将来的人会有所帮助,但以上答案有一个小错误。应该是:

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

我没有代表点将其张贴在评论中,但认为这会很有用。

© www.soinside.com 2019 - 2024. All rights reserved.