假设您有一个带顶点的任意三角形 A
, B
,和 C
。 本文(第4.2节) 说你可以生成一个随机点, P
,均匀地从三角形内部 ABC
通过以下顶点的凸组合:
P = (1 - sqrt(r1)) * A + (sqrt(r1) * (1 - r2)) * B + (sqrt(r1) * r2) * C
哪里 r1
和 r2
均匀地从中抽取 [0, 1]
,和 sqrt
是平方根函数。
你如何证明采样点是正确的 均匀分布 在三角形内 ABC
?
编辑
正如评论中指出的那样 mathoverflow问题,
Graphical Gems讨论了这种算法。
你有一个从单位正方形到三角形的地图P(r1,r2)。均匀地选择r1和r2会给出单位平方中的随机点。三角形中的图像根据地图P的雅可比行列式分布,其结果是常数。因此图像分布也是均匀的。
实际上,为了验证这一点,你只需要检查它的三个非共线点A,B,C。仿射线性映射具有恒定的雅可比矩阵,因此您可以应用其中一个将任意三元组移动到此标准位置而不影响分布。
最后,关于“为什么”的一个词:考虑由平行于BC侧的线段填充的三角形。在P的公式中,变量r1选择点将位于哪个段上,而r2确定它将沿着段的位置。为了均匀性,给定段上的所有点应该被平等对待(因此在r2中是线性的)。但对于r1,由于某些段比其他段短,我们需要支持长段以获得均匀分布。公式中的sqrt(r1)说明了这一点。