类 Subdiv2D


  • public class Subdiv2D
    extends java.lang.Object
    • 字段详细信息

      • nativeObj

        protected final long nativeObj
      • PTLOC_OUTSIDE_RECT

        public static final int PTLOC_OUTSIDE_RECT
        参见
        常量字段值
      • PTLOC_INSIDE

        public static final int PTLOC_INSIDE
        参见
        常量字段值
      • PTLOC_VERTEX

        public static final int PTLOC_VERTEX
        参见
        常量字段值
      • PTLOC_ON_EDGE

        public static final int PTLOC_ON_EDGE
        参见
        常量字段值
      • NEXT_AROUND_ORG

        public static final int NEXT_AROUND_ORG
        参见
        常量字段值
      • NEXT_AROUND_DST

        public static final int NEXT_AROUND_DST
        参见
        常量字段值
      • PREV_AROUND_ORG

        public static final int PREV_AROUND_ORG
        参见
        常量字段值
      • PREV_AROUND_DST

        public static final int PREV_AROUND_DST
        参见
        常量字段值
      • NEXT_AROUND_LEFT

        public static final int NEXT_AROUND_LEFT
        参见
        常量字段值
      • NEXT_AROUND_RIGHT

        public static final int NEXT_AROUND_RIGHT
        参见
        常量字段值
      • PREV_AROUND_LEFT

        public static final int PREV_AROUND_LEFT
        参见
        常量字段值
      • PREV_AROUND_RIGHT

        public static final int PREV_AROUND_RIGHT
        参见
        常量字段值
    • 构造函数详细信息

      • Subdiv2D

        protected Subdiv2D​(long addr)
      • Subdiv2D

        public Subdiv2D()
        创建空的 Subdiv2D 对象。要创建新的空 Delaunay 细分,您需要使用 #initDelaunay 函数。
      • Subdiv2D

        public Subdiv2D​(Rect rect)
        参数
        rect - 包含要添加到细分中的所有 2D 点的矩形。 该函数创建一个空的 Delaunay 细分,可以使用 insert() 函数添加 2D 点。 要添加的所有点必须在指定的矩形内,否则会引发运行时错误。
    • 方法详细信息

      • getNativeObjAddr

        public long getNativeObjAddr()
      • __fromPtr__

        public static Subdiv2D __fromPtr__​(long addr)
      • initDelaunay

        public void initDelaunay​(Rect rect)
        创建一个新的空 Delaunay 细分
        参数
        rect - 包含要添加到细分中的所有 2D 点的矩形。
      • insert

        public int insert​(Point pt)
        将单个点插入到 Delaunay 三角剖分中。
        参数
        pt - 要插入的点。 该函数将单个点插入细分中,并适当修改细分拓扑。 如果已存在具有相同坐标的点,则不会添加新点。
        返回
        点的 ID。 注意:如果点在指定的三角形外部,则会引发运行时错误。
      • insert

        public void insert​(MatOfPoint2f ptvec)
        将多个点插入到 Delaunay 三角剖分中。
        参数
        ptvec - 要插入的点。 该函数将一个点向量插入细分中,并适当修改细分拓扑。
      • locate

        public int locate​(Point pt,
                          int[] edge,
                          int[] vertex)
        返回 Delaunay 三角剖分中点的位置。
        参数
        pt - 要定位的点。
        edge - 该点所属或位于其右侧的输出边。
        vertex - 可选的输出顶点,输入点与其重合。 该函数在细分中定位输入点,并给出三角形的边或顶点之一。
        返回
        一个整数,指定点位置的以下五种情况之一
        • 该点落入某个面片中。 该函数返回 #PTLOC_INSIDE,并且 edge 将包含面片的边之一。
        • 该点落在边上。 该函数返回 #PTLOC_ON_EDGE,并且 edge 将包含此边。
        • 该点与细分顶点之一重合。 该函数返回 #PTLOC_VERTEX,并且 vertex 将包含指向该顶点的指针。
        • 该点位于细分参考矩形之外。 该函数返回 #PTLOC_OUTSIDE_RECT,并且不填充任何指针。
        • 输入参数之一无效。 将引发运行时错误,或者,如果选择静默或“父”错误处理模式,则返回 #PTLOC_ERROR。
      • findNearest

        public int findNearest​(Point pt,
                               Point nearestPt)
        查找最接近给定点的细分顶点。
        参数
        pt - 输入点。
        nearestPt - 输出细分顶点。 该函数是另一个在细分中定位输入点的函数。 它找到最接近输入点的细分顶点。 它不一定是包含输入点的面片的顶点之一,尽管面片(使用 locate() 定位)用作起点。
        返回
        顶点 ID。
      • findNearest

        public int findNearest​(Point pt)
        查找最接近给定点的细分顶点。
        参数
        pt - 输入点。 该函数是另一个在细分中定位输入点的函数。 它找到最接近输入点的细分顶点。 它不一定是包含输入点的面片的顶点之一,尽管面片(使用 locate() 定位)用作起点。
        返回
        顶点 ID。
      • getEdgeList

        public void getEdgeList​(MatOfFloat4 edgeList)
        返回所有边的列表。
        参数
        edgeList - 输出向量。 该函数将每个边作为 4 个数字的向量给出,其中每两个是一个边的顶点。 即 org_x = v[0], org_y = v[1], dst_x = v[2], dst_y = v[3]。
      • getLeadingEdgeList

        public void getLeadingEdgeList​(MatOfInt leadingEdgeList)
        返回连接到每个三角形的前导边 ID 列表。
        参数
        leadingEdgeList - 输出向量。 该函数为每个三角形提供一个边 ID。
      • getTriangleList

        public void getTriangleList​(MatOfFloat6 triangleList)
        返回所有三角形的列表。
        参数
        triangleList - 输出向量。 该函数将每个三角形作为 6 个数字的向量给出,其中每两个是三角形的顶点。 即 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)
        返回所有 Voronoi 面片的列表。
        参数
        idx - 要考虑的顶点 ID 向量。 对于所有顶点,您可以传递空向量。
        facetList - Voronoi 面片的输出向量。
        facetCenters - Voronoi 面片中心点的输出向量。
      • getVertex

        public Point getVertex​(int vertex,
                               int[] firstEdge)
        从顶点 ID 返回顶点位置。
        参数
        vertex - 顶点 ID。
        firstEdge - 可选。 连接到顶点的第一个边 ID。
        返回
        顶点 (x,y)
      • getVertex

        public Point getVertex​(int vertex)
        从顶点 ID 返回顶点位置。
        参数
        vertex - 顶点 ID。
        返回
        顶点 (x,y)
      • getEdge

        public int getEdge​(int edge,
                           int nextEdgeType)
        返回与给定边相关的边之一。
        参数
        edge - 细分边 ID。
        nextEdgeType - 指定要返回的相关边的参数。 可能的值如下
        • NEXT_AROUND_ORG 边起点周围的下一个(如果 e 是输入边,则图片中为 eOnext)
        • NEXT_AROUND_DST 边顶点周围的下一个 (eDnext)
        • PREV_AROUND_ORG 边起点周围的上一个(反转的 eRnext)
        • PREV_AROUND_DST 边目标周围的上一个(反转的 eLnext)
        • NEXT_AROUND_LEFT 左面片周围的下一个 (eLnext)
        • NEXT_AROUND_RIGHT 右面片周围的下一个 (eRnext)
        • PREV_AROUND_LEFT 左面片周围的上一个(反转的 eOnext)
        • PREV_AROUND_RIGHT 右面片周围的上一个(反转的 eDnext)
        ![示例输出](pics/quadedge.png)
        返回
        与输入边相关的边 ID。
      • nextEdge

        public int nextEdge​(int edge)
        返回边起点周围的下一条边。
        参数
        edge - 细分边 ID。
        返回
        一个整数,它是边起点周围的下一个边 ID:如果 e 是输入边,则上图中的 eOnext)。
      • rotateEdge

        public int rotateEdge​(int edge,
                              int rotate)
        返回同一四边形的另一条边。
        参数
        edge - 细分边 ID。
        rotate - 指定要返回的与输入边相同的四边形边的参数。 可能的值如下
        • 0 - 输入边(如果 e 是输入边,则下图中的 e)
        • 1 - 旋转边 (eRot)
        • 2 - 反转边(反转的 e(绿色))
        • 3 - 反转的旋转边(反转的 eRot(绿色))
        返回
        与输入边相同的四边形的边 ID 之一。
      • symEdge

        public int symEdge​(int edge)
      • edgeOrg

        public int edgeOrg​(int edge,
                           Point orgpt)
        返回边的起点。
        参数
        edge - 细分边 ID。
        orgpt - 输出顶点位置。
        返回
        顶点 ID。
      • edgeOrg

        public int edgeOrg​(int edge)
        返回边的起点。
        参数
        edge - 细分边 ID。
        返回
        顶点 ID。
      • edgeDst

        public int edgeDst​(int edge,
                           Point dstpt)
        返回边的目标。
        参数
        edge - 细分边 ID。
        dstpt - 输出顶点位置。
        返回
        顶点 ID。
      • edgeDst

        public int edgeDst​(int edge)
        返回边的目标。
        参数
        edge - 细分边 ID。
        返回
        顶点 ID。
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        重写
        finalize in class java.lang.Object
        抛出
        java.lang.Throwable