Javascript 使用半径/直径而不是x、y、z平移摄影机?
我有一个如下所示的例子,我想知道是否可以通过改变半径和直径而不是使用x,y,z位置(向量)来平移相机。现在我用的是一个立方体,但我想基本上再加一个摄像头 既然我知道0,0,0(原点)在哪里,有没有办法通过设置直径半径或其他需要的方式来平移立方体,并将其锁定在原点上 我用来移动立方体的东西(Three.js) 我想要达到的目标: 使用和: 球形(半径:浮点,φ:浮点,θ:浮点)Javascript 使用半径/直径而不是x、y、z平移摄影机?,javascript,math,three.js,translate,radius,Javascript,Math,Three.js,Translate,Radius,我有一个如下所示的例子,我想知道是否可以通过改变半径和直径而不是使用x,y,z位置(向量)来平移相机。现在我用的是一个立方体,但我想基本上再加一个摄像头 既然我知道0,0,0(原点)在哪里,有没有办法通过设置直径半径或其他需要的方式来平移立方体,并将其锁定在原点上 我用来移动立方体的东西(Three.js) 我想要达到的目标: 使用和: 球形(半径:浮点,φ:浮点,θ:浮点) 半径-从点到原点的半径或欧几里德距离(直线距离)。默认值为1.0 φ-与y(向上)轴的极角。默认值为0 θ-绕y(向
- 半径-从点到原点的半径或欧几里德距离(直线距离)。默认值为1.0
- φ-与y(向上)轴的极角。默认值为0
- θ-绕y(向上)轴的赤道角。默认值为0
此外,Y轴上的该值不应低于0。在这种情况下最好省去它,你说的“改变半径和直径”是什么意思?我已经更新了我的问题。但这可能是因为罪恶。不是数学专家,你似乎想根据极地坐标更新位置。凯,我明天会看一看,我会告诉你的。非常感谢你的回答。如果我使用
THREE.sphereal(摄影机半径,θ,0)
,这对我来说非常有用,如图所示。但不是在我想要的轴线上。请注意,第三个滑块现在什么也不做,我希望立方体绕Y轴(围绕房屋)旋转。@LoizosVasileioutheta
,最后一个参数将绕Y轴(向上)旋转。
var posX,posY,posZ;
var scene, camera, render;
var cubeMesh,cube_Geometry, cube_Material;
class myWorld{
/* ... Setup World ... */
//excecute cube();
/* ... Set/Get positions (xyz) ... */
cube(){
cube_Geometry = new THREE.BoxGeometry(20, 20, 20);
cube_Material = new THREE.MeshNormalMaterial();
cube_Mesh = new THREE.Mesh(cube_Geometry, cube_Material);
cube_Mesh.position.set(0, 100, 100);
scene.add(cube_Mesh);
}
animate(){ //loop function
//THREE.Mesh.position.set (Three.js)
cube_Mesh.position.set(posX, posY, posZ);
}
}
var r = 10;
var theta = 310 * (Math.PI / 180); /// 310 degree to radians
var sphericalPos = new THREE.Spherical(r, 0, theta);
cube_Mesh.position.setFromSpherical(sphericalPos);
// or just do cube_Mesh.position.setFromSphericalCoords(radius, phi, theta)