如何在java3D中使用MouseListener和MouseMotionListener来旋转3D对象?

时间:2012-09-19 13:32:59

标签: java java-3d

我在java swing中制作桌面应用程序。我使用PointArray []从我的2D图像制作3D图像。现在我想使用MouseListener和MouseMotionListener旋转图像。我使用MouseRotate对象旋转myImage,但它不适用于此,MouseRotate旋转图像与原点(0,0,0)。但我想用图像的中心点旋转图像。表示使用中心点而非原点旋转图像。那么,我该怎么做呢?

1 个答案:

答案 0 :(得分: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);
}

如果需要,您可以设置不同的旋转量,但这应该给你一个想法