当前位置 : 主页 > 手机开发 > 无线 >

算法 – 如何在限制转弯的同时沿基本方向在笛卡尔空间内移动?

来源:互联网 收集:自由互联 发布时间:2021-06-10
给定是笛卡尔坐标系,从位置A(X / Y)和到位置B(X / Y).我想从A移动到B.但是,我只能移动N,NE,E,SE,S,SW,W,NW八个方向. 我知道我可以计算这些方向的“最佳”,从当前位置A通过点积乘以轴的单位矢
给定是笛卡尔坐标系,从位置A(X / Y)和到位置B(X / Y).我想从A移动到B.但是,我只能移动N,NE,E,SE,S,SW,W,NW八个方向.

我知道我可以计算这些方向的“最佳”,从当前位置A通过点积乘以轴的单位矢量(八个方向),其中最大的点积是要采取的方向.但是这种方法导致两个方向之间出现某种“振荡”,如果A正好在这两个方向之间.

所以我现在正在寻找一种算法来解决从A到B只有一个或最大的问题.两个方向使用.当然我现在忽略了任何障碍,所以理论上我总是可以从A到B获得最多两个不同的方向.我可以用一堆if语句解决这个问题,但我更喜欢更优雅的解决方案……

我希望这有点可以理解:)

提前感谢任何想法!

亲切的问候,马蒂亚斯

最简单的解决方案是沿“对角线”方向前进,直到与目标位于同一行/列,然后使用水平/垂直方向.

换一种说法:

>检查您是否水平/垂直对齐.如果是这样,朝那个方向移动并完成.>否则,使用您拥有的方法找到最接近的对角线方向.>沿对角线移动,直到水平或垂直对齐.然后向那个方向移动并完成.

网友评论