5

我刚刚开始学习有关 Graphics2D 类的基础知识,到目前为止,我能够绘制不同的对象和实现ActionListener,以便在屏幕上实际移动它们onKeyPress。到目前为止一切顺利,虽然我想做一些更复杂的事情。我想为我的对象提供一条路径,并仅在该特定路径上为其设置动画。

就像,我会在天空上画一条线,一架飞机应该坚持这条线并保持它自己在这条特定的线上飞行。现在有可能吗?

我不需要任何类型的代码,但是很少有不同的方法或想法可以让我开始研究这个。我的想法的可视化阐述如下。

起点 :

在此处输入图像描述

终点:

在此处输入图像描述

现在如上所示,我的黄色框(在未来的平面上)在动画时应该坚持给定的路径(路径灰线)

到目前为止,我的研究,

我已经搜索了我的流行词,例如 java 中的路径,并找到了Path2DGeneralPath,有谁知道我是否可以用它来解决这个问题。

谢谢

4

4 回答 4

2

伟大的 !

它让我想起了我在 IT 领域的第一步。我多么喜欢所有这些简单的数学东西,但它们却让事情在屏幕上移动。:)

你需要的实际上是一个线性插值。还有其他类型的插值,一些 api 为这个概念提供了一个很好的封装,但这里是主要思想,你会经常需要这些东西:

你必须重写你的路径

y = f (x ) 

作为时间的函数:

在时间 0,项目将位于开始位置,在时间 1,它将到达终点。然后根据需要增加时间 (t)(例如,每毫秒 0.001)。

所以这里是一个简单的线性路径的公式:

x = xstart + (xend-xstart) * t
y = ystart + (yend-ystart) * t

当 t 变化时,您的对象只会沿路径线性移动,线性速度将在所有路径上保持不变。例如,你可以想象某种重力吸引,这将通过二次加速度(t^2 而不是 t)来建模......

问候,斯蒂芬

于 2011-08-26T16:51:32.197 回答
1

首先,使从a点移动到b点的能力。这是用简单的代数完成的。

其次,使能够走一条路并将其转化为点。然后当你要做曲线时,你实际上只是沿着曲线从一个点移动到另一个点。

这是最基本的方法,适用于大多数情况。

于 2011-08-26T16:44:59.900 回答
1

您所说的是简单的 2D 图形和精灵。如果这就是您所需要的,那么对于 Java,请查看Java 2D Sprites 如果您更倾向于或最终将使用相机视角并希望从不同的角度查看动画,请使用OpenSource Java 3D.org 中的Java 3D 。无论哪种方式,您想要的是沿一条线简单地平移对象,无论是 2D 还是 3D 都非常简单。

于 2011-08-26T16:46:49.983 回答
1

您可以尝试通过我的开源大学项目 - LANSim的代码。它的代码在代码菜单中可用。它的作用类似于您正在尝试做的事情。

于 2011-08-26T17:21:59.610 回答