Search in sources :

Example 6 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class VertexHausdorffDistance method computeMaxPointDistance.

private void computeMaxPointDistance(final Geometry pointGeometry, final Geometry geometry, final PointPairDistance pointDistance) {
    pointDistance.setMaximum(pointDistance);
    final PointPairDistance maxPointDist = new PointPairDistance();
    final PointPairDistance minPointDist = new PointPairDistance();
    for (final Vertex vertex : pointGeometry.vertices()) {
        minPointDist.initialize();
        final double x = vertex.getX();
        final double y = vertex.getY();
        minPointDist.setMinimum(geometry, x, y);
        maxPointDist.setMaximum(minPointDist);
    }
    pointDistance.setMaximum(maxPointDist);
}
Also used : PointPairDistance(com.revolsys.geometry.algorithm.distance.PointPairDistance) Vertex(com.revolsys.geometry.model.vertex.Vertex)

Example 7 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class DiscreteHausdorffDistance method computeOrientedDistance.

private void computeOrientedDistance(final Geometry discreteGeom, final Geometry geom, final PointPairDistance ptDist) {
    final PointPairDistance maxPtDist = new PointPairDistance();
    final PointPairDistance minPtDist = new PointPairDistance();
    for (final Vertex vertex : discreteGeom.vertices()) {
        minPtDist.initialize();
        DistanceToPoint.computeDistance(geom, vertex, minPtDist);
        maxPtDist.setMaximum(minPtDist);
    }
    ptDist.setMaximum(maxPtDist);
    if (this.densifyFrac > 0) {
        maxPtDist.initialize();
        final int numSubSegs = 0;
        for (final Segment segment : discreteGeom.segments()) {
            final double x1 = segment.getX(0);
            final double y1 = segment.getY(0);
            final double x2 = segment.getX(1);
            final double y2 = segment.getY(1);
            final double delx = (x2 - x1) / numSubSegs;
            final double dely = (y2 - y1) / numSubSegs;
            for (int i = 0; i < numSubSegs; i++) {
                final double x = x1 + i * delx;
                final double y = y1 + i * dely;
                final Point pt = new PointDoubleXY(x, y);
                minPtDist.initialize();
                DistanceToPoint.computeDistance(geom, pt, minPtDist);
                maxPtDist.setMaximum(minPtDist);
            }
        }
        ptDist.setMaximum(maxPtDist);
    }
}
Also used : Vertex(com.revolsys.geometry.model.vertex.Vertex) Point(com.revolsys.geometry.model.Point) PointDoubleXY(com.revolsys.geometry.model.impl.PointDoubleXY) Point(com.revolsys.geometry.model.Point) Segment(com.revolsys.geometry.model.segment.Segment)

Example 8 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class GeometryVertexQuadTree method intersectsBounds.

@Override
protected boolean intersectsBounds(final Object id, final double minX, final double minY, final double maxX, final double maxY) {
    final Vertex vertex = getItem(id);
    if (vertex == null) {
        return false;
    } else {
        final double x = vertex.getX();
        final double y = vertex.getY();
        return RectangleUtil.intersects(minX, minY, maxX, maxY, x, y);
    }
}
Also used : Vertex(com.revolsys.geometry.model.vertex.Vertex)

Example 9 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class LineString method normalize.

/**
 * Normalizes a LineString. A normalized linestring has the first point which
 * is not equal to it's reflected point less than the reflected point.
 */
@Override
default LineString normalize() {
    final int vertexCount = getVertexCount();
    for (int i = 0; i < vertexCount / 2; i++) {
        final int j = vertexCount - 1 - i;
        final Vertex point1 = getVertex(i);
        final Vertex point2 = getVertex(j);
        // skip equal points on both ends
        if (!point1.equals(2, point2)) {
            if (point1.compareTo(point2) > 0) {
                return reverse();
            }
            return this;
        }
    }
    return this;
}
Also used : Vertex(com.revolsys.geometry.model.vertex.Vertex) LineStringVertex(com.revolsys.geometry.model.vertex.LineStringVertex) AbstractVertex(com.revolsys.geometry.model.vertex.AbstractVertex)

Example 10 with Vertex

use of com.revolsys.geometry.model.vertex.Vertex in project com.revolsys.open by revolsys.

the class LineString method compareToSameClass.

@Override
default int compareToSameClass(final Geometry geometry) {
    final LineString line2 = (LineString) geometry;
    final Iterator<Vertex> iterator1 = vertices().iterator();
    final Iterator<Vertex> iterator2 = line2.vertices().iterator();
    while (iterator1.hasNext() && iterator2.hasNext()) {
        final Point vertex1 = iterator1.next();
        final Point vertex2 = iterator2.next();
        final int comparison = vertex1.compareTo(vertex2);
        if (comparison != 0) {
            return comparison;
        }
    }
    if (iterator1.hasNext()) {
        return 1;
    } else if (iterator2.hasNext()) {
        return -1;
    } else {
        return 0;
    }
}
Also used : Vertex(com.revolsys.geometry.model.vertex.Vertex) LineStringVertex(com.revolsys.geometry.model.vertex.LineStringVertex) AbstractVertex(com.revolsys.geometry.model.vertex.AbstractVertex) PreparedLineString(com.revolsys.geometry.model.prep.PreparedLineString)

Aggregations

Vertex (com.revolsys.geometry.model.vertex.Vertex)42 Point (com.revolsys.geometry.model.Point)18 Geometry (com.revolsys.geometry.model.Geometry)16 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)14 LineString (com.revolsys.geometry.model.LineString)10 Polygon (com.revolsys.geometry.model.Polygon)6 Segment (com.revolsys.geometry.model.segment.Segment)6 ArrayList (java.util.ArrayList)6 GeometryEditor (com.revolsys.geometry.model.editor.GeometryEditor)4 AbstractVertex (com.revolsys.geometry.model.vertex.AbstractVertex)4 LineStringVertex (com.revolsys.geometry.model.vertex.LineStringVertex)4 BaseCloseable (com.revolsys.io.BaseCloseable)4 CloseLocation (com.revolsys.swing.map.overlay.CloseLocation)4 DataType (com.revolsys.datatype.DataType)3 LinearRing (com.revolsys.geometry.model.LinearRing)3 PointDoubleXY (com.revolsys.geometry.model.impl.PointDoubleXY)3 LineSegment (com.revolsys.geometry.model.segment.LineSegment)3 MapPanel (com.revolsys.swing.map.MapPanel)3 WebColors (com.revolsys.awt.WebColors)2 Maps (com.revolsys.collection.map.Maps)2