[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool MoveTool.java,1.28,1.29
Status: Pre-Alpha
Brought to you by:
henryml
From: Nordholt <nor...@us...> - 2006-01-30 11:31:53
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12993 Modified Files: MoveTool.java Log Message: changed way free move mode to work at more angels Index: MoveTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/MoveTool.java,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** MoveTool.java 25 Jan 2006 14:45:25 -0000 1.28 --- MoveTool.java 30 Jan 2006 11:31:43 -0000 1.29 *************** *** 202,219 **** int y = e.getY(); Vertex parentPos = glv.getView().toPlaneCoords(new double[] {x, y}, dragPlane); ! Vertex delta = parentPos.minus(from); ! //Restricting movement to fit movement mode. ! delta = restrict(delta); ! if (log.isDebugEnabled()) { ! log.debug("from " + from.getX() + ", " + from.getY() + ", " + from.getZ()); ! log.debug("delta " + delta.getX() + ", " + delta.getY() + ", " + delta.getZ()); ! } ! delta = snapToInitial(delta); ! move(vertices, delta); ! from.move(delta.getX(), delta.getY(), delta.getZ()); ! glv.setLength(from.minus(initial).length()); ! update(); } } --- 202,223 ---- int y = e.getY(); Vertex parentPos = glv.getView().toPlaneCoords(new double[] {x, y}, dragPlane); ! if (parentPos != null) { ! Vertex delta = parentPos.minus(from); ! //Restricting movement to fit movement mode. ! delta = restrict(delta); ! if (log.isDebugEnabled()) { ! log.debug("from " + from.getX() + ", " + from.getY() + ", " + from.getZ()); ! log.debug("delta " + delta.getX() + ", " + delta.getY() + ", " + delta.getZ()); ! } ! delta = snapToInitial(delta); ! move(vertices, delta); ! from.move(delta.getX(), delta.getY(), delta.getZ()); ! glv.setLength(from.minus(initial).length()); ! update(); ! } else { ! log.warn("could not hit the dragplane"); ! } } } *************** *** 265,269 **** private void findRestrictions(MouseEvent e) { if (moveMode == AXIS_RESTRICTED) { ! if (restrictionVector == null) { boolean found = findRestrictionVector(e); if (found) { --- 269,273 ---- private void findRestrictions(MouseEvent e) { if (moveMode == AXIS_RESTRICTED) { ! if (restrictionVector == null && moveConstructors != null) { boolean found = findRestrictionVector(e); if (found) { *************** *** 272,316 **** } } else if (moveMode == FREE_SNAP) { ! if (dragPlane == null) { ! Vertex upper = new Vertex(0, 0, 50); ! upper = upper.add(initial); ! Vertex upperX = new Vertex(50, 0, 50); ! upperX = upperX.add(initial); ! Vertex upperY = new Vertex(0, 50, 50); ! upperY = upperY.add(initial); ! Vertex lowerX = new Vertex(50, 0, 0); ! lowerX = lowerX.add(initial); ! Vertex lowerY = new Vertex(0, 50, 0); ! lowerY = lowerY.add(initial); ! Vertex lowerXY = new Vertex(50, 50, 0); ! lowerXY = lowerXY.add(initial); ! ! List xzEdges = new LinkedList(); ! xzEdges.add(new Edge(initial, upper)); ! xzEdges.add(new Edge(upper, upperX)); ! xzEdges.add(new Edge(upperX, lowerX)); ! xzEdges.add(new Edge(lowerX, initial)); ! List yzEdges = new LinkedList(); ! yzEdges.add(new Edge(initial, upper)); ! yzEdges.add(new Edge(upper, upperY)); ! yzEdges.add(new Edge(upperY, lowerY)); ! yzEdges.add(new Edge(lowerY, initial)); ! List xyEdges = new LinkedList(); ! xyEdges.add(new Edge(initial, lowerX)); ! xyEdges.add(new Edge(lowerX, lowerXY)); ! xyEdges.add(new Edge(lowerXY, lowerY)); ! xyEdges.add(new Edge(lowerY, initial)); ! ! Surface xzSurface = new Surface(xzEdges); ! Surface yzSurface = new Surface(yzEdges); ! Surface xySurface = new Surface(xyEdges); ! glv.getView().addTempSurface(xzSurface); ! glv.getView().addTempSurface(yzSurface); ! glv.getView().addTempSurface(xySurface); List objects = glv.getView().getObjectAtPoint(e.getX(), e.getY()); - Iterator it = objects.iterator(); while (it.hasNext()) { --- 276,294 ---- } } else if (moveMode == FREE_SNAP) { ! if (dragPlane == null && moveConstructors != null) { ! Iterator iter = moveConstructors.iterator(); ! Edge firstConst = (Edge)iter.next(); ! Edge secondConst = (Edge)iter.next(); ! Edge thirdConst = (Edge)iter.next(); ! Surface hitSurface1 = spannedSurface(firstConst, secondConst); ! Surface hitSurface2 = spannedSurface(firstConst, thirdConst); ! Surface hitSurface3 = spannedSurface(secondConst, thirdConst); + glv.getView().addTempSurface(hitSurface1); + glv.getView().addTempSurface(hitSurface2); + glv.getView().addTempSurface(hitSurface3); List objects = glv.getView().getObjectAtPoint(e.getX(), e.getY()); Iterator it = objects.iterator(); while (it.hasNext()) { *************** *** 318,324 **** if (ob instanceof Surface) { Surface surface = (Surface)ob; ! if (surface.equals(xzSurface) || ! surface.equals(yzSurface) || ! surface.equals(xySurface)) { dragPlane = surface.plane(); restrictionVector = new Vertex(0, 0, 0); --- 296,302 ---- if (ob instanceof Surface) { Surface surface = (Surface)ob; ! if (surface.equals(hitSurface1) || ! surface.equals(hitSurface2) || ! surface.equals(hitSurface3)) { dragPlane = surface.plane(); restrictionVector = new Vertex(0, 0, 0); *************** *** 326,337 **** } } ! glv.getView().removeTempSurface(xzSurface); ! glv.getView().removeTempSurface(xySurface); ! glv.getView().removeTempSurface(yzSurface); clearConstructors(moveConstructors); } } } ! /** * Finds the current restriction vector. --- 304,363 ---- } } ! glv.getView().removeTempSurface(hitSurface1); ! glv.getView().removeTempSurface(hitSurface2); ! glv.getView().removeTempSurface(hitSurface3); clearConstructors(moveConstructors); } } } ! ! /** ! * Creates the surface spanned by two edges connected ! * at one point. ! * @param edge1 the first edge. ! * @param edge2 the second edge. ! * @return the surface. ! */ ! private Surface spannedSurface(Edge edge1, Edge edge2) { ! List edges = new LinkedList(); ! ! Vertex to1 = edge1.getTo().copy(); ! Vertex to2 = edge2.getTo().copy(); ! Vertex notConnected1; ! Vertex notConnected2; ! Vertex connected; ! if (Math.abs(to1.getX() - to2.getX()) < 0.0001 && ! Math.abs(to1.getY() - to2.getY()) < 0.0001 && ! Math.abs(to1.getZ() - to2.getZ()) < 0.0001) { ! connected = to1; ! notConnected1 = edge1.getFrom().copy(); ! notConnected2 = edge2.getFrom().copy(); ! } else { ! Vertex from2 = edge2.getFrom().copy(); ! if (Math.abs(to1.getX() - from2.getX()) < 0.0001 && ! Math.abs(to1.getY() - from2.getY()) < 0.0001 && ! Math.abs(to1.getZ() - from2.getZ()) < 0.0001) { ! connected = to1; ! notConnected1 = edge1.getFrom().copy(); ! notConnected2 = to2; ! } else { ! notConnected1 = to1; ! connected = edge1.getFrom().copy(); ! if (Math.abs(connected.getX() - from2.getX()) < 0.0001 && ! Math.abs(connected.getY() - from2.getY()) < 0.0001 && ! Math.abs(connected.getZ() - from2.getZ()) < 0.0001) { ! notConnected2 = to2; ! } else { ! notConnected2 = from2; ! } ! } ! } ! ! edges.add(new Edge(notConnected1, notConnected2)); ! edges.add(new Edge(notConnected2, connected)); ! edges.add(new Edge(connected, notConnected1)); ! return new Surface(edges); ! } ! /** * Finds the current restriction vector. *************** *** 474,477 **** --- 500,504 ---- } move(vertices, delta); + update(); glv.repaint(); } |