?? translategizmo.java
字號:
r.setPosition(eleP); } break; case Y_AXIS_ELEMENT: if ( !(orthogonalCamera && jPar) ) { // Basic model r.setGeometry(arrowModel); if ( currentSelection == Y_AXIS_GROUP || currentSelection == XY_PLANE_GROUP || currentSelection == YZ_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(green); } // Rotation subR.axisRotation(Math.toRadians(90.0), -1, 0, 0); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(0, 0, scale*0.2*ARROW_LENGHT); eleP = eleR.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case Z_AXIS_ELEMENT: if ( !(orthogonalCamera && kPar) ) { // Basic model r.setGeometry(arrowModel); if ( currentSelection == Z_AXIS_GROUP || currentSelection == YZ_PLANE_GROUP || currentSelection == XZ_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(blue); } // Rotation subR = new Matrix4x4(); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(0, 0, scale*0.2*ARROW_LENGHT); eleP = eleR.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case XYY_SEGMENT_ELEMENT: if ( !(orthogonalCamera && (iPar || jPar)) ) { // Basic model r.setGeometry(cylinderModel); if ( currentSelection == XY_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(green); } // Rotation subR = new Matrix4x4(); subR.axisRotation(Math.toRadians(90.0), 0, 1, 0); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(0, scale*SEGMENT_LENGHT, 0); eleP = eleR.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case XYX_SEGMENT_ELEMENT: if ( !(orthogonalCamera && (iPar || jPar)) ) { // Basic model r.setGeometry(cylinderModel); if ( currentSelection == XY_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(red); } // Rotation subR = new Matrix4x4(); subR.axisRotation(Math.toRadians(90.0), -1, 0, 0); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(scale*SEGMENT_LENGHT, 0, 0); eleP = eleR.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case YZZ_SEGMENT_ELEMENT: // Basic model if ( !(orthogonalCamera && (jPar || kPar)) ) { r.setGeometry(cylinderModel); if ( currentSelection == YZ_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(blue); } // Rotation subR = new Matrix4x4(); subR.axisRotation(Math.toRadians(90.0), -1, 0, 0); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(0, 0, scale*SEGMENT_LENGHT); eleP = R.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case YZY_SEGMENT_ELEMENT: if ( !(orthogonalCamera && (jPar || kPar)) ) { // Basic model r.setGeometry(cylinderModel); if ( currentSelection == YZ_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(green); } // Rotation subR = new Matrix4x4(); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(0, scale*SEGMENT_LENGHT, 0); eleP = R.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case XZZ_SEGMENT_ELEMENT: if ( !(orthogonalCamera && (iPar || kPar)) ) { // Basic model r.setGeometry(cylinderModel); if ( currentSelection == XZ_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(blue); } // Rotation subR = new Matrix4x4(); subR.axisRotation(Math.toRadians(90.0), 0, 1, 0); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(0, 0, scale*SEGMENT_LENGHT); eleP = R.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case XZX_SEGMENT_ELEMENT: if ( !(orthogonalCamera && (iPar || kPar)) ) { // Basic model r.setGeometry(cylinderModel); if ( currentSelection == XZ_PLANE_GROUP ) { r.setMaterial(yellow); } else { r.setMaterial(red); } // Rotation subR = new Matrix4x4(); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(scale*SEGMENT_LENGHT, 0, 0); eleP = R.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case XY_BOX_ELEMENT: if ( !(orthogonalCamera && (iPar || jPar)) ) { // Basic model r.setGeometry(null); if ( currentSelection != XY_PLANE_GROUP ) { break; } r.setGeometry(boxModel); r.setMaterial(yellowTransparent); // Rotation subR = new Matrix4x4(); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(scale*BOX_SIDE/2, scale*BOX_SIDE/2, 0); eleP = R.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case YZ_BOX_ELEMENT: if ( !(orthogonalCamera && (jPar || kPar)) ) { // Basic model r.setGeometry(null); if ( currentSelection != YZ_PLANE_GROUP ) { break; } r.setGeometry(boxModel); r.setMaterial(yellowTransparent); // Rotation subR = new Matrix4x4(); subR.axisRotation(Math.toRadians(90.0), 0, 1, 0); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(0, scale*BOX_SIDE/2, scale*BOX_SIDE/2); eleP = R.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; case XZ_BOX_ELEMENT: if ( !(orthogonalCamera && (iPar || kPar)) ) { // Basic model r.setGeometry(null); if ( currentSelection != XZ_PLANE_GROUP ) { break; } r.setGeometry(boxModel); r.setMaterial(yellowTransparent); // Rotation subR = new Matrix4x4(); subR.axisRotation(Math.toRadians(90.0), 1, 0, 0); eleR = R.multiply(subR); r.setRotation(eleR); eleRi = new Matrix4x4(eleR); eleRi.invert(); r.setRotationInverse(eleRi); // Translation subP = new Vector3D(scale*BOX_SIDE/2, 0, scale*BOX_SIDE/2); eleP = R.multiply(subP).add(getPosition()); r.setPosition(eleP); } break; } } } public Vector3D getPosition() { Vector3D p = new Vector3D(T.M[0][3], T.M[1][3], T.M[2][3]); return p; } public void setPosition(Vector3D p) { T.M[0][3] = p.x; T.M[1][3] = p.y; T.M[2][3] = p.z; } public void setTransformationMatrix(Matrix4x4 T) { this.T = T; Matrix4x4 R = new Matrix4x4(T); R.M[3][0] = 0.0; R.M[3][1] = 0.0; R.M[3][2] = 0.0; R.M[0][3] = 0.0; R.M[1][3] = 0.0; R.M[2][3] = 0.0; R.M[3][3] = 1.0; calculateGeometryState(getPosition(), R, selectedResizing, aparentSizeInPixels, camera); } public Matrix4x4 getTransformationMatrix() { return T; } public boolean processMouseEventAwt(MouseEvent mouseEvent) { oldmousex = mouseEvent.getX(); oldmousey = mouseEvent.getY(); return false; } public boolean processKeyPressedEventAwt(KeyEvent keyEvent) { char unicode_id; int keycode; double deltaMov = 0.1; boolean updateNeeded = false; unicode_id = keyEvent.getKeyChar(); keycode = keyEvent.getKeyCode(); Matrix4x4 R = new Matrix4x4(T); R.M[3][0] = 0.0; R.M[3][1] = 0.0; R.M[3][2] = 0.0; R.M[0][3] = 0.0; R.M[1][3] = 0.0; R.M[2][3] = 0.0; R.M[3][3] = 1.0; selectedResizing = true; calculateGeometryState(new Vector3D(T.M[0][3], T.M[1][3], T.M[2][3]), R, selectedResizing, aparentSizeInPixels, camera); if ( unicode_id != keyEvent.CHAR_UNDEFINED ) { switch ( unicode_id ) { // Position case 'x': T.M[0][3] -= deltaMov; updateNeeded = true; break; case 'X': T.M[0][3] += deltaMov; updateNeeded = true; break; case 'y': T.M[1][3] -= deltaMov; updateNeeded = true; break; case 'Y': T.M[1][3] += deltaMov; updateNeeded = true; break; case 'z': T.M[2][3] -= deltaMov; updateNeeded = true; break; case 'Z': T.M[2][3] += deltaMov; updateNeeded = true; break; } } return updateNeeded; } public boolean processKeyReleasedEventAwt(KeyEvent keyEvent) { return false; } public boolean processMousePressedEventAwt(MouseEvent e) { lastDeltaPosition = new Vector3D(); //lastDeltaPosition = calculateDeltaPosition(mouseEvent); //Vector3D p = calculateInteractionPosition(e); // Not working! //* HOW TO REFACTOR FROM HERE ************************************* //- Configure sub-interaction technique from active element ------- int currentSelection; if ( volatileSelection == NULL_GROUP ) { currentSelection = persistentSelection; } else { currentSelection = volatileSelection; } Vector3D v = null; int interactionTechnique = 0; switch ( currentSelection ) { case X_AXIS_GROUP: v = new Vector3D(1, 0, 0); interactionTechnique = 1; // Vector break; case Y_AXIS_GROUP: v = new Vector3D(0, 1, 0);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -