我正在使用three.js进行小型3D POC项目。以下代码段计算原点(0,0,0)周围轨道中3D对象的新x,y,z位置:
x = rho * Math.cos(theta) * Math.sin(phi);
y = rho * Math.sin(theta) * Math.sin(phi);
z = rho * Math.cos(phi);
在上面的示例中, theta 和 phi 是已知的,用于计算轨道3D主体的新x,y,z坐标。
以上效果很好,但我也想反过来。
我如何计算 theta 和 phi ,如果我只有一个x,y,z点,这一切与原点有关(0, 0,0)?
答案 0 :(得分:1)
IIRC
r = Math.sqrt(x*x + y*y + z*z);
θ = Math.acos(z/r);
φ = Math.atan2(y, x);
x = r * Math.sin(θ) * Math.cos(φ);
y = r * Math.sin(θ) * Math.sin(φ);
z = r * Math.cos(θ);
您似乎将θ
和φ
换了相反的方式(这只是一种符号选择)