Math 求最短角路径
我需要得到两个角度之间的最短方向。比如,如果Ang1是5,Ang2是355,那么我希望它返回,我需要从Ang1中减去,得到Ang2 我有一些代码可以告诉我最短的距离,但不能告诉我最短的方向 函数getShortAngle(a1、a2) 或在Smallbasic中:Math 求最短角路径,math,geometry,shortest-path,angle,smallbasic,Math,Geometry,Shortest Path,Angle,Smallbasic,我需要得到两个角度之间的最短方向。比如,如果Ang1是5,Ang2是355,那么我希望它返回,我需要从Ang1中减去,得到Ang2 我有一些代码可以告诉我最短的距离,但不能告诉我最短的方向 函数getShortAngle(a1、a2) 或在Smallbasic中: Sub GetShortestpath angle = Math.Remainder((Math.abs(a1 - a2)),360) if angle > 180 Then angle = 360 - angle EndIf
Sub GetShortestpath
angle = Math.Remainder((Math.abs(a1 - a2)),360)
if angle > 180 Then
angle = 360 - angle
EndIf
Return = angle
EndSub
谢谢你的帮助 当然,这只是根据您选择的角度设置方向 如果您正在计算从
a1
到a2
的角度/方向,则以下伪代码应能满足您的需要:
# precondition: [a1,a2] >= 0
angle = ((a2 % 360) - (a1 % 360) + 360) % 360
direction = CLOCKWISE
if angle > 180:
angle = 360 - angle
direction = ANTICLOCKWISE
如果差值正好为180°,则倾向于顺时针方向
请原谅获取角度的复杂表达式,它只是为了确保获得值0到359,而不考虑带负数的模运算符的相对位置和工作方式
如果您使前提条件更加严格,确保a1
和a2
限制在0..359
范围内,则可以大大简化它:
# precondition: 0 <= [a1,a2] <= 359
angle = (a2 - a1 + 360) % 360
#前提条件:0应该这样做!谢谢
# precondition: 0 <= [a1,a2] <= 359
angle = (a2 - a1 + 360) % 360