我在Three.js
中的场景中有一个0,0,0的球体几何体在这个球体边缘的已知点上,我需要放置较小的球体。
我知道放置这些物体时需要的theta和phi位置,但我无法计算较小球体的x,y和z位置。
我可以将它放在theta上的任何一点,方法是将矢量设置在较大球体的phi起点并旋转它,但我无法控制它在theta上的位置。
这是迄今为止我尝试过的两种技术,也许我很接近,但我可以在数英里之外。
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);
和
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);