正确添加CGAL点的方法

  • 本文关键字:方法 CGAL 添加 cgal
  • 更新时间 :
  • 英文 :


我有一个由三个顶点定义的三角形。顶点类型为Point = CGAL::Point_2<K>,内核为Simple_cartersian<double>

我想随机采样这个三角形,为此我使用一个公式(https://math.stackexchange.com/questions/18686/uniform-random-point-in-triangle-in-3d),它将三角形的三个顶点乘以一些随机因子。

Point = Point(0, 0) +                                                //
(1 - std::sqrt(r1)) * (standardTriangle[0] - Point(0, 0)) +  //
(std::sqrt(r1) * (1 - r2)) * (standardTriangle[1] - Point(0, 0)) +
(r2 * std::sqrt(r1)) * (standardTriangle[2] - Point(0, 0)));

这看起来很麻烦,因为我需要通过减去点(0,0)来将点转换为向量,然后我需要将所有内容添加到原点上的点上。

看起来更自然,就像下面这样

Point = (1 - std::sqrt(r1)) * standardTriangle[0] +  //
(std::sqrt(r1) * (1 - r2)) * standardTriangle[1] +
(r2 * std::sqrt(r1)) * standardTriangle[2]);

从原点添加和删除点真的是求和点的唯一方法,即使在数学上这是不正确的?

您可能需要使用barycenter()函数

如果你需要另一个样本,在CGAL中有一个可用。看到

相关内容

  • 没有找到相关文章

最新更新