python - 计算线穿过两点的角度 - 如何正确缩放?
问题描述
我有两个点,想以度数计算与这些点交叉的线的角度。
我这样计算角度:
import numpy as np
p1 = [0, 0.004583285714285714]
p2 = [1, 0.004588714285714285]
x1 = p1[0]
y1 = p1[1]
x2 = p2[0]
y2 = p2[1]
angle = np.rad2deg(np.arctan2(y1 - y2, x2 - x1))
print(angle)
正如预期的那样,角度是一个非常小的负数(相对于 X 平面的小向下倾斜):
-0.00031103423163937605
如果我绘制这个,你会明白我的意思:
plt.ylim([0,1]) # making y axis range the same as X (a full unit)
plt.plot([x1, x2], [y1, y2])
很明显,这条线的角度是一个非常小的数字,因为 Y 值非常小。
我知道这个图中最低的 y 数是0.00458
,最高的是0.00459
。
我无法想出正确缩放此角度的方法,以便获得此角度:
接近-35度左右(视觉上)。
如果图表绘制的 Y 轴仅介于上述最小值和最大值之间,我如何获得一个人会看到的角度?
当然,所有图都只是为了说明 - 我试图只计算给定两个点的原始角度数以及 Y 轴的最小值和最大值。
解决方案
解决了它,结果非常简单,我不确定为什么我遇到了麻烦(或者为什么人们似乎不理解这个问题 ¯\ (ツ) /¯ )。
我正在寻找的角度可以通过
yRange = yMaxValue - yMininumValue
scaledY1 = y1 / yRange
scaledY2 = y2 / yRange
angle = np.rad2deg(np.arctan2(scaledY1 - scaledY2, x2 - x1))
对于问题中发布的值,结果是-28.495638618242538
推荐阅读
- regex - 如何在 Perl 中优化以下代码?
- javascript - Angular js选择父子值
- messaging - Group WhatsApp API:发送群组消息而不在群组中列出
- kubernetes - 无法访问集群外的 Kubernetes 服务
- django - 为什么在Firefox中给出错误:/server/admin/上没有这样的表:django_session,在chrome中它可以工作
- ssl - 如何使浏览器信任本地网络 wss:// 连接?
- ubuntu - 是否可以在快照应用程序上运行 cpulimit?
- paypal - 如何在 node.js 中的 paypal 中创建可变的定期付款
- excel - vba excel用变量查找
- rust - 如何获取函数的返回地址?