[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool CameraTool.java,1.3,1.4
Status: Pre-Alpha
Brought to you by:
henryml
From: rimestad <rim...@us...> - 2005-12-13 12:37:32
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3655/src/net/sourceforge/bprocessor/gl/tool Modified Files: CameraTool.java Log Message: Refactored all the rotation from cameratool to the camera in the model as static methods. Fixed small bug with tilting when rotating. There is still a bug when rotation about the eye point though Index: CameraTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/CameraTool.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CameraTool.java 12 Dec 2005 14:33:22 -0000 1.3 --- CameraTool.java 13 Dec 2005 12:37:20 -0000 1.4 *************** *** 10,14 **** import net.sourceforge.bprocessor.gl.view.View; import net.sourceforge.bprocessor.model.Camera; - import net.sourceforge.bprocessor.model.Geometry; import net.sourceforge.bprocessor.model.Plane; import net.sourceforge.bprocessor.model.Vertex; --- 10,13 ---- *************** *** 19,24 **** import java.awt.Cursor; - import javax.swing.Timer; - import org.apache.log4j.Logger; --- 18,21 ---- *************** *** 36,45 **** private static Logger log = Logger.getLogger(CameraTool.class); - /** The carmera move timer */ - private static Timer timer; - - /** The mouse position last time the mouse was pressed initializes to (0,0) */ - private static int[] pressPos = new int[2]; - /** The current rotation mode */ protected int mode = ROTATION; --- 33,36 ---- *************** *** 104,123 **** } else if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == MouseEvent.BUTTON1_DOWN_MASK || e.getButton() == MouseEvent.BUTTON1) { - double[] pivot = super.selectionCenter(); - double[] zero = new double[]{0, 0, 0}; - - Vertex up = new Vertex("", roll[0], roll[1], roll[2]); - up.scale(1 / up.length()); - double x = center[0] - camera[0]; - double y = center[1] - camera[1]; - double z = center[2] - camera[2]; - Vertex forward = new Vertex("", x, y, z); - forward.scale(1 / forward.length()); - Vertex sidewards = up.cross(forward); - sidewards.scale(1 / sidewards.length()); - /*log.info("forward: " + forward.getX() + ", " + forward.getY() + ", " + forward.getZ()); - log.info("sideward: " + sidewards.getX() - + ", " + sidewards.getY() + ", " + sidewards.getZ()); - log.info("upwrad: " + up.getX() + ", " + up.getY() + ", " + up.getZ());*/ double angleX = ((double)(e.getX() - previousPos[0]) / 360) * Math.PI; double angleY = ((double)(e.getY() - previousPos[1]) / 360) * Math.PI; --- 95,98 ---- *************** *** 129,153 **** if (e.isShiftDown()) { // roll camera ! Geometry.rotate(turn * (-angleY - angleX) / 2, forward.getX(), ! forward.getY(), forward.getZ(), roll, zero); } else if (e.isAltDown()) { // rotate camera about itself ! Geometry.rotate(angleX, up.getX(), up.getY(), up.getZ(), center, camera); ! Geometry.rotate(-angleY, sidewards.getX(), sidewards.getY(), sidewards.getZ(), ! center, camera); ! Geometry.rotate(angleX, 0, 0, turn, roll, new double[]{0, 0, 0}); ! Geometry.rotate(angleY, sidewards.getX(), sidewards.getY(), sidewards.getZ(), ! roll, zero); } else { // rotate camera about point of view (or selection if any) ! Geometry.rotate(-angleX, 0, 0, turn, camera, pivot); ! Geometry.rotate(-angleX, 0, 0, turn, center, pivot); ! Geometry.rotate(-angleX, 0, 0, turn, roll, new double[]{0, 0, 0}); ! Geometry.rotate(angleY, sidewards.getX(), sidewards.getY(), sidewards.getZ(), ! camera, pivot); ! Geometry.rotate(angleY, sidewards.getX(), sidewards.getY(), sidewards.getZ(), ! center, pivot); ! Geometry.rotate(angleY, sidewards.getX(), sidewards.getY(), sidewards.getZ(), ! roll, zero); } glv.repaint(); --- 104,116 ---- if (e.isShiftDown()) { // roll camera ! Camera.rollCamera(c, turn * (-angleY - angleX) / 2); } else if (e.isAltDown()) { // rotate camera about itself ! Camera.rotateHorizontallyEye(c, angleX); ! Camera.rotateVerticallyEye(c, -angleY); } else { // rotate camera about point of view (or selection if any) ! Camera.rotateHorizontally(c, -angleX, center); ! Camera.rotateVertically(c, angleY, center); } glv.repaint(); |