Class QuadEdgeTriangle

java.lang.Object
org.locationtech.jts.triangulate.quadedge.QuadEdgeTriangle

public class QuadEdgeTriangle extends Object
Models a triangle formed from QuadEdges in a QuadEdgeSubdivision which forms a triangulation. The class provides methods to access the topological and geometric properties of the triangle and its neighbours in the triangulation. Triangle vertices are ordered in CCW orientation in the structure.

QuadEdgeTriangles support having an external data attribute attached to them. Alternatively, this class can be subclassed and attributes can be defined in the subclass. Subclasses will need to define their own BuilderVisitor class and createOn method.

Version:
1.0
Author:
Martin Davis
  • Constructor Details

    • QuadEdgeTriangle

      public QuadEdgeTriangle(QuadEdge[] edge)
      Creates a new triangle from the given edges.
      Parameters:
      edge - an array of the edges of the triangle in CCW order
  • Method Details

    • createOn

      public static List createOn(QuadEdgeSubdivision subdiv)
      Creates QuadEdgeTriangles for all facets of a QuadEdgeSubdivision representing a triangulation. The data attributes of the QuadEdges in the subdivision will be set to point to the triangle which contains that edge. This allows tracing the neighbour triangles of any given triangle.
      Parameters:
      subdiv - the QuadEdgeSubdivision to create the triangles on.
      Returns:
      a List of the created QuadEdgeTriangles
    • contains

      public static boolean contains(Vertex[] tri, Coordinate pt)
      Tests whether the point pt is contained in the triangle defined by 3 Vertexes.
      Parameters:
      tri - an array containing at least 3 Vertexes
      pt - the point to test
      Returns:
      true if the point is contained in the triangle
    • contains

      public static boolean contains(QuadEdge[] tri, Coordinate pt)
      Tests whether the point pt is contained in the triangle defined by 3 QuadEdgees.
      Parameters:
      tri - an array containing at least 3 QuadEdges
      pt - the point to test
      Returns:
      true if the point is contained in the triangle
    • toPolygon

      public static Geometry toPolygon(Vertex[] v)
    • toPolygon

      public static Geometry toPolygon(QuadEdge[] e)
    • nextIndex

      public static int nextIndex(int index)
      Finds the next index around the triangle. Index may be an edge or vertex index.
      Parameters:
      index -
      Returns:
      the next index
    • setData

      public void setData(Object data)
      Sets the external data value for this triangle.
      Parameters:
      data - an object containing external data
    • getData

      public Object getData()
      Gets the external data value for this triangle.
      Returns:
      the data object
    • kill

      public void kill()
    • isLive

      public boolean isLive()
    • getEdges

      public QuadEdge[] getEdges()
    • getEdge

      public QuadEdge getEdge(int i)
    • getVertex

      public Vertex getVertex(int i)
    • getVertices

      public Vertex[] getVertices()
      Gets the vertices for this triangle.
      Returns:
      a new array containing the triangle vertices
    • getCoordinate

      public Coordinate getCoordinate(int i)
    • getEdgeIndex

      public int getEdgeIndex(QuadEdge e)
      Gets the index for the given edge of this triangle
      Parameters:
      e - a QuadEdge
      Returns:
      the index of the edge in this triangle or -1 if the edge is not an edge of this triangle
    • getEdgeIndex

      public int getEdgeIndex(Vertex v)
      Gets the index for the edge that starts at vertex v.
      Parameters:
      v - the vertex to find the edge for
      Returns:
      the index of the edge starting at the vertex or -1 if the vertex is not in the triangle
    • getEdgeSegment

      public void getEdgeSegment(int i, LineSegment seg)
    • getCoordinates

      public Coordinate[] getCoordinates()
    • contains

      public boolean contains(Coordinate pt)
    • getGeometry

      public Polygon getGeometry(GeometryFactory fact)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • isBorder

      public boolean isBorder()
      Tests whether this triangle is adjacent to the outside of the subdivision.
      Returns:
      true if the triangle is adjacent to the subdivision exterior
    • isBorder

      public boolean isBorder(int i)
    • getAdjacentTriangleAcrossEdge

      public QuadEdgeTriangle getAdjacentTriangleAcrossEdge(int edgeIndex)
    • getAdjacentTriangleEdgeIndex

      public int getAdjacentTriangleEdgeIndex(int i)
    • getTrianglesAdjacentToVertex

      public List getTrianglesAdjacentToVertex(int vertexIndex)
      Gets the triangles which are adjacent (include) to a given vertex of this triangle.
      Parameters:
      vertexIndex - the vertex to query
      Returns:
      a list of the vertex-adjacent triangles
    • getNeighbours

      public QuadEdgeTriangle[] getNeighbours()
      Gets the neighbours of this triangle. If there is no neighbour triangle, the array element is null
      Returns:
      an array containing the 3 neighbours of this triangle