public class StretchedVertex
extends java.lang.Object
Currently for simplicity a vertex is assumed to be near only one segment or other vertex. This is sufficient for most cases.
Modifier and Type | Field and Description |
---|---|
private static double |
MAX_ARM_NEARNESS_ANG |
private int |
nearIndex |
private Coordinate |
nearPt |
private Coordinate[] |
nearPts |
private LineSegment |
nearSeg |
private int |
parentIndex |
private Coordinate[] |
parentLine |
private static double |
POINT_LINE_FLATNESS_RATIO |
private Coordinate |
stretchedPt |
private Coordinate |
vertexPt |
Constructor and Description |
---|
StretchedVertex(Coordinate vertexPt,
Coordinate[] parentLine,
int parentIndex,
Coordinate nearPt,
Coordinate[] nearPts,
int nearIndex)
Creates a vertex which lies near a vertex
|
StretchedVertex(Coordinate vertexPt,
Coordinate[] parentLine,
int parentIndex,
LineSegment nearSeg)
Creates a vertex for a point which lies near a line segment
|
Modifier and Type | Method and Description |
---|---|
private Coordinate |
displaceFromCorner(Coordinate nearPt,
Coordinate p1,
Coordinate p2,
double dist) |
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.
|
private Coordinate |
displaceFromCornerOriginal(Coordinate nearPt,
Coordinate p1,
Coordinate p2,
double dist) |
private Coordinate |
displaceFromFlatCorner(Coordinate nearPt,
Coordinate p1,
Coordinate p2,
double dist) |
private Coordinate |
displaceFromPoint(Coordinate nearPt,
double dist) |
private Coordinate |
displaceFromSeg(LineSegment nearSeg,
double dist) |
private Coordinate |
displaceFromVertex(Coordinate nearPt,
double dist) |
private Coordinate |
getNearRingPoint(int i) |
Coordinate |
getStretchedVertex(double dist)
Gets the point which this near vertex will be stretched to
(by a given distance)
|
Coordinate |
getVertexCoordinate() |
private static boolean |
isFlat(Coordinate p,
Coordinate p1,
Coordinate p2) |
private boolean |
isInsideCorner(Coordinate queryPt,
Coordinate base,
Coordinate p1,
Coordinate p2) |
private boolean |
isNearRing() |
private static double |
maxAngleToBisector(double ang) |
private static Vector2D |
normalizedOffset(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 int |
quadrant(Coordinate pt,
Coordinate cornerBase,
Coordinate[] corner) |
private static Coordinate |
rotateToQuadrant(Coordinate v,
int quadrant) |
private Coordinate vertexPt
private Coordinate[] parentLine
private int parentIndex
private Coordinate nearPt
private Coordinate[] nearPts
private int nearIndex
private LineSegment nearSeg
private Coordinate stretchedPt
private static final double MAX_ARM_NEARNESS_ANG
private static final double POINT_LINE_FLATNESS_RATIO
public StretchedVertex(Coordinate vertexPt, Coordinate[] parentLine, int parentIndex, Coordinate nearPt, Coordinate[] nearPts, int nearIndex)
public StretchedVertex(Coordinate vertexPt, Coordinate[] parentLine, int parentIndex, LineSegment nearSeg)
vertexPt
- parentLine
- parentIndex
- nearSeg
- public Coordinate getVertexCoordinate()
public Coordinate getStretchedVertex(double dist)
dist
- the distance to adjust the point byprivate boolean isNearRing()
private Coordinate getNearRingPoint(int i)
private Coordinate displaceFromPoint(Coordinate nearPt, double dist)
private Coordinate displaceFromSeg(LineSegment nearSeg, double dist)
private Coordinate displaceFromVertex(Coordinate nearPt, double dist)
private Coordinate displaceFromCornerOriginal(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)
private Coordinate displaceFromCorner(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)
private static double maxAngleToBisector(double ang)
private Coordinate displaceFromCornerAwayFromArms(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)
nearPt
- p1
- p2
- dist
- private boolean isInsideCorner(Coordinate queryPt, Coordinate base, Coordinate p1, Coordinate p2)
private static boolean isFlat(Coordinate p, Coordinate p1, Coordinate p2)
private static int quadrant(Coordinate pt, Coordinate cornerBase, Coordinate[] corner)
pt
- cornerBase
- the two vertices defining thecorner
- the two vertices defining the arms of the corner, oriented CWprivate static Coordinate rotateToQuadrant(Coordinate v, int quadrant)
private static Coordinate[] orientCorner(Coordinate p0, Coordinate p1, Coordinate p2)
p0
- p1
- p2
- private static Vector2D normalizedOffset(Coordinate p0, Coordinate p1, Coordinate p2)
p0
- p1
- p2
- private Coordinate displaceFromFlatCorner(Coordinate nearPt, Coordinate p1, Coordinate p2, double dist)