Search in sources :

Example 1 with Side

use of com.revolsys.geometry.model.Side in project com.revolsys.open by revolsys.

the class QuadEdgeDelaunayTinBuilder method getTriangleEdges.

public final List<QuadEdge> getTriangleEdges(final double x, final double y) {
    final QuadEdgeSubdivision subdivision = getSubdivision();
    final QuadEdge edge1 = subdivision.findQuadEdge(x, y);
    final Side side = edge1.getSide(x, y);
    final QuadEdge edge2;
    final QuadEdge edge3;
    if (side.isLeft()) {
        edge2 = edge1.getLeftNext();
        edge3 = edge1.getLeftPrevious();
    } else {
        edge2 = edge1.getRightNext();
        edge3 = edge1.getRightPrevious();
    }
    return Lists.newArray(edge1, edge2, edge3);
}
Also used : Side(com.revolsys.geometry.model.Side)

Example 2 with Side

use of com.revolsys.geometry.model.Side in project com.revolsys.open by revolsys.

the class QuadEdge method isSwapRequired.

public boolean isSwapRequired(final int x, final int y) {
    final QuadEdge previousEdge = oPrev();
    final PointIntXYZ previousToPoint = previousEdge.getToPoint();
    final int previousToX = previousToPoint.getX();
    final int previousToY = previousToPoint.getY();
    final PointIntXYZ fromPoint = this.fromPoint;
    final int fromX = fromPoint.getX();
    final int fromY = fromPoint.getY();
    final PointIntXYZ toPoint = getToPoint();
    final int toX = toPoint.getX();
    final int toY = toPoint.getY();
    final Side side = Side.getSide(fromX, fromY, toX, toY, previousToX, previousToY);
    if (side == Side.RIGHT) {
        final long deltaX1 = fromX - x;
        final long deltaY1 = fromY - y;
        final long deltaX2 = previousToX - x;
        final long deltaY2 = previousToY - y;
        final long deltaX3 = toX - x;
        final long deltaY3 = toY - y;
        final double abdet = deltaX1 * deltaY2 - deltaX2 * deltaY1;
        final double bcdet = deltaX2 * deltaY3 - deltaX3 * deltaY2;
        final double cadet = deltaX3 * deltaY1 - deltaX1 * deltaY3;
        final double alift = deltaX1 * deltaX1 + deltaY1 * deltaY1;
        final double blift = deltaX2 * deltaX2 + deltaY2 * deltaY2;
        final double clift = deltaX3 * deltaX3 + deltaY3 * deltaY3;
        final double disc = alift * bcdet + blift * cadet + clift * abdet;
        final boolean inCircle = disc > 0;
        if (inCircle) {
            return true;
        }
    }
    return false;
}
Also used : Side(com.revolsys.geometry.model.Side)

Example 3 with Side

use of com.revolsys.geometry.model.Side in project com.revolsys.open by revolsys.

the class LineStringTest method assertDistanceAlong.

private static void assertDistanceAlong(final double distanceAlong, final double distance, final double x, final double y, final Side side, final double... coordinates) {
    final GeometryFactory geometryFactory = GeometryFactory.worldMercator().convertAxisCount(2);
    final Point point = geometryFactory.point(x, y);
    final LineString line = geometryFactory.lineString(2, coordinates);
    final double actual = line.distanceAlong(point);
    Assert.assertEquals("Distance Along", distanceAlong, actual, 0.0000001);
    final PointLineStringMetrics metrics = line.getMetrics(point);
    Assert.assertEquals("Metrics Distance Along", distanceAlong, metrics.getDistanceAlong(), 0.0000001);
    Assert.assertEquals("Metrics Distance", distance, metrics.getDistance(), 0.0000001);
    Assert.assertEquals("Metrics Side", side, metrics.getSide());
    Assert.assertEquals("Metrics Length", line.getLength(), metrics.getLineLength(), 0.0000001);
    Assert.assertEquals("Distance Along -> Metrics", distanceAlong, metrics.getDistanceAlong(), 0.0000001);
    if (side != null) {
        final Side reverseSide = Side.opposite(side);
        final LineString reverseLine = line.reverse();
        final PointLineStringMetrics reverseMetrics = reverseLine.getMetrics(point);
        Assert.assertEquals("Reverse Metrics Side", reverseSide, reverseMetrics.getSide());
    }
}
Also used : Side(com.revolsys.geometry.model.Side) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) LineString(com.revolsys.geometry.model.LineString) PointLineStringMetrics(com.revolsys.geometry.model.metrics.PointLineStringMetrics) Point(com.revolsys.geometry.model.Point)

Aggregations

Side (com.revolsys.geometry.model.Side)3 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)1 LineString (com.revolsys.geometry.model.LineString)1 Point (com.revolsys.geometry.model.Point)1 PointLineStringMetrics (com.revolsys.geometry.model.metrics.PointLineStringMetrics)1