Перевод камеры с радиусом / диаметром вместо x, y, z? - PullRequest
0 голосов
/ 01 февраля 2019

Итак, у меня есть этот пример, как показано ниже, и мне было интересно, возможно ли перевести камеру, изменив радиус и диаметр вместо использования положений x, y, z (вектор).Сейчас я использую куб, но я хочу добавить вторую камеру.

enter image description here

Так как я знаю, где 0,0,0 (начало координат), есть ли способ перевести куб, установив диаметр в диаметре или что-то еще, а также зафиксировать его в начале координат?

Что я использую для перемещения куба (Three.js)

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);
    }
}

Чего я хочу достичь: enter image description here

1 Ответ

0 голосов
/ 01 февраля 2019

Использование Spherical и setFromSpherical:

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)

Сферический (радиус: Float, phi: Float, theta: Float)

  • radius - радиус или евклидово расстояние (расстояние по прямой) от точки до начала координат.По умолчанию установлено значение 1.0.
  • phi - полярный угол от оси y (вверх).По умолчанию 0.
  • тета - угол экватора вокруг оси y (вверх).По умолчанию 0.

Полюса (фи) находятся на положительной и отрицательной оси у.Экватор (тэта) начинается с положительного z.

...