Я пытаюсь определить угол в градусах прямой из двух точек, я сталкивался со многими решениями онлайн, но ни одно из них не помогло мне, рассмотрим этот фрагмент кода
import matplotlib.pyplot as plt
data = np.array([7405.,7447.4,7433.99,7410.,7443.15,7429.4,7590.03,7550.,7566.32,7619.62,7549.71,7551.8,7530,7522.99,7499.75,7453.99,7542.16,7564.,7552.77,7552])
y = [7606.672474,7570.240928]
plt.plot(data)
plt.plot([6,17], y)
plt.show()
Целевая линия равна y
, она должна быть около -5 градусов, просто взглянув на нее. Похоже, что большинство онлайн-решений предполагают, что мы можем найти угол, выполнив
degree = np.math.atan2(y[-1] - y[0], x[-1] - x[0])
degree = np.degrees(degree)
. Я упустил другие значения y только для первой и последней точки для простоты, поэтому часть x[-1] - x[0]
здесь будет равна 11 = 17-6, то есть длина линии y по оси x, это то, что предлагают большинство онлайн-решений, однако все подходы не смогли получить правильный угол для этого, я должен отметить, что во время моих испытаний некоторые подходы Казалось, что дает правильный угол для данного блока данных, например, при полном сбое в другом блоке данных, таком как
data = [52.3384984,53.04757978,52.04276249,51.77348257,49.93056673,52.24062341,55.74022485,60.77761392,60.89290148,60.1995072,60.40524964,59.00590344,59.67589831,56.49266698,49.02464746,51.53876823,57.77368203,59.48092106,56.63155446,56.0648491 ]
y = [51.337288,50.331895]
plt.plot(data)
plt.plot([3,15], y)
plt.show()
Я также пытался мин-макс нормализовать данные, но безуспешно, поэтому, учитывая у нас есть первая и последняя точка линии и ее длина, как мы можем или можем определить ее угол в градусах?