3

形状を 90 度回転させようとしています。

私の形状は、(x、y)の点と(point1、point2)の線がほとんどないクラスによって保持され、すべての線が一緒になって形状を構成します。

実際に形状を 90 度 (またはその他の角度) 回転させるには、次の式に従って形状のポイントを変換する必要があります。

(x,y) -> (  x*cos(90)+y*sin(90) , -x*sin(90)+y*cos(90)  )  

上記を達成するために、次のことを試しました(形状のコンポーネントである各ポイントで操作しました)-

float x, y;
// get the current point location ...
x = currentPoint.x;
y = currentPoint.y; 
// create the cos , sin
float cosA = (float) Math.cos(Math.toRadians(90));
float sinA = (float) Math.sin(Math.toRadians(90));
currentPoint.x = (int) (x * cosA + y * sinA);
currentPoint.y = (int) (-x * sinA + y * cosA);

しかし、この回転の後に形状を描くと、非常に奇妙な結果になります。

この実装で何か問題を検出できますか?

4

1 に答える 1

1

JPanel を拡張し、このメソッドを実装してクラスを使用する必要があります。JPanel コントロールを回転させるコードは次のとおりです。

@Override
public void paintComponent(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    int w2 = getWidth() / 2;
    int h2 = getHeight() / 2;
    g2d.rotate(-Math.PI / 2, w2, h2);
    super.paintComponent(g);
}

JPanel の代わりにこのカスタム クラスを使用します。

于 2013-04-30T12:31:41.450 に答える