【发布时间】:2015-05-22 09:20:10
【问题描述】:
我正在尝试创建一个方法,该方法围绕 Java 中的另一个点旋转我想要制作的 Asteroids 克隆。现在我有 2 个 Point 实例,称为 point 和 center。我的方法的代码是这样的:
public void Rotate(double angle){
double a;
int x,y,distance;
distance=30;
a=Math.atan2((int)(point.getX()-center.getX()),(int)(point.getY()-center.getY()));
a=a+angle;
x=(int)(Math.cos(a)*distance);
y=(int)(Math.sin(a)*distance);
point.setLocation(x,y);
}
我的游戏循环的代码是这样的:
while (true){
game.Rotate(10);
game.repaint();
Thread.sleep(10);
}
问题是点和中心之间的距离增加或减少,我不知道为什么。有人可以告诉我什么问题吗?
编辑[问题已解决]: 对于任何对此感兴趣的人,我是如何使用从以下答案中获得的帮助解决问题的: 一、Rotate函数:
public void Rotate(double angle){
double x,y;
double distance=60;
x=Math.round(center.getX() + (Math.cos(Math.toRadians(angle))*distance));
y=Math.round(center.getY() + (Math.sin(Math.toRadians(angle))*distance));
point.setLocation(x,y);
}
然后我又做了一个叫move的方法:
public void move(){
angle+=2;
if(angle>360){
angle=0;
}
Rotate(angle);
}
这是游戏循环代码:
while(true){
main.move();
main.repaint();
Thread.sleep(10);
}
再次感谢您的支持。
【问题讨论】:
-
y=(int)(Math.sin(a)*distance); -
感谢您的回复,但即使这样它仍然无法正常工作。
-
不确定this 是否有帮助
-
这实际上解决了我所有的问题。非常感谢。
标签: java rotation geometry game-loop