Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用半径/直径而不是x、y、z平移摄影机?_Javascript_Math_Three.js_Translate_Radius - Fatal编程技术网

Javascript 使用半径/直径而不是x、y、z平移摄影机?

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(向

我有一个如下所示的例子,我想知道是否可以通过改变半径和直径而不是使用x,y,z位置(向量)来平移相机。现在我用的是一个立方体,但我想基本上再加一个摄像头

既然我知道0,0,0(原点)在哪里,有没有办法通过设置直径半径或其他需要的方式来平移立方体,并将其锁定在原点上

我用来移动立方体的东西(Three.js)

我想要达到的目标: 使用和:

球形(半径:浮点,φ:浮点,θ:浮点)

  • 半径-从点到原点的半径或欧几里德距离(直线距离)。默认值为1.0
  • φ-与y(向上)轴的极角。默认值为0
  • θ-绕y(向上)轴的赤道角。默认值为0
极点(φ)位于正y轴和负y轴上。赤道(θ)从正z开始


此外,Y轴上的该值不应低于0。在这种情况下最好省去它,你说的“改变半径和直径”是什么意思?我已经更新了我的问题。但这可能是因为罪恶。不是数学专家,你似乎想根据极地坐标更新位置。凯,我明天会看一看,我会告诉你的。非常感谢你的回答。如果我使用
THREE.sphereal(摄影机半径,θ,0)
,这对我来说非常有用,如图所示。但不是在我想要的轴线上。请注意,第三个滑块现在什么也不做,我希望立方体绕Y轴(围绕房屋)旋转。@LoizosVasileiou
theta
,最后一个参数将绕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)