2011-01-24 85 views
10

假设您有一个顶点为ABC的任意三角形。 This 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 questionGraphical Gems discusses this algorithm

+2

这可能更适合http://math.stackexchange.com/ – 2011-01-24 02:54:19

+0

http://math.stackexchange.com/questions/18686/uniform-random-point-in-triangle – dsg 2011-01-24 04:02:17

回答

10

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

其实,要验证这一点,你只需要检查它的一个三非共线点A,B,C。仿射线性映射具有恒定的雅可比行列式,因此您可以应用其中的一个将任意三元组移动到此标准位置而不影响分布。

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