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