Thread: [Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool TapeMeasureTool.java,1.7,1.8
Status: Pre-Alpha
Brought to you by:
henryml
From: Nordholt <nor...@us...> - 2006-02-23 21:30:27
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20714/tool Modified Files: TapeMeasureTool.java Log Message: added angeling to tapemeasure Index: TapeMeasureTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/TapeMeasureTool.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** TapeMeasureTool.java 25 Jan 2006 10:02:09 -0000 1.7 --- TapeMeasureTool.java 23 Feb 2006 21:30:14 -0000 1.8 *************** *** 65,68 **** --- 65,72 ---- /** Tells if the tool is currently measuring or not */ private boolean measuring; + + /** Tells if the tool is taking its angel or not */ + private boolean angling; + /** * Constructor *************** *** 73,78 **** super(glv, cursor); measuring = false; } ! /** * Invoked when the mouse cursor has been moved --- 77,83 ---- super(glv, cursor); measuring = false; + angling = false; } ! /** * Invoked when the mouse cursor has been moved *************** *** 102,113 **** glv.getView().makeTarget(target); movePlane = targetSurface.plane(); ! Vertex edgeDirection = currentEdge.getTo().minus(currentEdge.getFrom()); Vertex surfaceNormal = targetSurface.normal(); edgeNormal = edgeDirection.cross(surfaceNormal); - move(e); } } } ! } else { move(e); } --- 107,119 ---- glv.getView().makeTarget(target); movePlane = targetSurface.plane(); ! Vertex edgeDirection = currentEdge.getDirection(); Vertex surfaceNormal = targetSurface.normal(); edgeNormal = edgeDirection.cross(surfaceNormal); } } } ! } else if (angling) { ! moveAngel(e); ! } else if (measuring) { move(e); } *************** *** 119,122 **** --- 125,147 ---- /** + * Moves the angelsetting constructors. + * @param e the mouseevent + */ + private void moveAngel(MouseEvent e) { + Vertex moveTo = glv.getView().toPlaneCoords(new double[]{e.getX(), + e.getY()}, + movePlane); + Vertex delta = moveTo.minus(constructionPoint); + constructionPoint.move(delta.getX(), delta.getY(), delta.getZ()); + double degrees; + Vertex angelDir = edgeToConstruction.getDirection(); + Vertex edgeDir = currentEdge.getDirection(); + degrees = Math.acos((angelDir.dot(edgeDir) / (angelDir.length() * edgeDir.length()))); + degrees *= (180 / Math.PI); + glv.setLength(degrees / 1000); + } + + + /** * moves the construction line. * @param e the mouseevent. *************** *** 160,168 **** v.addTempEdge(zAxis); findTarget(e); ! if (!measuring) { if (target instanceof Edge) { currentEdge = (Edge)target; ! measuring = true; ! Vertex minus = currentEdge.getTo().minus(currentEdge.getFrom()); minus.scale(1 / minus.length()); Vertex constructionFrom = createVertex(new double[] {(currentEdge.getFrom().getX() + --- 185,193 ---- v.addTempEdge(zAxis); findTarget(e); ! if (!measuring && !angling) { if (target instanceof Edge) { currentEdge = (Edge)target; ! angling = true; ! Vertex minus = currentEdge.getDirection(); minus.scale(1 / minus.length()); Vertex constructionFrom = createVertex(new double[] {(currentEdge.getFrom().getX() + *************** *** 197,200 **** --- 222,227 ---- v.addTempVertex(constructionPoint); } + } else if (angling) { + endAngeling(); } else { endTapeMeasure(); *************** *** 244,265 **** } else if (e.getKeyCode() == KeyEvent.VK_ENTER) { if (!number.equals("")) { ! double length = glv.getLength(); ! double currentLength = edgeToConstruction.getLength(); ! Vertex minus = edgeToConstruction.getTo().minus(edgeToConstruction.getFrom()); ! edgeNormal.scale(1 / edgeNormal.length()); ! minus.scale(1 / minus.length()); ! double delta; ! if (minus.dot(edgeNormal) > 0) { ! delta = length - currentLength; ! } else { ! delta = -(length - currentLength); ! } ! constructionPoint.move(edgeNormal.getX() * delta, ! edgeNormal.getY() * delta, ! edgeNormal.getZ() * delta); ! currentConstruction.move(edgeNormal.getX() * delta, edgeNormal.getY() * delta, edgeNormal.getZ() * delta); ! endTapeMeasure(); glv.repaint(); } --- 271,294 ---- } else if (e.getKeyCode() == KeyEvent.VK_ENTER) { if (!number.equals("")) { ! if (measuring) { ! double length = glv.getLength(); ! double currentLength = edgeToConstruction.getLength(); ! Vertex minus = edgeToConstruction.getTo().minus(edgeToConstruction.getFrom()); ! edgeNormal.scale(1 / edgeNormal.length()); ! minus.scale(1 / minus.length()); ! double delta; ! if (minus.dot(edgeNormal) > 0) { ! delta = length - currentLength; ! } else { ! delta = -(length - currentLength); ! } ! constructionPoint.move(edgeNormal.getX() * delta, edgeNormal.getY() * delta, edgeNormal.getZ() * delta); ! currentConstruction.move(edgeNormal.getX() * delta, ! edgeNormal.getY() * delta, ! edgeNormal.getZ() * delta); ! endTapeMeasure(); ! } glv.repaint(); } *************** *** 301,304 **** measuring = false; } ! } } --- 330,358 ---- measuring = false; } ! } ! /** ! * Ends the angeling ! */ ! private void endAngeling() { ! if (movePlane != null) { ! Vertex angelDir = edgeToConstruction.getDirection(); ! Vertex to = angelDir.copy(); ! Vertex from = angelDir.copy(); ! to.scale(50); ! to = to.add(edgePoint); ! from.scale(-50); ! from = from.add(edgePoint); ! currentConstruction.setTo(to); ! currentConstruction.setFrom(from); ! Vertex planeNormal = movePlane.normal(); ! Vertex constructionDir = currentConstruction.getDirection(); ! edgeNormal = constructionDir.cross(planeNormal); ! ! constructionPoint = edgePoint.copy(); ! edgeToConstruction.setTo(constructionPoint); ! glv.getView().makeTarget(constructionPoint); ! } ! angling = false; ! measuring = true; ! } } |