Changeset 8509 in josm for trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
- Timestamp:
- 2015-06-20T14:36:00+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
r8470 r8509 174 174 /** {@code true}, if dual alignment mode is enabled. User wants following extrude to be dual aligned. */ 175 175 private boolean dualAlignEnabled; 176 /** {@code true}, if dual alignment is active. User is dragging the mouse, required conditions are met. Treat {@link #mode} (extrude/translate/create_new) as dual aligned. */ 176 /** {@code true}, if dual alignment is active. User is dragging the mouse, required conditions are met. 177 * Treat {@link #mode} (extrude/translate/create_new) as dual aligned. */ 177 178 private boolean dualAlignActive; 178 179 /** Dual alignment reference segments */ … … 622 623 Node prevNode = getPreviousNode(selectedSegment.lowerIndex); 623 624 boolean nodeOverlapsSegment = prevNode != null && Geometry.segmentsParallel(initialN1en, prevNode.getEastNorth(), initialN1en, newN1en); 624 // segmentAngleZero marks subset of nodeOverlapsSegment. nodeOverlapsSegment is true if angle between segments is 0 or PI, segmentAngleZero only if angle is 0 625 // segmentAngleZero marks subset of nodeOverlapsSegment. 626 // nodeOverlapsSegment is true if angle between segments is 0 or PI, segmentAngleZero only if angle is 0 625 627 boolean segmentAngleZero = prevNode != null && Math.abs(Geometry.getCornerAngle(prevNode.getEastNorth(), initialN1en, newN1en)) < 1e-5; 626 628 boolean hasOtherWays = hasNodeOtherWays(selectedSegment.getFirstNode(), selectedSegment.way); … … 927 929 if (newN1en == null || newN2en == null) return bestMovement; 928 930 if (keepSegmentDirection && isOppositeDirection(newN1en, newN2en, initialN1en, initialN2en)) { 929 EastNorth collapsedSegmentPosition = Geometry.getLineLineIntersection(dualAlignSegment1.p1, dualAlignSegment1.p2, dualAlignSegment2.p1, dualAlignSegment2.p2); 931 EastNorth collapsedSegmentPosition = Geometry.getLineLineIntersection(dualAlignSegment1.p1, dualAlignSegment1.p2, 932 dualAlignSegment2.p1, dualAlignSegment2.p2); 930 933 newN1en = collapsedSegmentPosition; 931 934 newN2en = collapsedSegmentPosition; … … 1172 1175 // Graphics2D calls 'user space'. Essentially a manhattan distance of manhattan distances. 1173 1176 // This can be used as a safe length of line to generate which will always go off-viewport. 1174 double linelength = Math.abs(widthpoint.getX()) + Math.abs(widthpoint.getY()) + Math.abs(heightpoint.getX()) + Math.abs(heightpoint.getY()); 1175 1176 return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * linelength) , start.getY() + (unitvector.getY() * linelength))); 1177 double linelength = Math.abs(widthpoint.getX()) + Math.abs(widthpoint.getY()) 1178 + Math.abs(heightpoint.getX()) + Math.abs(heightpoint.getY()); 1179 1180 return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * linelength) , start.getY() 1181 + (unitvector.getY() * linelength))); 1177 1182 } catch (NoninvertibleTransformException e) { 1178 return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * 10) , start.getY() + (unitvector.getY() * 10))); 1183 return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * 10) , start.getY() 1184 + (unitvector.getY() * 10))); 1179 1185 } 1180 1186 }
Note:
See TracChangeset
for help on using the changeset viewer.