Class StretchedVertex
- java.lang.Object
-
- org.locationtech.jtstest.testbuilder.topostretch.StretchedVertex
-
public class StretchedVertex extends java.lang.ObjectModels a vertex of a Geometry which will be stretched due to being too near other segments and vertices.Currently for simplicity a vertex is assumed to be near only one segment or other vertex. This is sufficient for most cases.
-
-
Field Summary
Fields Modifier and Type Field Description private static doubleMAX_ARM_NEARNESS_ANGprivate intnearIndexprivate CoordinatenearPtprivate Coordinate[]nearPtsprivate LineSegmentnearSegprivate intparentIndexprivate Coordinate[]parentLineprivate static doublePOINT_LINE_FLATNESS_RATIOprivate CoordinatestretchedPtprivate CoordinatevertexPt
-
Constructor Summary
Constructors Constructor Description StretchedVertex(Coordinate vertexPt, Coordinate[] parentLine, int parentIndex, Coordinate nearPt, Coordinate[] nearPts, int nearIndex)Creates a vertex which lies near a vertexStretchedVertex(Coordinate vertexPt, Coordinate[] parentLine, int parentIndex, LineSegment nearSeg)Creates a vertex for a point which lies near a line segment
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private CoordinatedisplaceFromCorner(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)private CoordinatedisplaceFromCornerAwayFromArms(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)Displaces a vertex from a corner, with angle limiting used to ensure that the displacement is not close to the arms of the corner.private CoordinatedisplaceFromCornerOriginal(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)private CoordinatedisplaceFromFlatCorner(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)private CoordinatedisplaceFromPoint(Coordinate nearPt, double dist)private CoordinatedisplaceFromSeg(LineSegment nearSeg, double dist)private CoordinatedisplaceFromVertex(Coordinate nearPt, double dist)private CoordinategetNearRingPoint(int i)CoordinategetStretchedVertex(double dist)Gets the point which this near vertex will be stretched to (by a given distance)CoordinategetVertexCoordinate()private static booleanisFlat(Coordinate p, Coordinate p1, Coordinate p2)private booleanisInsideCorner(Coordinate queryPt, Coordinate base, Coordinate p1, Coordinate p2)private booleanisNearRing()private static doublemaxAngleToBisector(double ang)private static Vector2DnormalizedOffset(Coordinate p0, Coordinate p1, Coordinate p2)Returns an array of pts such that p0 - p[0] - [p1] is CW.private static Coordinate[]orientCorner(Coordinate p0, Coordinate p1, Coordinate p2)Returns an array of pts such that p0 - p[0] - [p1] is CW.private static intquadrant(Coordinate pt, Coordinate cornerBase, Coordinate[] corner)private static CoordinaterotateToQuadrant(Coordinate v, int quadrant)
-
-
-
Field Detail
-
vertexPt
private Coordinate vertexPt
-
parentLine
private Coordinate[] parentLine
-
parentIndex
private int parentIndex
-
nearPt
private Coordinate nearPt
-
nearPts
private Coordinate[] nearPts
-
nearIndex
private int nearIndex
-
nearSeg
private LineSegment nearSeg
-
stretchedPt
private Coordinate stretchedPt
-
MAX_ARM_NEARNESS_ANG
private static final double MAX_ARM_NEARNESS_ANG
- See Also:
- Constant Field Values
-
POINT_LINE_FLATNESS_RATIO
private static final double POINT_LINE_FLATNESS_RATIO
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
StretchedVertex
public StretchedVertex(Coordinate vertexPt, Coordinate[] parentLine, int parentIndex, Coordinate nearPt, Coordinate[] nearPts, int nearIndex)
Creates a vertex which lies near a vertex
-
StretchedVertex
public StretchedVertex(Coordinate vertexPt, Coordinate[] parentLine, int parentIndex, LineSegment nearSeg)
Creates a vertex for a point which lies near a line segment- Parameters:
vertexPt-parentLine-parentIndex-nearSeg-
-
-
Method Detail
-
getVertexCoordinate
public Coordinate getVertexCoordinate()
-
getStretchedVertex
public Coordinate getStretchedVertex(double dist)
Gets the point which this near vertex will be stretched to (by a given distance)- Parameters:
dist- the distance to adjust the point by- Returns:
- the stretched coordinate
-
isNearRing
private boolean isNearRing()
-
getNearRingPoint
private Coordinate getNearRingPoint(int i)
-
displaceFromPoint
private Coordinate displaceFromPoint(Coordinate nearPt, double dist)
-
displaceFromSeg
private Coordinate displaceFromSeg(LineSegment nearSeg, double dist)
-
displaceFromVertex
private Coordinate displaceFromVertex(Coordinate nearPt, double dist)
-
displaceFromCornerOriginal
private Coordinate displaceFromCornerOriginal(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)
-
displaceFromCorner
private Coordinate displaceFromCorner(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)
-
maxAngleToBisector
private static double maxAngleToBisector(double ang)
-
displaceFromCornerAwayFromArms
private Coordinate displaceFromCornerAwayFromArms(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)
Displaces a vertex from a corner, with angle limiting used to ensure that the displacement is not close to the arms of the corner.- Parameters:
nearPt-p1-p2-dist-- Returns:
-
isInsideCorner
private boolean isInsideCorner(Coordinate queryPt, Coordinate base, Coordinate p1, Coordinate p2)
-
isFlat
private static boolean isFlat(Coordinate p, Coordinate p1, Coordinate p2)
-
quadrant
private static int quadrant(Coordinate pt, Coordinate cornerBase, Coordinate[] corner)
- Parameters:
pt-cornerBase- the two vertices defining thecorner- the two vertices defining the arms of the corner, oriented CW- Returns:
- the quadrant the pt lies in
-
rotateToQuadrant
private static Coordinate rotateToQuadrant(Coordinate v, int quadrant)
-
orientCorner
private static Coordinate[] orientCorner(Coordinate p0, Coordinate p1, Coordinate p2)
Returns an array of pts such that p0 - p[0] - [p1] is CW.- Parameters:
p0-p1-p2-- Returns:
-
normalizedOffset
private static Vector2D normalizedOffset(Coordinate p0, Coordinate p1, Coordinate p2)
Returns an array of pts such that p0 - p[0] - [p1] is CW.- Parameters:
p0-p1-p2-- Returns:
-
displaceFromFlatCorner
private Coordinate displaceFromFlatCorner(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)
-
-