私は、私のグラディエーターが2つの中心点を回転させ、いわば互いに円を描くことができるようにするメソッドを作成しようとしています. 以下は私のコードです。グラディエーター変数ターゲットはグラディエーター タイプであり、ローテーションの第 2 パーティに設定されます。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 は要求された回転量です。