2011-11-16 17 views
0

落ち込んだオブジェクト(複合型)の回転を設定して、キーが中心点の周りを押すたびに90度回転するようにしようとしています。 java.awt.Pointライブラリを使用して、 "回転の中心"としての私の複合図形の1つを指定してから、以前の位置に.Pointの位置を使用して、新しいxとyの位置を設定したいと考えています。新しい位置の新しい座標を何らかの形で設定します。オブジェクトを中心の周りに90度回転させる方法は?

私はまだプログラミングが非常に新しいです。私は何をする必要があるのか​​という理論を理解することは多くありますが、実際にそれを実装する方法とは本当に混同されます。

誰でも、一般的な例を使用して、コンプを回す方法についてお手伝いできますか?センターの周りの形ですか?

答えて

1

JavaのPoint実装に入ることなく、一般的な概念は非常に簡単です。

まず、シェイプの中心が(0,0)になるようにすべてのシェイプポイントを変換する必要があります。 たとえば、中心(Cx、Cy)とあなたのポイントの1つが(Px、Py)である場合、新しいポイントはNewP =(Px-Cx、Py-Cy)でなければなりません。 すべてのポイントが変換された後、ポイントごとに以下を実行する必要があります。 RotatedP =(-NewPy、NewPx)

が一回転、あなたは自分に戻って指して変換する必要があります(他の回転のためにそれを行う方法を確認するには、以下のリンクを確認してください)あなたは賢明な90 degress時計を回転させるようにしたいと仮定すると、 元の場所: FinalP =(RotatedPx - NewPx、RotatedPy - NewPy)。

いくつかの擬似コード:

Point p; 
Center center; 

Point relativePoint = p - center; 

// For 90deg CW: -y, x 
// For 90deg CC: y, -x 
Point rotatedPoint = new Point(-1 * relativePoint.Y, relativePoint.X); // 90deg CW 
Point finalPoint = rotatedPoint + center; 

ただ、変換および回転について少し読んで、それはあなたのために非常に明確でなければなりません: Rotations - のみ最初の部分(二次元の回転)

+0

を読みますありがとう:)これは働いた! – Susie

関連する問題