cgal - 以 api 方式添加 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)));
这看起来很麻烦,因为我需要通过减去 Point(0,0) 将点转换为向量,然后我需要将所有内容添加到原点上的点。
看起来更自然,只需执行以下操作
Point = (1 - std::sqrt(r1)) * standardTriangle[0] + //
(std::sqrt(r1) * (1 - r2)) * standardTriangle[1] +
(r2 * std::sqrt(r1)) * standardTriangle[2]);
从原点添加和删除点实际上是求和点的唯一方法,即使在数学上这是不正确的?
解决方案
您可能想要使用该barycenter()
功能。
如果您需要另一个采样,CGAL 中有一个可用的采样。看这里
推荐阅读
- javascript - .getBoundingClientRect()、each() 和 $(this) 之间的关系 - 获取循环中多个元素的 getBoundingClientRect
- javascript - 选择器解决为隐藏 - 剧作家和带显示:无。谁能知道如何使它工作?
- javascript - expressjs req.url 路径如何成为另一个url?
- mysql - 如何在 MySQL 数据库的存储过程中传递参数?
- hana - 如何从 HANA Studio 结果视图中删除行编号
- reactjs - 组件在本机反应中未正确重新渲染
- angular - 为 Angular i18n 编写单元测试
- javascript - 用于 Edge 的 Excel ActiveXObject 重新工具
- python - 成员消息角色名称时尝试分配 Discord 角色
- node-addon-api - Napi::Env 可以在子线程中使用吗?