Попытка использовать формулу угла вектора из другого ответа stackoverflow, но не удается получить ее для угла печати - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь использовать код из этого вопроса SO (https://stackoverflow.com/a/13849249), чтобы вычислить угол между двумя векторами. Однако я не могу получить угол для печати / показа

Я пробовал печатать (angle_between) как из отступа, так и без отступа. Я также попытался вернуть (angle_between) из отступа и без отступа позиции. Я, однако, не включил то, что я, хотя, было только объяснением для кода.

import numpy as np

 def unit_vector(vector):
    np.linalg.norm(vector)

def angle_between(p_Sun, p_Titan):

   v1_u = unit_vector(p_Sun)
   v2_u = unit_vector(p_Titan)
   return np.arccos(np.clip(np.dot(v1_u, v2_u), -1.0, 1.0))
print(angle_between(p_Sun, p_Titan))

Я ожидаю, что он напечатает угол в радианах, однако вместо этого я получаю ошибку.

"TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'"

Когда я вычисляю угол другим способом (из того же поста просто другой комментарий, https://stackoverflow.com/a/2827475), я могу использовать print() function и получить угол. Однако мне этот метод не нравится, так как не удается для некоторых пар векторов.

1 Ответ

0 голосов
/ 18 июня 2019

Функция unit_vector должна быть записана как:

def unit_vector(vector):    
    return vector / np.linalg.norm(vector)

В настоящее время ваша функция ничего не возвращает, поэтому по умолчанию она возвращает None. Вот почему вы получаете ошибку о умножении NoneTypes. Кроме того, он рассчитывает единственное значение, норма. Для единичного вектора вы должны разделить текущий вектор на норму. Надеюсь, это поможет!

...