由两个角度定义的三维向量

27

基本上我正在寻找一种使用两个角度计算矢量的x、y和z分量的方法,如下图所示:enter image description here其中alpha是2D角度,beta是y角度。 到目前为止,我一直在使用以下公式来计算2D向量:

x = Math.sin(alpha);
z = Math.cos(alpha);
在搜索了StackExchange数学论坛后,我发现这个公式并不能正确地工作:
 x = Math.sin(alpha)*Math.cos(beta);
 z = Math.sin(alpha)*Math.sin(beta);
 y = Math.cos(beta);

注意:当接近β角度90度时,x和z分量应该逐渐趋近于零。感谢您的所有帮助。

2个回答

38

适当的公式应该是:

x = Math.cos(alpha) * Math.cos(beta);
z = Math.sin(alpha) * Math.cos(beta);
y = Math.sin(beta);

2
谢谢,这很有效并且更有意义了。(我不得不交换x和z,但那只是我的环境设置问题) - Moff Kalast
@MoffKalast 在垂直平面上的两个角足以定义三维空间中的一个向量。你可以使用前两个角度计算在第三个平面(在这个例子中是XY平面)上的投影角度。 - andrewb
有没有想法如何计算它,如果使用的x、y、z方向是相对于模型平面而不是相对于模型所在的坐标系? - user10004359
我尝试用4D做了一下,得到了以下结果: a = Math.cos(gamma); x = Math.cos(alpha)*Math.cos(beta)*a; z = Math.sin(alpha)*Math.cos(beta)*a; y = Math.sin(beta)*a; w = Math.sin(gamma); 我的结果有多接近呢? - Mike Mestnik
给定 alpha 和 beta,红线和绿线之间的角度是多少? - Przemyslaw Remin

0
那个公式只是从球坐标 (r, theta, phi) -> (x, y, z) 转换为笛卡尔坐标系而来的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接