我正在尝试编写一种方法,该方法允许我的角斗士在两者之间旋转一个中心点,可以说是相互环绕。下面是我的代码。角斗士变量目标是角斗士类型,设置为轮换中的第二方。center[0] 是 x 位置, center[1] 是 y。
public void rotate(Gladiator a, int angle) {
double x1;
double y1;
double x2;
double y2;
double r;
double midx;
double midy;
int currentAngle2;
int currentAngle;
r = getDistance(a,a.target)/2;
midx = (a.center[0]-a.target.center[0])/2;
midy = (a.center[1]-a.target.center[1])/2;
currentAngle = (int)Math.atan2(a.center[1] - midy, a.center[0] - midx);
currentAngle2 = currentAngle + 180;
if (currentAngle2 > 360) {
currentAngle2 = currentAngle2-360;
}
System.out.println("Current angles = "+currentAngle+","+currentAngle2);
x1 = Math.cos(currentAngle+angle) * r + midx;
y1 = Math.sin(currentAngle+angle) * r + midy;
x2 = Math.cos(currentAngle2+angle) * r + midx;
y2 = Math.sin(currentAngle2+angle) * r + midy;
System.out.println("new coords: "+(int)x1+","+(int)y1+","+(int)x2+","+(int)y2);
a.move((int)x1,(int)y1);
a.target.move((int)x2,(int)y2);
}
这里有什么问题?第一次运行时,它们最终彼此重叠。
编辑:
angle 是请求的旋转量。