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

时间:2016-12-06 21:59:57

标签: math three.js trigonometry

我在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);

0 个答案:

没有答案