【问题标题】:sample random point in triangle [closed]三角形中的随机点样本[关闭]
【发布时间】:2011-01-24 02:47:23
【问题描述】:

假设您有一个任意三角形,其顶点为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.

【问题讨论】:

  • 这可能更适合math.stackexchange.com
  • 我认为它非常适合 SO。投票重新开放。数值方法非常适合这里,如果你要做蒙特卡洛这样的事情,最好确保你能证明你的假设是正确的。
  • @belisarius:问题不是关于数值方法,而是关于数学证明。我不认为这里完全离题,但我认为它现在更贴切。
  • @Sven 你可能是对的,但我看到 SO 的范围每天都在缩小。恐怕在不久的将来,唯一有效的主题将是一些语法问题和众所周知的算法的应用。感谢您的意见。

标签: algorithm geometry numerical-methods sampling


【解决方案1】:

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

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

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

【讨论】:

  • sqrt(r1) 如何解释线段长度的变化?
  • @dsg,如果我们写成(1-x)A + x[(1-y)B + yC],从简单的几何形状可以看出,与BC平行的高度为dx的窄带的面积为dS ~ x dx ~ d(x^2)。因此,为了获得点的均匀分布,x^2 应该是均匀分布的。要从r1 = x^2 获取x,请使用sqrt(r1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 2015-10-25
相关资源
最近更新 更多