Угол между двумя последовательными 3d векторами - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь вычислить угол между двумя трехмерными векторами в python, в котором начало одного вектора является концом первого. Например, вектор A начинается в начале координат и заканчивается в координатах (300,0,0), а вектор B начинается в (300,0,0) и заканчивается в (460,0, -120). Единственный способ узнать угол y - это перевести начало координат в (300,0,0) и вычислить его, используя приведенный ниже код.

u=np.array([-300,0,0]) 
v=np.array([160,0,-120])
c = dot(u,v)/norm(u)/norm(v) 
angle = arccos(clip(c, -1, 1))

Я хотел бы знать, есть ли другой способ сделай это.

1 Ответ

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

Вы можете использовать vg. Он работает поверх numpy. Просто установите его через: pip install vg.

import numpy as np 
import vg

# get the points
origin = np.array([0, 0, 0])
p1 = np.array([300,0,0])
p2 = np.array([460,0,-120])

# define the vectors from points
u = p1 - origin
v = p1 - p2

# calculate angle between two vectors
angle = vg.angle(u,v)

print(angle)

Это распечатывает:

>> 143.13010235415598
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...