Changeset 8449 in josm for trunk/src/org/openstreetmap/josm/tools
- Timestamp:
- 2015-06-03T00:46:40+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/Geometry.java
r8443 r8449 70 70 71 71 //copy node arrays for local usage. 72 for (int pos = 0; pos < n; pos 72 for (int pos = 0; pos < n; pos++) { 73 73 newNodes[pos] = new ArrayList<>(ways.get(pos).getNodes()); 74 74 wayBounds[pos] = getNodesBounds(newNodes[pos]); … … 78 78 //iterate over all way pairs and introduce the intersections 79 79 Comparator<Node> coordsComparator = new NodePositionComparator(); 80 for (int seg1Way = 0; seg1Way < n; seg1Way 81 for (int seg2Way = seg1Way; seg2Way < n; seg2Way 80 for (int seg1Way = 0; seg1Way < n; seg1Way++) { 81 for (int seg2Way = seg1Way; seg2Way < n; seg2Way++) { 82 82 83 83 //do not waste time on bounds that do not intersect … … 90 90 91 91 //iterate over primary segmemt 92 for (int seg1Pos = 0; seg1Pos + 1 < way1Nodes.size(); seg1Pos 92 for (int seg1Pos = 0; seg1Pos + 1 < way1Nodes.size(); seg1Pos++) { 93 93 94 94 //iterate over secondary segment 95 95 int seg2Start = seg1Way != seg2Way ? 0: seg1Pos + 2;//skip the adjacent segment 96 96 97 for (int seg2Pos = seg2Start; seg2Pos + 1< way2Nodes.size(); seg2Pos 97 for (int seg2Pos = seg2Start; seg2Pos + 1< way2Nodes.size(); seg2Pos++) { 98 98 99 99 //need to get them again every time, because other segments may be changed … … 106 106 //test if we have common nodes to add. 107 107 if (seg1Node1 == seg2Node1 || seg1Node1 == seg2Node2) { 108 commonCount 108 commonCount++; 109 109 110 110 if (seg1Way == seg2Way && … … 118 118 119 119 if (seg1Node2 == seg2Node1 || seg1Node2 == seg2Node2) { 120 commonCount 120 commonCount++; 121 121 122 122 intersectionNodes.add(seg1Node2); … … 165 165 //fix seg2 position, as indexes have changed, seg2Pos is always bigger than seg1Pos on the same segment. 166 166 if (seg2Way == seg1Way) { 167 seg2Pos 167 seg2Pos++; 168 168 } 169 169 } … … 174 174 175 175 //Do not need to compare again to already split segment 176 seg2Pos 176 seg2Pos++; 177 177 } 178 178 … … 191 191 192 192 193 for (int pos = 0; pos < ways.size(); pos 193 for (int pos = 0; pos < ways.size(); pos++) { 194 194 if (!changedWays[pos]) { 195 195 continue; … … 292 292 double det = a1*b2 - a2*b1; 293 293 294 double uu = b2*c1 - b1*c2 294 double uu = b2*c1 - b1*c2; 295 295 double vv = a1*c2 - a2*c1; 296 296 double mag = Math.abs(uu)+Math.abs(vv);
Note:
See TracChangeset
for help on using the changeset viewer.