简体   繁体   中英

How to use MouseListener and MouseMotionListener in java3D to rotate 3D object?

I m making desktop app in java swing. i made 3D image from my 2D image using PointArray[]. now i want to rotate image using MouseListener and MouseMotionListener.I used MouseRotate object to rotate myImage, but it not works well for that, MouseRotate rotate image with origin(0,0,0). but i want to rotate image using center point of image. means rotate image using center point not origin point. So, How can i do that?

Hmm, it's hard to tell without code, but I think you can just set up a transformation matrix and rotate it with that. Assuming the image is facing the front of the screen, you can try something like this:

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);
}

You can set up the rotation amount differently if you want, but this should give you an idea

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM