java - 如何让一个圆圈不停地移动?

标签 java 2d physics geometry

Circle c1 = new Circle(20);
c1.relocate(200,200); //Set X and Y

我想做的是让圆围绕一个看不见的旋转中心做圆周运动。如何才能实现这一目标?

谢谢。

编辑:我的三角学技能非常差。

最佳答案

您可以使用极坐标对圆上的点使用方程:

circle_x = rot_center_x + radius * cos(angle)
circle_y = rot_center_y + radius * sin(angle)

使用它,您将获得新圆圈的中心点。然后你只需要增加(逆时针)或减少(顺时针)你的角度,空白屏幕并再次绘制圆圈。

三角函数的角度以弧度为单位,整圆有 2*pi 弧度。因此,如果您想要角度为零度,请输入 0。对于 90 度,输入 pi/2.0。 对于任何其他角度,请使用以下转换公式:

angle_rad = pi/180.0 * angle_degrees

如果你想为旋转计时,你必须选择旋转角速度 omega。

omega = 2*pi*f

其中 f 是旋转频率,例如 f=1Hz 表示您的物体将在一秒后旋转一整圈。欧米茄以每秒弧度为单位,因此如果您有欧米茄 10 弧度,那么您的物体将在一秒内旋转 10 弧度,或在 10 秒内旋转 100 弧度。

现在您必须确定添加每个动画帧需要多少角度:

ang_inc = omega / fps_avg;
ang += ang_inc;

其中 fps_avg 是每秒测量的平均帧数。

关于java - 如何让一个圆圈不停地移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21629128/

相关文章:

java - 一维数组 -> 二维数组

java - 瓦片 map 中的命中检测

algorithm - 舍入多边形

javascript - 如何提高动画的移动性能?

java - 如何跟踪 Windows 服务器文件夹并在文件夹中添加任何新文件时发送通知

java - Kafka 生产者在发送到通过 AdminClient createTopics 方法创建的主题时抛出 "Received unknown topic or partition error"

java - 为什么 HashMap 方法返回空对象引用?

java - “this”关键字没有访问它应该访问的预期变量。为什么?

java - LWJGL:将 "curve"应用于景观

javascript - 了解 EaselJS 的动画/物理/数学实现