1

私はJavaスイングでデスクトップアプリを作っています。PointArray[] を使用して 2D 画像から 3D 画像を作成しました。ここで、MouseListener と MouseMotionListener を使用して画像を回転させたいと思います。MouseRotate オブジェクトを使用して myImage を回転させましたが、うまく機能しません。しかし、画像の中心点を使用して画像を回転させたいです。原点ではなく中心点を使用して画像を回転することを意味します。それで、どうすればそれができますか?

4

1 に答える 1

0

うーん、コードがないとわかりにくいですが、変換マトリックスを設定して回転させるだけでいいと思います。画像が画面の正面を向いていると仮定すると、次のようなことを試すことができます。

public void mouseDragged(MouseEvent e)
{
    int dx = e.getX() - x; //x should be a global variable
    int dy = e.getY() - y; //same applies here
    x = e.getX(); //to set x for the next update loop
    y = e.getY();
    double rotation = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
    Transform3D transform = new Transform3D();
    Matrix3d matrix = new Matrix3d();
    transformG.getTransform(transform); //assuming the TransformGroup your image is in is transformG
    transform.getRotationScale(matrix);
    transform.rotZ(rotation);
    transformG.setTransform(transform);
}

必要に応じて回転量を別の方法で設定できますが、これでアイデアが得られるはずです

于 2013-08-01T19:18:56.410 に答える