计算原点与 x,y,z 坐标之间的 θ 和 ø 角
Calculate θ and ø angles between origin and x,y,z coordinate
我正在使用 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 是已知的,用于计算轨道的新 x、y、z 坐标3D主题。
上面的效果很好,但我也想反过来
如果我只有一个 x,y,z 点,我该如何计算 theta 和 phi,这一切都在与原点 (0,0,0)?
的关系
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(θ);
您似乎将 θ
和 φ
换了方向(这只是一种符号选择)
我正在使用 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 是已知的,用于计算轨道的新 x、y、z 坐标3D主题。
上面的效果很好,但我也想反过来
如果我只有一个 x,y,z 点,我该如何计算 theta 和 phi,这一切都在与原点 (0,0,0)?
的关系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(θ);
您似乎将 θ
和 φ
换了方向(这只是一种符号选择)