Math 将对象放置在球体上的已知点上

Math 将对象放置在球体上的已知点上,math,three.js,trigonometry,Math,Three.js,Trigonometry,我在Three.js中的场景中有一个0,0,0的球体几何体 在这个球体边缘的已知点,我需要放置更小的球体 我知道放置这些物体所需的θ和φ位置,但我无法计算较小球体的x、y和z位置 我可以把它放在θ上的任何一点,通过设置向量,使其位于较大球体的φ起点,然后旋转它,但我无法控制它在θ上的位置 这是我迄今为止尝试过的两种技巧,也许我离得很近,但我可能离得很远 const pos = new THREE.Vector3(-SHOP_TARGET_DISTANCE, 0, 0); pos.applyAxi

我在Three.js中的场景中有一个0,0,0的球体几何体

在这个球体边缘的已知点,我需要放置更小的球体

我知道放置这些物体所需的θ和φ位置,但我无法计算较小球体的x、y和z位置

我可以把它放在θ上的任何一点,通过设置向量,使其位于较大球体的φ起点,然后旋转它,但我无法控制它在θ上的位置

这是我迄今为止尝试过的两种技巧,也许我离得很近,但我可能离得很远

const pos = new THREE.Vector3(-SHOP_TARGET_DISTANCE, 0, 0);
pos.applyAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI / 2);
pos.applyAxisAngle(new THREE.Vector3(0, 0, 1), Math.PI / 2);


使用球形坐标获得x、y、z位置使用
var spherical=new THREE.spherical()//创建一次。然后
spherical.set(半径、φ、θ);object.position.SetFromSpheremic(球形)使用球形坐标获得x、y、z位置使用
var spheremic=new THREE.spheremic()//创建一次。然后
spherical.set(半径、φ、θ);object.position.SetFromSpheremic(球形)
const phi = Math.PI * 1;
const theta = 0;
const x = (SHOP_TARGET_DISTANCE * Math.sin(phi) * Math.cos(theta));
const y = (SHOP_TARGET_DISTANCE * Math.sin(phi) * Math.sin(theta));
const z = SHOP_TARGET_DISTANCE * Math.cos(phi);
const pos = new THREE.Vector3(x, y, z);