gpt4 book ai didi

ruby - 计算负斜率线的角度

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:42 27 4
gpt4 key购买 nike

我正在创建 map ,并计算线的角度以确定道路的方向 (NSEW)。

下面是我用来计算直线角度的公式:

Math.tan(斜率)/(Math::PI/180)

这一直有效,直到我的线的斜率为负。如何正确计算负斜率线的角度?

更新要计算线的角度,我现在使用的是

Math.atan2(delta_y, delta_x) / (Math::PI/180)

问题似乎源于我选择线的起点/终点。取决于我选择哪一个,有些是正确的,有些不是,反之亦然。这是我创建的 map 的图像:

enter image description here

我只是想计算与边界框相交的线的角度。其中一个点总是在线与边界框相交的地方,另一个点总是在那之后。

我的原点 (0,0) 在左上角。

最佳答案

我能够通过执行以下操作解决此问题。请记住,这是一个倒轴,原点 (0, 0) 位于左上角。

def angle(point1, point2)
return 90 if vertical?(point1, point2)
return 0 if horizontal?(point1, point2)
point1, point2 = [point1, point2].sort_by(&:x)
delta_x = point1.x - point2.x
delta_y = point1.y - point2.y

if point1.y > point2.y # inverted axis/origin
Geometry.to_degrees(Math.atan(delta_y / delta_x)).abs
else
# Add 90 degrees when angle is in 3rd quadrant
Geometry.to_degrees(Math.atan(delta_x / delta_y)).abs + 90
end
end

关于ruby - 计算负斜率线的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42210889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com