?? rotategizmo.java
字號:
//===========================================================================//=-------------------------------------------------------------------------=//= Module history: =//= - March 16 2006 - Oscar Chavarro: Original base version =//===========================================================================package vsdk.toolkit.gui;import java.awt.event.MouseEvent;import java.awt.event.MouseWheelEvent;import java.awt.event.KeyEvent;import vsdk.toolkit.common.Matrix4x4;import vsdk.toolkit.common.Vector3D;public class RotateGizmo extends Gizmo { private Matrix4x4 T; public void setTransformationMatrix(Matrix4x4 T) { this.T = T; } public Matrix4x4 getTransformationMatrix() { return T; } public boolean processMouseEventAwt(MouseEvent mouseEvent) { return false; } public boolean processKeyPressedEventAwt(KeyEvent keyEvent) { char unicode_id; int keycode; double deltaMov = Math.toRadians(1.0); boolean updateNeeded = false; unicode_id = keyEvent.getKeyChar(); keycode = keyEvent.getKeyCode(); Matrix4x4 delta; Vector3D up, front, left; delta = new Matrix4x4(); //up = new Vector3D(T.M[0][2], T.M[1][2], T.M[2][2]); up = new Vector3D(0, 0, 1); up.normalize(); //front = new Vector3D(T.M[0][0], T.M[1][0], T.M[2][0]); front = new Vector3D(0, 1, 0); front.normalize(); //left = new Vector3D(T.M[0][1], T.M[1][1], T.M[2][1]); left = new Vector3D(1, 0, 0); left.normalize(); if ( unicode_id != keyEvent.CHAR_UNDEFINED ) { switch ( unicode_id ) { // Position case 'x': delta.axisRotation(-deltaMov, left.x, left.y, left.z); updateNeeded = true; break; case 'X': delta.axisRotation(deltaMov, left.x, left.y, left.z); updateNeeded = true; break; case 'y': delta.axisRotation(-deltaMov, front.x, front.y, front.z); updateNeeded = true; break; case 'Y': delta.axisRotation(deltaMov, front.x, front.y, front.z); updateNeeded = true; break; case 'z': delta.axisRotation(-deltaMov, up.x, up.y, up.z); updateNeeded = true; break; case 'Z': delta.axisRotation(deltaMov, up.x, up.y, up.z); updateNeeded = true; break; } } T = T.multiply(delta); return updateNeeded; } public boolean processKeyReleasedEventAwt(KeyEvent mouseEvent) { return false; } public boolean processMousePressedEventAwt(MouseEvent e) { return false; } public boolean processMouseReleasedEventAwt(MouseEvent e) { return false; } public boolean processMouseClickedEventAwt(MouseEvent e) { return false; } public boolean processMouseMovedEventAwt(MouseEvent e) { return false; } public boolean processMouseDraggedEventAwt(MouseEvent e) { return false; } public boolean processMouseWheelEventAwt(MouseWheelEvent e) { return false; }}//===========================================================================//= EOF =//===========================================================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -