Advertisement

计算机与数学——三角形内生成均匀的随机点(Python版)

阅读量:

在执行HairStrandPlugin的迭代计算时,出现了需要对发丝之间进行插值处理的情况。为此,对如何在三角形内部生成具有均匀分布特性的随机点进行了相关探究。

需求

当前存在三个点a, b, c,它们共同构成一个三角形。现需在该三角形的内部生成随机点,当生成的点数量达到足够多时,这些点在三角形区域内的分布应呈现出均匀分布的特性。

思考

barycentric coordinates

对于三角形内部的任意一点P,均存在满足0 \leq u,v\leq1的参数组合

由此最初的设想是令u,v在满足0 \leq u+v\leq1的条件下取任意数值。

然而,采用这种方式难以实现分布的均匀性,例如在三角形中最长的一条边附近,点的分布将显得较为稀疏。

能够生成均匀随机点的方法

Graphic Gem Ⅰ中,我发现了两种能够产生均匀分布随机点的途径。

Method 1

s, t的取值范围限定在区间[0, 1]内,随机点Q的确定依据如下计算步骤:

a \leftarrow 1 - \sqrt{t};
b \leftarrow (1-s)\sqrt{t};

全部评论 (0)

还没有任何评论哟~