制作一个矩形绕圈 - Java / Swing

时间:2013-03-14 06:02:14

标签: java swing animation geometry

我的数学不是那么好所以我在我的一个应用程序中遇到了一些麻烦,我想要做一个矩形来表示车辆而我希望那个车辆/矩形“驱动“围成一圈。想象一下只有一辆车的环形交叉路口,只是在周围盘旋。

如果我能得到一些帮助,那么我将能够在这个例子的基础上进行构建,最重要的是学习。

如果有人可以为我写一个简单的例子,我将不胜感激。没有背景没有图像,只是一个矩形“围绕一圈”。我正在使用java和Swing。

3 个答案:

答案 0 :(得分:2)

抱歉,我不确定是否可以理解你确切需要。如果你需要绘制在圆圈内移动的矩形,你可以使用sin / cos函数。

类似的东西:

double r = 50.0; // radius (it might radius of your circle, but consider dimensions of rectangle to make sure you are drawing inside of circle, e.g. circleRadius - rectangeDimesion / 2.0)
for (int f = 0; f < 360; f++) {
    double x = Math.sin(Math.toRadians((double)f)) * r;
    double y = Math.cos(Math.toRadians((double)f)) * r;
    // draw rectangle on [x, y] coordinates
}

答案 1 :(得分:1)

如果你知道圆的半径,你需要的只是一个三角函数和车辆对圆的角度。你可以看看this简单的介绍,它可以让你开始朝着正确的方向前进。

另一方面,另一种方法是使用Transformation Matrix,其中您从包含两个点(您的X和Y坐标)的矩阵开始,然后将它们转换为新的坐标。 / p>

然后,您可以旋转矩形以模仿车辆转弯。

如果您的数学背景有限,第一个选项可能更容易让您掌握。

答案 2 :(得分:1)

这是一个扩展的评论,而不是一个答案。

我会将问题分成几个更简单的问题,并分别处理每个问题:

  • 使用指定的中心位置和长轴方向绘制矩形。
  • 确定绕原点旋转的物体的中心点和长轴方向。请注意,要使长轴成为切线,需要垂直于穿过中心的半径。
  • 翻译整个系统,使其绕所需的点而不是原点运行。