Ignore:
Timestamp:
2018-04-23T23:13:03+02:00 (8 years ago)
Author:
Don-vip
Message:

fix #16189 - Add "almost square check" for buildings (patch by marxin, modified)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/Way.java

    r13665 r13670  
    1616import org.openstreetmap.josm.spi.preferences.Config;
    1717import org.openstreetmap.josm.tools.CopyList;
     18import org.openstreetmap.josm.tools.Geometry;
    1819import org.openstreetmap.josm.tools.Pair;
    1920import org.openstreetmap.josm.tools.Utils;
     
    780781        }
    781782    }
     783
     784    /**
     785     * Returns angles of vertices.
     786     * @return angles of the way
     787     * @since 13670
     788     */
     789    public synchronized List<Pair<Double, Node>> getAngles() {
     790        List<Pair<Double, Node>> angles = new ArrayList<>();
     791
     792        for (int i = 1; i < nodes.length - 1; i++) {
     793            Node n0 = nodes[i - 1];
     794            Node n1 = nodes[i];
     795            Node n2 = nodes[i + 1];
     796
     797            double angle = Geometry.getNormalizedAngleInDegrees(Geometry.getCornerAngle(
     798                    n0.getEastNorth(), n1.getEastNorth(), n2.getEastNorth()));
     799            angles.add(new Pair<>(angle, n1));
     800        }
     801
     802        angles.add(new Pair<>(Geometry.getNormalizedAngleInDegrees(Geometry.getCornerAngle(
     803                nodes[nodes.length - 2].getEastNorth(),
     804                nodes[0].getEastNorth(),
     805                nodes[1].getEastNorth())), nodes[0]));
     806
     807        return angles;
     808    }
    782809}
Note: See TracChangeset for help on using the changeset viewer.