在Triangle库中指定孔

时间:2017-02-02 03:53:14

标签: c++ triangulation

我尝试使用Triangle library细分带孔的多边形。细分三角形将由OpenGL呈现。  我的多边形有一个外环和多个内环。我只有所有环的x,y坐标。为了使用Triangle lib进行镶嵌,我必须将孔列表和孔数传递给Triangle lib到其triangulateio结构成员:holelistnumberofholes

struct triangulateio {
  REAL *pointlist;                                               /* In / out */
  REAL *pointattributelist;                                      /* In / out */
  int *pointmarkerlist;                                          /* In / out */
  int numberofpoints;                                            /* In / out */
  int numberofpointattributes;                                   /* In / out */

  int *trianglelist;                                             /* In / out */
  REAL *triangleattributelist;                                   /* In / out */
  REAL *trianglearealist;                                         /* In only */
  int *neighborlist;                                             /* Out only */
  int numberoftriangles;                                         /* In / out */
  int numberofcorners;                                           /* In / out */
  int numberoftriangleattributes;                                /* In / out */

  int *segmentlist;                                              /* In / out */
  int *segmentmarkerlist;                                        /* In / out */
  int numberofsegments;                                          /* In / out */

  REAL *holelist;                        /* In / pointer to array copied out */
  int numberofholes;                                      /* In / copied out */

  REAL *regionlist;                      /* In / pointer to array copied out */
  int numberofregions;                                    /* In / copied out */

  int *edgelist;                                                 /* Out only */
  int *edgemarkerlist;            /* Not used with Voronoi diagram; out only */
  REAL *normlist;                /* Used only with Voronoi diagram; out only */
  int numberofedges;                                             /* Out only */
};

孔由孔内一个点的坐标表示。我的问题是:我可以在不指定孔的情况下进行镶嵌(仅使用内部环)吗?或者,如果我必须列出孔,我怎样才能快速找到孔内的一个点?这个过程对时间至关重要。

1 个答案:

答案 0 :(得分:0)

如果不指定孔,则无法进行镶嵌。 在孔内找到一个点的一种可能的方法是对它进行三角测量,好像它是一个简单的环(在其中没有孔)并采取例如其中一个输出三角形的质心。我希望它有所帮助。