Рассчитать угол поворота векторного питона - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь найти поворот angle 2D vector. Я нашел несколько вопросов, которые используют 3D vectors. Следующий df представляет один vector с первым row в качестве источника.

d = ({      
    'X' : [10,12.5,17,20,16,14,13,8,7],                 
    'Y' : [10,12,13,8,6,7,8,8,9],                             
     })

df = pd.DataFrame(data = d)

Я могу повернуть вектор, используя следующее уравнение:

angle = x
theta = (x/180) * numpy.pi

rotMatrix = numpy.array([[numpy.cos(theta), -numpy.sin(theta)], 
                         [numpy.sin(theta),  numpy.cos(theta)]])

Но я не уверен, как мне найти angle в каждый момент времени, используя координаты, перечисленные выше. Извиняюсь за использование df. Это повторяет мой фактический dataset

1 Ответ

0 голосов
/ 08 ноября 2018

Сначала вы должны переместить начало координат на (0, 0), затем вы можете использовать np.arctan2(), который вычисляет угол и правильно определяет квадрант. Результат уже в радианах (тета), поэтому вам не нужно указывать его в градусах (альфа).

d = {'X' : [10,12.5,17,20,16,14,13,8,7],                
     'Y' : [10.,12,13,8,6,7,8,8,9]}
df = pd.DataFrame(data = d)

# move the origin
x = df["X"] - df["X"][0]
y = df["Y"] - df["Y"][0]

df["theta"] = np.arctan2(y, x)
df["aplha"] = np.degrees(df["theta"])
df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...