繁体   English   中英

在Java中绘制连接3个航路点的转弯弧

[英]Draw a turning arc connecting 3 waypoints in Java

假设我从W点开始,一直到A点,最后到达B点。

从W到A和从A到B的直线

相反,我想画一个代表更现实行为的转弯弧,理想情况下受速度和转弯速率的限制。

我一直在寻找这样的示例,例如本文中描述的内容 ,但是正在努力扩展我已阅读的信息。

真实轨迹的转弯弧示例

有谁知道这种行为的示例实现,或者知道有一些示例代码的教程吗? 在游戏AI中寻找似乎很普通,但是我发现的大多数描述都是相当高级的。

我已经用Java标记了此帖子,因为这是我正在工作的解决方案领域,但是使用另一种语言的示例也可能足够。

您可以设计一个数学公式(更难但更有效),也可以考虑这样的事情:

想象一下开车,在直路(W点到A点)之后有一个转弯(在A点)。 在开始转弯之前,您将沿着道路指向速度矢量。 一旦开始转弯,您将获得一个沿转弯(从A点到B点)的(递增)速度矢量和一个沿道路指向的(递减)速度矢量。 您可以通过将两者相加来计算最终的速度向量。 示例算法如下所示:

while(turning){
    straight_vector.magnitude = straight_vector.magnitude - 1;
    turn_vector.magnitude = turn_vector.magnitude + 1;

    resulting_vector = straight_vector + turn_vector; //vector addition

    next_point.x = prev_point.x + resulting_vector.magnitude * Math.cos(resulting_vector.direction);
    next_point.y = prev_point.y + resulting_vector.magnitude * Math.sin(resulting_vector.direction);

    plot(next_point);

    prev_point = next_point;
}

您可以在Java中使用Vector3d类来表示向量。

从图2的几何学上讲,我将从W点向西行驶,直到到达阴影区域,在该区域中矢量R向南。 直到那一点才是一条直线。 然后,您需要画一条弧线将您带到直线的终点,到达(0,0)点。 您可以在此处使用信息绘制圆弧。 您可以使用此处的信息设置完整的JavaFX应用程序来绘制直线和圆弧等。 您必须弄清楚坐标才能使用这些方法对这些方法进行参数化,从这里开始,它就是数学。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM