Перевод камеры с радиусом / диаметром вместо x,y,z?
Итак, у меня есть этот пример, как показано ниже, и мне было интересно, возможно ли перевести камеру, изменив радиус и диаметр вместо использования положений x,y,z (вектор). Сейчас я использую куб, но я хочу добавить вторую камеру.
Поскольку я знаю, где находится 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);
}
}
1 ответ
Решение
Использование 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)
- радиус - радиус или евклидово расстояние (прямолинейное расстояние) от точки до начала координат. По умолчанию 1,0.
- фи - полярный угол от оси y (вверх). По умолчанию 0.
- тета - угол экватора вокруг оси y (вверх). По умолчанию 0.
Полюса (фи) находятся на положительной и отрицательной оси у. Экватор (тета) начинается с положительного z.