Исправление углов между двумя точками в Python - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть приложение с кодом Python, которое записывает активность мыши (точки, записанные с регулярными интервалами, timeWait), а затем обрабатывает данные для вывода угла, на который перемещена мышь (с осью Y равной 0), и скорости, с которой она переехал в.

В данный момент мои выходные данные показывают восток как 0 °, юг как -90 °, запад как 180 ° и север как 90 °, что не является моим ожидаемым результатом. Я не уверен, что в тригонометрии или в других вычислениях что-то не так, поэтому любая помощь по любой части этого будет принята с благодарностью.

i = 0
angles = []
speeds = []

#positions is an array of coordinates taken 0.1 seconds apart from each other

for point in positions:
    if i is not 0:
        pointY = 2500 - point[1]  #invert position of X and assign variable
        deltaX = point[0]-pointXP # difference is current pointX minus PointXPast
        deltaY = pointY-pointYP
        dist = math.sqrt(deltaX**2 + deltaY**2) #distance is the hypotenuse
        if dist is 0: #if the mouse has not moved
            continue
        speed = dist/timeWait # speed is distance/time
        angle = math.degrees(math.atan2(deltaY,deltaX)) #angle using Tan

        angles.append(angle)
        speeds.append(speed)

        pointXP = point[0]
        pointYP = pointY

    else:  #this is only for the first iteration
        i = 1 
        pointXP = point[0]
        pointYP = 2500 - point[1]
        continue

Опять же, любая помощь приветствуется, особенно если учесть, что мои углы были выключены. Спасибо.

1 Ответ

0 голосов
/ 01 апреля 2019

Вы используете math.atan2 для вычисления угла.

Как указано в документах ,

Вектор на плоскости от начала координат до точки (x, y) составляет этот угол с положительной осью X.

Если вы хотите, чтобы угол был относительно положительной оси Y, вы можете вычесть 90 градусов из угла. (т.е. angles.append(angle - 90))

...