1

オブジェクトを回転させて指定された点に向かわせるメソッドを見つけようとしていますが、取得した数値はあまり意味がなく、数学メソッドが何を返すのか理解できないと思います。

これが私のコードです:

public void rotate(double x, double y) {
    rotateRight(Math.toDegrees(Math.atan2((x - getX()), (y - getY()))));
}

xとyは指定されたポイントであり、getX()とgetY()はオブジェクトの現在のポイントであるため、オブジェクトが指定されたポイントに面するために右に曲がる必要がある度数を見つけようとしています。

誰かがこれを行うための信頼できる方法をお勧めできますか?

4

4 に答える 4

1

あなたの命名は少し紛らわしいので、私はここでいくつかの仮定をしています。「オブジェクト」は原点(0,0)にあり、getX()とgetY()はオブジェクトが現在向いているポイントを返し、オブジェクトを新しいポイントに向けます。

ここからは、単純な三角法と算術です。まず、現在の角度を把握することです。

current_angle=atan(getX()/getY())

あなたの新しい角度は

new_angle=atan(newX/newY)

回転する必要のある角度は当然ですが、

rotation_angle=new_angle - current_angle
于 2011-08-02T01:29:11.450 に答える
1

使用しているユニットによって異なります。個人的には、ラジアンで、スニペットにこの関数があります。

public static double getAngleBetween(double x1, double y1, double x2, double y2)
{
      return(Math.atan2(y1-y2, x1-x2));
}

これにより、任意の2つの抽象的な点の間の角度(ラジアン)が得られます。

于 2011-08-02T03:16:35.780 に答える
1

それを適切に行うには、行列変換が必要です。

于 2011-08-02T01:22:27.627 に答える
0

によって返される角度Math.atan2()は絶対です。それを相対回転に変えるには、最初に現在の角度が何であるかを知る必要があり、次に2つを引く必要があります。

于 2011-08-02T01:26:28.130 に答える