Package org.opencv.imgproc

## Class Subdiv2D

- java.lang.Object
- - org.opencv.imgproc.Subdiv2D

-     public class Subdiv2D
      extends java.lang.Object

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected long` | `nativeObj` |
    `static int` | `NEXT_AROUND_DST` |
    `static int` | `NEXT_AROUND_LEFT` |
    `static int` | `NEXT_AROUND_ORG` |
    `static int` | `NEXT_AROUND_RIGHT` |
    `static int` | `PREV_AROUND_DST` |
    `static int` | `PREV_AROUND_LEFT` |
    `static int` | `PREV_AROUND_ORG` |
    `static int` | `PREV_AROUND_RIGHT` |
    `static int` | `PTLOC_ERROR` |
    `static int` | `PTLOC_INSIDE` |
    `static int` | `PTLOC_ON_EDGE` |
    `static int` | `PTLOC_OUTSIDE_RECT` |
    `static int` | `PTLOC_VERTEX` |

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `` | `Subdiv2D()` | creates an empty Subdiv2D object.
    `protected` | `Subdiv2D​(long addr)` |
    `` | `Subdiv2D​(Rect rect)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Subdiv2D` | `__fromPtr__​(long addr)` |
    `int` | `edgeDst​(int edge)` | Returns the edge destination.
    `int` | `edgeDst​(int edge, Point dstpt)` | Returns the edge destination.
    `int` | `edgeOrg​(int edge)` | Returns the edge origin.
    `int` | `edgeOrg​(int edge, Point orgpt)` | Returns the edge origin.
    `protected void` | `finalize()` |
    `int` | `findNearest​(Point pt)` | Finds the subdivision vertex closest to the given point.
    `int` | `findNearest​(Point pt, Point nearestPt)` | Finds the subdivision vertex closest to the given point.
    `int` | `getEdge​(int edge, int nextEdgeType)` | Returns one of the edges related to the given edge.
    `void` | `getEdgeList​(MatOfFloat4 edgeList)` | Returns a list of all edges.
    `void` | `getLeadingEdgeList​(MatOfInt leadingEdgeList)` | Returns a list of the leading edge ID connected to each triangle.
    `long` | `getNativeObjAddr()` |
    `void` | `getTriangleList​(MatOfFloat6 triangleList)` | Returns a list of all triangles.
    `Point` | `getVertex​(int vertex)` | Returns vertex location from vertex ID.
    `Point` | `getVertex​(int vertex, int[] firstEdge)` | Returns vertex location from vertex ID.
    `void` | `getVoronoiFacetList​(MatOfInt idx, java.util.List<MatOfPoint2f> facetList, MatOfPoint2f facetCenters)` | Returns a list of all Voronoi facets.
    `void` | `initDelaunay​(Rect rect)` | Creates a new empty Delaunay subdivision
    `void` | `insert​(MatOfPoint2f ptvec)` | Insert multiple points into a Delaunay triangulation.
    `int` | `insert​(Point pt)` | Insert a single point into a Delaunay triangulation.
    `int` | `locate​(Point pt, int[] edge, int[] vertex)` | Returns the location of a point within a Delaunay triangulation.
    `int` | `nextEdge​(int edge)` | Returns next edge around the edge origin.
    `int` | `rotateEdge​(int edge, int rotate)` | Returns another edge of the same quad-edge.
    `int` | `symEdge​(int edge)` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### nativeObj

          protected final long nativeObj

    - #### PTLOC_ERROR

          public static final int PTLOC_ERROR

      See Also:
        Constant Field Values

    - #### PTLOC_OUTSIDE_RECT

          public static final int PTLOC_OUTSIDE_RECT

      See Also:
        Constant Field Values

    - #### PTLOC_INSIDE

          public static final int PTLOC_INSIDE

      See Also:
        Constant Field Values

    - #### PTLOC_VERTEX

          public static final int PTLOC_VERTEX

      See Also:
        Constant Field Values

    - #### PTLOC_ON_EDGE

          public static final int PTLOC_ON_EDGE

      See Also:
        Constant Field Values

    - #### NEXT_AROUND_ORG

          public static final int NEXT_AROUND_ORG

      See Also:
        Constant Field Values

    - #### NEXT_AROUND_DST

          public static final int NEXT_AROUND_DST

      See Also:
        Constant Field Values

    - #### PREV_AROUND_ORG

          public static final int PREV_AROUND_ORG

      See Also:
        Constant Field Values

    - #### PREV_AROUND_DST

          public static final int PREV_AROUND_DST

      See Also:
        Constant Field Values

    - #### NEXT_AROUND_LEFT

          public static final int NEXT_AROUND_LEFT

      See Also:
        Constant Field Values

    - #### NEXT_AROUND_RIGHT

          public static final int NEXT_AROUND_RIGHT

      See Also:
        Constant Field Values

    - #### PREV_AROUND_LEFT

          public static final int PREV_AROUND_LEFT

      See Also:
        Constant Field Values

    - #### PREV_AROUND_RIGHT

          public static final int PREV_AROUND_RIGHT

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Subdiv2D

          protected Subdiv2D​(long addr)

    - #### Subdiv2D

          public Subdiv2D​(Rect rect)

      Parameters:
        `rect` - Rectangle that includes all of the 2D points that are to be added to the subdivision. The function creates an empty Delaunay subdivision where 2D points can be added using the function insert() . All of the points to be added must be within the specified rectangle, otherwise a runtime error is raised.

    - #### Subdiv2D

          public Subdiv2D()

      creates an empty Subdiv2D object. To create a new empty Delaunay subdivision you need to use the #initDelaunay function.

  - ### Method Detail

    - #### getNativeObjAddr

          public long getNativeObjAddr()

    - #### __fromPtr__

          public static Subdiv2D __fromPtr__​(long addr)

    - #### getVertex

          public Point getVertex​(int vertex,
                                 int[] firstEdge)

      Returns vertex location from vertex ID.
      Parameters:
        `vertex` - vertex ID.
        `firstEdge` - Optional. The first edge ID which is connected to the vertex.
      Returns:
        vertex (x,y)

    - #### getVertex

          public Point getVertex​(int vertex)

      Returns vertex location from vertex ID.
      Parameters:
        `vertex` - vertex ID.
      Returns:
        vertex (x,y)

    - #### edgeDst

          public int edgeDst​(int edge,
                             Point dstpt)

      Returns the edge destination.
      Parameters:
        `edge` - Subdivision edge ID.
        `dstpt` - Output vertex location.
      Returns:
        vertex ID.

    - #### edgeDst

          public int edgeDst​(int edge)

      Returns the edge destination.
      Parameters:
        `edge` - Subdivision edge ID.
      Returns:
        vertex ID.

    - #### edgeOrg

          public int edgeOrg​(int edge,
                             Point orgpt)

      Returns the edge origin.
      Parameters:
        `edge` - Subdivision edge ID.
        `orgpt` - Output vertex location.
      Returns:
        vertex ID.

    - #### edgeOrg

          public int edgeOrg​(int edge)

      Returns the edge origin.
      Parameters:
        `edge` - Subdivision edge ID.
      Returns:
        vertex ID.

    - #### findNearest

          public int findNearest​(Point pt,
                                 Point nearestPt)

      Finds the subdivision vertex closest to the given point.
      Parameters:
        `pt` - Input point.
        `nearestPt` - Output subdivision vertex point. The function is another function that locates the input point within the subdivision. It finds the subdivision vertex that is the closest to the input point. It is not necessarily one of vertices of the facet containing the input point, though the facet (located using locate() ) is used as a starting point.
      Returns:
        vertex ID.

    - #### findNearest

          public int findNearest​(Point pt)

      Finds the subdivision vertex closest to the given point.
      Parameters:
        `pt` - Input point. The function is another function that locates the input point within the subdivision. It finds the subdivision vertex that is the closest to the input point. It is not necessarily one of vertices of the facet containing the input point, though the facet (located using locate() ) is used as a starting point.
      Returns:
        vertex ID.

    - #### getEdge

          public int getEdge​(int edge,
                             int nextEdgeType)

      Returns one of the edges related to the given edge.
      Parameters:
        `edge` - Subdivision edge ID.
        `nextEdgeType` - Parameter specifying which of the related edges to return. The following values are possible:
        - NEXT_AROUND_ORG next around the edge origin ( eOnext on the picture below if e is the input edge)
        - NEXT_AROUND_DST next around the edge vertex ( eDnext )
        - PREV_AROUND_ORG previous around the edge origin (reversed eRnext )
        - PREV_AROUND_DST previous around the edge destination (reversed eLnext )
        - NEXT_AROUND_LEFT next around the left facet ( eLnext )
        - NEXT_AROUND_RIGHT next around the right facet ( eRnext )
        - PREV_AROUND_LEFT previous around the left facet (reversed eOnext )
        - PREV_AROUND_RIGHT previous around the right facet (reversed eDnext )
        ![sample output](pics/quadedge.png)
      Returns:
        edge ID related to the input edge.

    - #### insert

          public int insert​(Point pt)

      Insert a single point into a Delaunay triangulation.
      Parameters:
        `pt` - Point to insert. The function inserts a single point into a subdivision and modifies the subdivision topology appropriately. If a point with the same coordinates exists already, no new point is added.
      Returns:
        the ID of the point. Note: If the point is outside of the triangulation specified rect a runtime error is raised.

    - #### locate

          public int locate​(Point pt,
                            int[] edge,
                            int[] vertex)

      Returns the location of a point within a Delaunay triangulation.
      Parameters:
        `pt` - Point to locate.
        `edge` - Output edge that the point belongs to or is located to the right of it.
        `vertex` - Optional output vertex the input point coincides with. The function locates the input point within the subdivision and gives one of the triangle edges or vertices.
      Returns:
        an integer which specify one of the following five cases for point location:
        - The point falls into some facet. The function returns #PTLOC_INSIDE and edge will contain one of edges of the facet.
        - The point falls onto the edge. The function returns #PTLOC_ON_EDGE and edge will contain this edge.
        - The point coincides with one of the subdivision vertices. The function returns #PTLOC_VERTEX and vertex will contain a pointer to the vertex.
        - The point is outside the subdivision reference rectangle. The function returns #PTLOC_OUTSIDE_RECT and no pointers are filled.
        - One of input arguments is invalid. A runtime error is raised or, if silent or "parent" error processing mode is selected, #PTLOC_ERROR is returned.

    - #### nextEdge

          public int nextEdge​(int edge)

      Returns next edge around the edge origin.
      Parameters:
        `edge` - Subdivision edge ID.
      Returns:
        an integer which is next edge ID around the edge origin: eOnext on the picture above if e is the input edge).

    - #### rotateEdge

          public int rotateEdge​(int edge,
                                int rotate)

      Returns another edge of the same quad-edge.
      Parameters:
        `edge` - Subdivision edge ID.
        `rotate` - Parameter specifying which of the edges of the same quad-edge as the input one to return. The following values are possible:
        - 0 - the input edge ( e on the picture below if e is the input edge)
        - 1 - the rotated edge ( eRot )
        - 2 - the reversed edge (reversed e (in green))
        - 3 - the reversed rotated edge (reversed eRot (in green))
      Returns:
        one of the edges ID of the same quad-edge as the input edge.

    - #### symEdge

          public int symEdge​(int edge)

    - #### getEdgeList

          public void getEdgeList​(MatOfFloat4 edgeList)

      Returns a list of all edges.
      Parameters:
        `edgeList` - Output vector. The function gives each edge as a 4 numbers vector, where each two are one of the edge vertices. i.e. org_x = v[0], org_y = v[1], dst_x = v[2], dst_y = v[3].

    - #### getLeadingEdgeList

          public void getLeadingEdgeList​(MatOfInt leadingEdgeList)

      Returns a list of the leading edge ID connected to each triangle.
      Parameters:
        `leadingEdgeList` - Output vector. The function gives one edge ID for each triangle.

    - #### getTriangleList

          public void getTriangleList​(MatOfFloat6 triangleList)

      Returns a list of all triangles.
      Parameters:
        `triangleList` - Output vector. The function gives each triangle as a 6 numbers vector, where each two are one of the triangle vertices. i.e. p1_x = v[0], p1_y = v[1], p2_x = v[2], p2_y = v[3], p3_x = v[4], p3_y = v[5].

    - #### getVoronoiFacetList

          public void getVoronoiFacetList​(MatOfInt idx,
                                          java.util.List<MatOfPoint2f> facetList,
                                          MatOfPoint2f facetCenters)

      Returns a list of all Voronoi facets.
      Parameters:
        `idx` - Vector of vertices IDs to consider. For all vertices you can pass empty vector.
        `facetList` - Output vector of the Voronoi facets.
        `facetCenters` - Output vector of the Voronoi facets center points.

    - #### initDelaunay

          public void initDelaunay​(Rect rect)

      Creates a new empty Delaunay subdivision
      Parameters:
        `rect` - Rectangle that includes all of the 2D points that are to be added to the subdivision.

    - #### insert

          public void insert​(MatOfPoint2f ptvec)

      Insert multiple points into a Delaunay triangulation.
      Parameters:
        `ptvec` - Points to insert. The function inserts a vector of points into a subdivision and modifies the subdivision topology appropriately.

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable`