- Timestamp:
- 2007-10-14T21:54:13+02:00 (18 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
r387 r388 14 14 import java.util.HashSet; 15 15 import java.util.Map; 16 import java.util.Set; 16 17 import java.util.LinkedList; 17 18 import java.util.List; … … 28 29 import org.openstreetmap.josm.data.coor.EastNorth; 29 30 import org.openstreetmap.josm.data.osm.Node; 31 import org.openstreetmap.josm.data.osm.NodePair; 30 32 import org.openstreetmap.josm.data.osm.OsmPrimitive; 31 33 import org.openstreetmap.josm.data.osm.Way; … … 111 113 is.add(ws.lowerIndex); 112 114 } 113 115 116 Set<NodePair> segSet = new HashSet<NodePair>(); 117 114 118 for (Map.Entry<Way, List<Integer>> insertPoint : insertPoints.entrySet()) { 115 119 Way w = insertPoint.getKey(); … … 119 123 120 124 pruneSuccsAndReverse(is); 125 for (int i : is) segSet.add( 126 new NodePair(w.nodes.get(i), w.nodes.get(i+1)).sort()); 121 127 for (int i : is) wnew.nodes.add(i + 1, n); 122 128 … … 125 131 reuseWays.add(wnew); 126 132 } 133 134 adjustNode(segSet, n); 127 135 } 128 136 } … … 215 223 Collections.reverse(is); 216 224 } 225 226 private static void adjustNode(Collection<NodePair> segs, Node n) { 227 // FIXME: find intersection if more than one seg. 228 if (segs.size() >= 1) { 229 EastNorth P = n.eastNorth; 230 NodePair seg = segs.iterator().next(); 231 EastNorth A = seg.a.eastNorth; 232 EastNorth B = seg.b.eastNorth; 233 double a = P.distance(B); 234 double b = P.distance(A); 235 double c = A.distance(B); 236 double q = (a - b + c) / (2*c); 237 n.eastNorth = new EastNorth( 238 B.east() + q * (A.east() - B.east()), 239 B.north() + q * (A.north() - B.north())); 240 } 241 } 217 242 218 243 @Override public String getModeHelpText() { -
trunk/src/org/openstreetmap/josm/data/osm/NodePair.java
r343 r388 31 31 } 32 32 33 public voidsort() {33 public NodePair sort() { 34 34 if (b.hashCode() < a.hashCode()) { 35 35 Node tmp = a; … … 37 37 b = tmp; 38 38 } 39 return this; 39 40 } 40 41 }
Note:
See TracChangeset
for help on using the changeset viewer.