Class Vertex
- java.lang.Object
-
- org.locationtech.jts.triangulate.quadedge.Vertex
-
- Direct Known Subclasses:
ConstraintVertex
public class Vertex extends java.lang.Object
Models a site (node) in aQuadEdgeSubdivision
. The sites can be points on a line string representing a linear site.The vertex can be considered as a vector with a norm, length, inner product, cross product, etc. Additionally, point relations (e.g., is a point to the left of a line, the circle defined by this point and two others, etc.) are also defined in this class.
It is common to want to attach user-defined data to the vertices of a subdivision. One way to do this is to subclass Vertex to carry any desired information.
- Author:
- David Skea, Martin Davis
-
-
Constructor Summary
Constructors Constructor Description Vertex(double _x, double _y)
Vertex(double _x, double _y, double _z)
Vertex(Coordinate _p)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Vertex
circleCenter(Vertex b, Vertex c)
Computes the centre of the circumcircle of this vertex and two others.double
circumRadiusRatio(Vertex b, Vertex c)
Computes the value of the ratio of the circumradius to shortest edge.int
classify(Vertex p0, Vertex p1)
boolean
equals(Vertex _x)
boolean
equals(Vertex _x, double tolerance)
Coordinate
getCoordinate()
double
getX()
double
getY()
double
getZ()
static double
interpolateZ(Coordinate p, Coordinate p0, Coordinate p1)
Computes the interpolated Z-value for a point p lying on the segment p0-p1static double
interpolateZ(Coordinate p, Coordinate v0, Coordinate v1, Coordinate v2)
Interpolates the Z-value (height) of a point enclosed in a triangle whose vertices all have Z values.double
interpolateZValue(Vertex v0, Vertex v1, Vertex v2)
For this vertex enclosed in a triangle defined by three vertices v0, v1 and v2, interpolate a z value from the surrounding vertices.boolean
isCCW(Vertex b, Vertex c)
Tests whether the triangle formed by this vertex and two other vertices is in CCW orientation.boolean
isInCircle(Vertex a, Vertex b, Vertex c)
Tests if the vertex is inside the circle defined by the triangle with vertices a, b, c (oriented counter-clockwise).boolean
leftOf(QuadEdge e)
Vertex
midPoint(Vertex a)
returns a new vertex that is mid-way between this vertex and another end point.boolean
rightOf(QuadEdge e)
void
setZ(double _z)
java.lang.String
toString()
-
-
-
Field Detail
-
LEFT
public static final int LEFT
- See Also:
- Constant Field Values
-
RIGHT
public static final int RIGHT
- See Also:
- Constant Field Values
-
BEYOND
public static final int BEYOND
- See Also:
- Constant Field Values
-
BEHIND
public static final int BEHIND
- See Also:
- Constant Field Values
-
BETWEEN
public static final int BETWEEN
- See Also:
- Constant Field Values
-
ORIGIN
public static final int ORIGIN
- See Also:
- Constant Field Values
-
DESTINATION
public static final int DESTINATION
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Vertex
public Vertex(double _x, double _y)
-
Vertex
public Vertex(double _x, double _y, double _z)
-
Vertex
public Vertex(Coordinate _p)
-
-
Method Detail
-
getX
public double getX()
-
getY
public double getY()
-
getZ
public double getZ()
-
setZ
public void setZ(double _z)
-
getCoordinate
public Coordinate getCoordinate()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
equals
public boolean equals(Vertex _x)
-
equals
public boolean equals(Vertex _x, double tolerance)
-
isInCircle
public boolean isInCircle(Vertex a, Vertex b, Vertex c)
Tests if the vertex is inside the circle defined by the triangle with vertices a, b, c (oriented counter-clockwise).- Parameters:
a
- a vertex of the triangleb
- a vertex of the trianglec
- a vertex of the triangle- Returns:
- true if this vertex is in the circumcircle of (a,b,c)
-
isCCW
public final boolean isCCW(Vertex b, Vertex c)
Tests whether the triangle formed by this vertex and two other vertices is in CCW orientation.- Parameters:
b
- a vertexc
- a vertex- Returns:
- true if the triangle is oriented CCW
-
rightOf
public final boolean rightOf(QuadEdge e)
-
leftOf
public final boolean leftOf(QuadEdge e)
-
circumRadiusRatio
public double circumRadiusRatio(Vertex b, Vertex c)
Computes the value of the ratio of the circumradius to shortest edge. If smaller than some given tolerance B, the associated triangle is considered skinny. For an equal lateral triangle this value is 0.57735. The ratio is related to the minimum triangle angle theta by: circumRadius/shortestEdge = 1/(2sin(theta)).- Parameters:
b
- second vertex of the trianglec
- third vertex of the triangle- Returns:
- ratio of circumradius to shortest edge.
-
midPoint
public Vertex midPoint(Vertex a)
returns a new vertex that is mid-way between this vertex and another end point.- Parameters:
a
- the other end point.- Returns:
- the point mid-way between this and that.
-
circleCenter
public Vertex circleCenter(Vertex b, Vertex c)
Computes the centre of the circumcircle of this vertex and two others.- Parameters:
b
-c
-- Returns:
- the Coordinate which is the circumcircle of the 3 points.
-
interpolateZValue
public double interpolateZValue(Vertex v0, Vertex v1, Vertex v2)
For this vertex enclosed in a triangle defined by three vertices v0, v1 and v2, interpolate a z value from the surrounding vertices.
-
interpolateZ
public static double interpolateZ(Coordinate p, Coordinate v0, Coordinate v1, Coordinate v2)
Interpolates the Z-value (height) of a point enclosed in a triangle whose vertices all have Z values. The containing triangle must not be degenerate (in other words, the three vertices must enclose a non-zero area).- Parameters:
p
- the point to interpolate the Z value ofv0
- a vertex of a triangle containing the pv1
- a vertex of a triangle containing the pv2
- a vertex of a triangle containing the p- Returns:
- the interpolated Z-value (height) of the point
-
interpolateZ
public static double interpolateZ(Coordinate p, Coordinate p0, Coordinate p1)
Computes the interpolated Z-value for a point p lying on the segment p0-p1- Parameters:
p
-p0
-p1
-- Returns:
- the interpolated Z value
-
-