gpt4 book ai didi

java - 使汽车(JPanel)在 Swing 中以平滑的曲线转弯

转载 作者:行者123 更新时间:2023-11-29 05:52:00 26 4
gpt4 key购买 nike

目前我有一个简单的动画,其中一辆汽车 (JPanel) 接近一个路口,等待交通灯变绿并继续直行。但是,我现在要进行下一步,我希望汽车以平滑的曲线向右转 90 度以转入垂直道路。我粗略地勾画出了它的外观,曲线代表了我希望汽车转向的方式:

Turning Car

我不太确定该怎么做。我想我需要代表某种贝塞尔曲线?还是矩阵变换来旋转汽车?

有人可以就在 Swing 中执行此操作的最佳方法提供建议。

最佳答案

如果您不熟悉 Java 图形,我推荐 this tutorial .如果我要对您正在做的事情进行编码,我会看到两个选择。

首先也是最简单的,您可以将转弯建模为“首先直行,然后沿着以我正在转弯的拐角为中心的圆的边缘转 90º,然后再次直行”。最简单的方法是定义一个 JPanel 来绘制你的 Image(是的,一个 JPanel;如果你不绘制它们的背景,你可以在上面分层 JPanels彼此 - 它们将以正确的顺序绘制;使背景 JPanel 不透明,以便在绘制下一帧之前清理),并给它一个 AffineTransform使图像显示在您想要的位置。您需要调整变换中的增量,使速度保持恒定;反复试验,或一些几何学(半径 R 的 90º 表示 R*pi/2.0 沿弯曲路径的总行程),将帮助您成功。

困难的方法是将汽车的路线视为任意Shape (例如,您可以使用贝塞尔曲线定义),从中提取一个展平的 PathIterator,沿着该迭代器以等距跳跃前进,并从沿着曲线的位置计算您需要的旋转,任何给定点的航向(您可以通过获取 2 个连续样本并根据这些样本对齐汽车来估计航向)。这比使用上述方法更难,但允许您的汽车遵循任意复杂的路径。

关于java - 使汽车(JPanel)在 Swing 中以平滑的曲线转弯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com