如何让物体做圆周运动 - Java
How to make an object move in a circle - Java
首先我想说我是编程新手,非常感谢非常简单、详细且易于阅读的代码和答案!
我正在做一个 Java Graphics Applet 程序,它将从 Java 的 Draw 方法围绕程序的中心移动一个简单的球体。 最终目标是有一种方法,我可以在一个方法中指定半径、将要移动的球体的大小以及它的移动速度。
对于任何能够帮助我解决问题的人来说,一个完整的程序答案(从所有导入到最后一个“}”)会很棒,所以我可以 copy/paste 它和修补用它来适合我的程序。
如果可能,我希望不要使用任何第 3 方 jar 等
这是满足这些要求所需的代码示例。这将显示一个 'orbits' 一个点的小球体。我正在为此解决数学问题,但您需要自己使用图形 API 来实现它(因为我没有从您的 post 那里获得足够的细节)。
每次调用此方法时,都会将参数 timeInterval
递增 1。注意:这肯定不是 最佳 方法,但它符合您对一切都在一种方法中的要求。
public void drawOrbitingSphere(int timeInterval) {
// let's just choose a bunch of values that we'll need
double orbitX = 100; /* x-coordinate in orbit's center */
double orbitY = 100; /* y-coordinate in orbit's center */
double orbitRadius = 50;
double orbitSpeed = Math.PI / 16;
double sphereRadius = 10;
/*
* based on the current time interval, we'll calculate where the sphere
* is at on its orbit
*/
double radian = orbitSpeed * timeInterval;
double drawX = orbitX + orbitRadius * Math.cos(radian);
double drawY = orbitY + orbitRadius * Math.sin(radian);
// use whichever Draw method is provided by your API
drawSphere(drawX, drawY, sphereRadius);
}
首先我想说我是编程新手,非常感谢非常简单、详细且易于阅读的代码和答案!
我正在做一个 Java Graphics Applet 程序,它将从 Java 的 Draw 方法围绕程序的中心移动一个简单的球体。 最终目标是有一种方法,我可以在一个方法中指定半径、将要移动的球体的大小以及它的移动速度。
对于任何能够帮助我解决问题的人来说,一个完整的程序答案(从所有导入到最后一个“}”)会很棒,所以我可以 copy/paste 它和修补用它来适合我的程序。
如果可能,我希望不要使用任何第 3 方 jar 等
这是满足这些要求所需的代码示例。这将显示一个 'orbits' 一个点的小球体。我正在为此解决数学问题,但您需要自己使用图形 API 来实现它(因为我没有从您的 post 那里获得足够的细节)。
每次调用此方法时,都会将参数 timeInterval
递增 1。注意:这肯定不是 最佳 方法,但它符合您对一切都在一种方法中的要求。
public void drawOrbitingSphere(int timeInterval) {
// let's just choose a bunch of values that we'll need
double orbitX = 100; /* x-coordinate in orbit's center */
double orbitY = 100; /* y-coordinate in orbit's center */
double orbitRadius = 50;
double orbitSpeed = Math.PI / 16;
double sphereRadius = 10;
/*
* based on the current time interval, we'll calculate where the sphere
* is at on its orbit
*/
double radian = orbitSpeed * timeInterval;
double drawX = orbitX + orbitRadius * Math.cos(radian);
double drawY = orbitY + orbitRadius * Math.sin(radian);
// use whichever Draw method is provided by your API
drawSphere(drawX, drawY, sphereRadius);
}