нахождение угла поворота от начала координат до вектора в трехмерном пространстве - PullRequest
0 голосов
/ 18 марта 2020

у меня есть вектор в трехмерном пространстве.

есть ли способ получить угол поворота от начала координат до этого вектора на каждой оси.

, то есть если вектор находится на x = 6, y = -10, z = 20

от начала координат x = 0, y = 0, z = 0 на оси x, y и z под каким углом вектор.

пытается выяснить это когда-нибудь в три js. любая помощь высоко ценится

1 Ответ

0 голосов
/ 18 марта 2020

Угол 2 векторов можно найти по следующей формуле: v1•v2 = |v1||v2| cos(angle) Чтобы найти угол, вам нужно acos скалярное произведение ваших 2 векторов.

Согласно документации, в Three JS Вы можете найти точечное произведение следующим образом: dotproductV1V2 = V1.dot(V2)

Затем acos Результат, чтобы найти угол: Math.acos(dotproductV1V2)

Редактировать:

Пример получения угла каждого компонента вектора:

var V1x = new THREE.Vector3(1, 0, 0)
var V1y = new THREE.Vector3(0, 1, 0)
var V1z = new THREE.Vector3(0, 0, 1)

var V2 = new THREE.Vector3(6, -10, 20)

var V2xz = new THREE.Vector3(V2.x, 0, V2.z)
var V2xy = new THREE.Vector3(V2.x, V2.y, 0)

//angle in radian between origin X axis and X axis of V2
var angle_V1V2x = Math.acos(V1x.dot(V2xz.normalize()))

//angle in radian between origin Y axis and Y axis of V2
var angle_V1V2y = Math.acos(V1y.dot(V2xy.normalize()))

//angle in radian between origin Z axis and Z axis of V2
var angle_V1V2z = Math.acos(V1z.dot(V2xz.normalize()))
...