algorithm - 三角形中的样本随机点

标签 algorithm geometry numerical-methods sampling

<分区>

假设您有一个任意三角形,其顶点为 ABCThis paper (section 4.2)表示您可以通过以下顶点的凸组合从三角形 ABC 内均匀地生成一个随机点 P:

P = (1 - sqrt(r1)) * A + (sqrt(r1) * (1 - r2)) * B + (sqrt(r1) * r2) * C

其中r1r2统一取自[0, 1]sqrt为正方形根函数。

你如何证明在三角形 ABC均匀分布的采样点?

编辑

正如在 the mathoverflow question 上的评论中指出的那样, Graphical Gems discusses this algorithm .

最佳答案

您有一个从单位正方形到三角形的映射 P(r1,r2)。统一选择 r1 和 r2 给出单位正方形中的一个随机点。三角形中的图像根据映射 P 的雅可比行列式分布,结果证明它是一个常数。因此图像分布也是均匀的。

实际上,要验证这一点,您只需检查一个三元组的非共线点 A、B、C。仿射线性映射具有常量雅可比矩阵,因此您可以应用其中之一将任意三元组移动到此标准位置,而不会影响分布。

最后,关于“为什么”的一句话:考虑由平行于 BC 边的线段填充的三角形。在 P 的公式中,变量 r1 选择点位于哪条线段上,而 r2 确定点位于线段的哪个位置。为了统一,给定段上的所有点都应该被平等对待(因此在 r2 中是线性的)。但是对于 r1,由于某些段比其他段短,我们需要支持长段以获得均匀分布。公式中的 sqrt(r1) 说明了这一点。

关于algorithm - 三角形中的样本随机点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778147/

相关文章:

sql - 事务处理 SQL : Detect Date boundaries across multiple rows

algorithm - 优化算术表达式序列的快速算法

r - 用 R 中的二重积分方程求解优化

floating-point - 浮点值的数值稳定移动平均值

c++ - 对阶乘和多项式的组合进行数值计算

algorithm - 这个幂集算法的运行时间是多少

algorithm - 蒙特卡洛与 UCB 应用于复杂的纸牌游戏

html - 使用 CSS 的三 Angular 形图像

MySQL geom 偏移测试

Java 小程序 : Drawing circles that don't overlap one another?