Math 求最短角路径

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

我需要得到两个角度之间的最短方向。比如,如果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
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