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);
}
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);
}
}
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);
}
}
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;
}
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;
}
}
Aggregations