[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool Tool.java,1.14,1.15 CameraFlyTool.java
Status: Pre-Alpha
Brought to you by:
henryml
From: rimestad <rim...@us...> - 2005-12-14 14:20:46
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18470/src/net/sourceforge/bprocessor/gl/tool Modified Files: Tool.java CameraFlyTool.java AbstractTool.java ToolFactory.java CameraTool.java Log Message: made small fixes and improvements to the camera tool and added a flytool Index: CameraTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/CameraTool.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CameraTool.java 13 Dec 2005 12:37:20 -0000 1.4 --- CameraTool.java 14 Dec 2005 14:20:34 -0000 1.5 *************** *** 80,93 **** glv.setCursor(dragCursor); Vertex first = view.toPlaneCoords(new double[] {previousPos[0], previousPos[1]}, ! new Plane((camera[0] - center[0]), ! (camera[1] - center[1]), ! (camera[2] - center[2]), 0)); Vertex second = view.toPlaneCoords(new double[] {e.getX(), e.getY()}, ! new Plane((camera[0] - center[0]), ! (camera[1] - center[1]), ! (camera[2] - center[2]), 0)); c.translate(new double[] {first.getX() - second.getX(), first.getY() - second.getY(), --- 80,98 ---- glv.setCursor(dragCursor); + double x = camera[0] - center[0]; + double y = camera[1] - center[1]; + double z = camera[2] - center[2]; + double sqr = Math.sqrt(x * x + y * y + z * z); + if (sqr < 1) { + x *= 1 / sqr; + y *= 1 / sqr; + z *= 1 / sqr; + } Vertex first = view.toPlaneCoords(new double[] {previousPos[0], previousPos[1]}, ! new Plane(x, y, z, 0)); Vertex second = view.toPlaneCoords(new double[] {e.getX(), e.getY()}, ! new Plane(x, y, z, 0)); c.translate(new double[] {first.getX() - second.getX(), first.getY() - second.getY(), *************** *** 107,116 **** } 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(); --- 112,122 ---- } 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) ! double[] pivot = super.selectionCenter(); ! Camera.rotateHorizontally(c, -angleX, pivot); ! Camera.rotateVertically(c, angleY, pivot); } glv.repaint(); *************** *** 130,133 **** --- 136,141 ---- mode = ROTATION; } + } else if (e.getButton() == MouseEvent.BUTTON3) { + glv.changeTool(Tool.PREVIOUS_TOOL); } } Index: ToolFactory.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/ToolFactory.java,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** ToolFactory.java 5 Dec 2005 07:56:50 -0000 1.18 --- ToolFactory.java 14 Dec 2005 14:20:34 -0000 1.19 *************** *** 51,58 **** /** rotation tool */ private CameraTool rotation; /** Tape measure tool */ private TapeMeasureTool tapeMeasure; ! /** The previous tool */ private Tool previousTool; --- 51,61 ---- /** rotation tool */ private CameraTool rotation; + + /** Camera fly tool */ + private CameraFlyTool fly; /** Tape measure tool */ private TapeMeasureTool tapeMeasure; ! /** The previous tool */ private Tool previousTool; *************** *** 80,83 **** --- 83,90 ---- Cursor dragCursor = Toolkit.getDefaultToolkit().createCustomCursor(dragImage, new Point(7, 8), "Drag"); + url = cl.getResource("Biconfly.gif"); + Image flyImage = Toolkit.getDefaultToolkit().getImage(url); + Cursor flyCursor = + Toolkit.getDefaultToolkit().createCustomCursor(flyImage, new Point(7, 8), "Fly"); Toolbar tb = Toolbar.getInstance(); *************** *** 96,99 **** --- 103,108 ---- but = tb.registerAction(new TapeMeasureAction(glv)); but.setToolTipText("Tape Measure"); + but = tb.registerAction(new CameraFlyAction(glv)); + but.setToolTipText("Fly mode"); *************** *** 105,108 **** --- 114,118 ---- rotation = new CameraTool(glv, rotationCursor, dragCursor); tapeMeasure = new TapeMeasureTool(glv, pencilcursor); + fly = new CameraFlyTool(glv, flyCursor); Notifier.getInstance().addListener(select); *************** *** 165,168 **** --- 175,181 ---- currentTool = rotation; return rotation; + } else if (i == Tool.FLY_TOOL) { + currentTool = fly; + return fly; } else if (i == Tool.TAPE_MEASURE_TOOL) { currentTool = tapeMeasure; *************** *** 231,234 **** --- 244,275 ---- } } + + /** + * The rotation action inner class + */ + class CameraFlyAction extends AbstractAction { + /** The GLView */ + private GLView glv = null; + + /** + * Constructor + * @param glv TheGLView + */ + CameraFlyAction(GLView glv) { + this.glv = glv; + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + URL url = cl.getResource("Biconfly.gif"); + ImageIcon im = new ImageIcon(url); + putValue(Action.SMALL_ICON, im); + } + + /** + * Called when the button is pressed + * @param e The ActionEvent + */ + public void actionPerformed(ActionEvent e) { + glv.changeTool(Tool.FLY_TOOL); + } + } /** *************** *** 380,383 **** } } - } --- 421,423 ---- Index: CameraFlyTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/CameraFlyTool.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CameraFlyTool.java 13 Dec 2005 12:52:06 -0000 1.1 --- CameraFlyTool.java 14 Dec 2005 14:20:34 -0000 1.2 *************** *** 9,14 **** import net.sourceforge.bprocessor.gl.GLView; import net.sourceforge.bprocessor.model.Camera; - //import java.awt.event.KeyEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; --- 9,14 ---- import net.sourceforge.bprocessor.gl.GLView; import net.sourceforge.bprocessor.model.Camera; + import net.sourceforge.bprocessor.model.Vertex; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; *************** *** 32,37 **** super(glv, cursor); } - - /** --- 32,35 ---- *************** *** 40,48 **** */ protected void moved(MouseEvent e) { - Camera c = glv.getView().getCamera(); - double angleX = ((double)(e.getX() - previousPos[0]) / 360) * Math.PI; - double angleY = ((double)(e.getY() - previousPos[1]) / 360) * Math.PI; - Camera.rotateHorizontallyEye(c, angleX); - Camera.rotateVerticallyEye(c, angleY); } --- 38,41 ---- *************** *** 52,55 **** --- 45,56 ---- */ protected void dragged(MouseEvent e) { + if (e.getButton() == MouseEvent.BUTTON1 || + (e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == MouseEvent.BUTTON1_DOWN_MASK) { + Camera c = glv.getView().getCamera(); + double angleX = ((double)(e.getX() - previousPos[0]) / 360) * Math.PI; + double angleY = ((double)(e.getY() - previousPos[1]) / 360) * Math.PI; + Camera.rotateHorizontallyEye(c, -angleX); + Camera.rotateVerticallyEye(c, angleY); + } } *************** *** 73,80 **** */ public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_UP) { ! // move forward } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { ! // move backward } else { super.keyPressed(e); --- 74,95 ---- */ public void keyPressed(KeyEvent e) { + Camera c = glv.getView().getCamera(); + Vertex up = new Vertex("", c.getRoll()[0], c.getRoll()[1], c.getRoll()[2]); + double x = c.getCenter()[0] - c.getCamera()[0]; + double y = c.getCenter()[1] - c.getCamera()[1]; + double z = c.getCenter()[2] - c.getCamera()[2]; + Vertex forward = new Vertex("", x, y, z); + forward.scale(1 / forward.length()); + Vertex sidewards = up.cross(forward); + sidewards.scale(1 / sidewards.length()); + if (e.getKeyCode() == KeyEvent.VK_UP) { ! c.translate(new double[] {forward.getX(), forward.getY(), forward.getZ()}); } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { ! c.translate(new double[] {-forward.getX(), -forward.getY(), -forward.getZ()}); ! } else if (e.getKeyCode() == KeyEvent.VK_LEFT) { ! c.translate(new double[] {sidewards.getX(), sidewards.getY(), sidewards.getZ()}); ! } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) { ! c.translate(new double[] {-sidewards.getX(), -sidewards.getY(), -sidewards.getZ()}); } else { super.keyPressed(e); Index: Tool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/Tool.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Tool.java 6 Dec 2005 16:49:19 -0000 1.14 --- Tool.java 14 Dec 2005 14:20:34 -0000 1.15 *************** *** 34,37 **** --- 34,39 ---- /** The Tape Measure tool */ public static final int TAPE_MEASURE_TOOL = 6; + /** The Fly tool */ + public static final int FLY_TOOL = 7; /** Index: AbstractTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/AbstractTool.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** AbstractTool.java 12 Dec 2005 14:33:22 -0000 1.35 --- AbstractTool.java 14 Dec 2005 14:20:34 -0000 1.36 *************** *** 9,12 **** --- 9,13 ---- import net.sourceforge.bprocessor.model.Camera; import net.sourceforge.bprocessor.model.Edge; + import net.sourceforge.bprocessor.model.Plane; import net.sourceforge.bprocessor.model.Project; import net.sourceforge.bprocessor.model.Surface; *************** *** 100,103 **** --- 101,112 ---- int rotation = e.getWheelRotation(); Camera cam = (glv.getView()).getCamera(); + /*double[] camera = cam.getCamera(); + double[] center = cam.getCenter(); + double x = camera[0] - center[0]; + double y = camera[1] - center[1]; + double z = camera[2] - center[2]; + Vertex v = glv.getView().toPlaneCoords(new double[] {e.getX(), + e.getY()}, + new Plane(x, y, z, 0));*/ if (rotation > 0) { cam.zoomout(); |