2012-09-19 2 views
1

Я делаю настольное приложение в java swing. Я сделал 3D-изображение из своего 2D-изображения с помощью PointArray []. теперь я хочу повернуть изображение, используя MouseListener и MouseMotionListener. Я использовал объект MouseRotate для вращения myImage, но он не подходит для этого, MouseRotate поворачивает изображение с исходным кодом (0,0,0). но я хочу повернуть изображение, используя центральную точку изображения. означает поворот изображения, используя центральную точку, а не точку начала. Итак, как я могу это сделать?Как использовать MouseListener и MouseMotionListener в java3D для поворота 3D-объекта?

ответ

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

Вы можете настроить количество вращения по-другому, если вы хотите, но это должно дать вам представление о том

Смежные вопросы