首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >求最短角路径

求最短角路径
EN

Stack Overflow用户
提问于 2014-12-05 03:37:13
回答 1查看 872关注 0票数 1

我需要两个角度之间的最短方向。比如,如果Ang1是5,Ang2是355,那么我想要它返回,我需要从Ang1中减去它才能到达Ang2。

我有一些代码可以告诉我最短的距离,但不是最短的方向。

函数getShortAngle(a1,a2)

代码语言:javascript
运行
复制
{
var angle = (Math.abs(a1 - a2))%360;


if(angle > 180)

    angle = 360 - angle;

return angle;
};

trace(getShortAngle(360, 720));

或者在Smallbasic:

代码语言:javascript
运行
复制
Sub GetShortestpath
angle = Math.Remainder((Math.abs(a1 - a2)),360)
if angle > 180 Then
angle = 360 - angle
EndIf
Return = angle
EndSub

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 03:40:31

当然,这只是根据你选择的角度来确定方向。

如果您正在计算从a1a2的角度/方向,下面的伪代码应该给您所需要的:

代码语言:javascript
运行
复制
# precondition: [a1,a2] >= 0
angle = ((a2 % 360) - (a1 % 360) + 360) % 360
direction = CLOCKWISE
if angle > 180:
    angle = 360 - angle
    direction = ANTICLOCKWISE

当差值正好为180°时,它更倾向于顺时针方向。

请原谅这个得到角度的复杂表达式,它只是为了确保你得到一个0到359的值,而不管你的模运算符与负数的相对位置和工作方式如何。

如果将前提条件限制得更严格,确保a1a2限制在0..359范围内,就可以大大简化它。

代码语言:javascript
运行
复制
# precondition: 0 <= [a1,a2] <= 359
angle = (a2 - a1 + 360) % 360
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27308321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档