2012-12-06 38 views
1

根据Java3D中鼠标的移动,尝试旋转立方体。无论旋转立方体,我都希望当我向上拖动光标时,立方体以相同的方向旋转。这适用于所有可能的动作。Java中旋转对象3d

我该怎么办?我猜它必须放置在相机坐标...

这里是我的功能:

public void objectRotate(TransformGroup objectInInteraction, double dh, 
     double dp, double dr) { 

    Transform3D oldT3D = new Transform3D(); 
    objectInInteraction.getTransform(oldT3D);  

    Transform3D tx = new Transform3D(); 
    Transform3D ty = new Transform3D(); 
    Transform3D tz = new Transform3D(); 

    Transform3D tc = new Transform3D(); 
    //camera.getTransform(tc); 

    double x = 0, y = 0, z = 0; 
    x = Math.PI * dh/180; 
    y = Math.PI * dp/180; 
    z = Math.PI * dr/180; 

    tx.rotX(x); 
    tc.mul(tx); 

    ty.rotY(y); 
    tc.mul(ty); 

    tz.rotZ(z);  
    tc.mul(tz); 

    oldT3D.mul(tc); 


    objectInInteraction.setTransform(oldT3D); 
} 

DH是左向右运动,DP,上下

谢谢!

回答

2

为我的作品...

public void objectRotate(TransformGroup objectInInteraction, double dh, 
    double dp, double dr) 
{ 

    // Transform3D oldT3D = new Transform3D(); 
    // objectInInteraction.getTransform(oldT3D);  

    Transform3D tx = new Transform3D(); 
    Transform3D ty = new Transform3D(); 
    Transform3D tz = new Transform3D(); 

    Transform3D tc = new Transform3D(); 
    //camera.getTransform(tc); 

    double x = 0, y = 0, z = 0; 
    x = Math.PI * dh/180; 
    y = Math.PI * dp/180; 
    z = Math.PI * dr/180; 

    tx.rotX(x); 
    tc.mul(tx); 

    ty.rotY(y); 
    tc.mul(ty); 

    tz.rotZ(z);  
    tc.mul(tz); 

    // oldT3D.mul(tc); 

    objectInInteraction.setTransform(tc); 
} 

;-)