类 Subdiv2D


  • public class Subdiv2D
    extends java.lang.Object
    • 字段详情

      • nativeObj

        protected final long nativeObj
      • PTLOC_ERROR

        public static final int PTLOC_ERROR
        另请参见
        常量字段值
      • 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 - 包含要添加到细分的所有二维点的矩形。该函数创建一个空的 Delaunay 细分,可以使用 insert() 函数向其中添加二维点。所有要添加的点都必须在指定的矩形内,否则会引发运行时错误。
    • 方法详情

      • getNativeObjAddr

        public long getNativeObjAddr()
      • __fromPtr__

        public static Subdiv2D __fromPtr__​(long addr)
      • initDelaunay

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

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

        public void insert​(MatOfPoint2f ptvec)
        将多个点插入Delaunay三角剖分。
        参数
        ptvec - 要插入的点。
      • locate

        public int locate​(Point pt,
                          int[] edge,
                          int[] vertex)
        返回点在Delaunay三角剖分中的位置。
        参数
        pt - 要定位的点。
        edge - 点所属的输出边,或者位于其右边的边。
        顶点 - 可选输出顶点,输入点与其重合。该函数在细分中定位输入点,并给出三角形的边或顶点之一。
        返回值
        一个整数,指定以下五种点位置情况之一
        • 点落在某个面上。该函数返回 #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 在类 java.lang.Object
        抛出
        java.lang.Throwable