1

我正在尝试在处理过程中在立方体表面上随机均匀地生成点。我正在尝试制作动画,所以我需要点的 x、y 和 z 最终位置。

有什么建议么?谢谢。

4

1 回答 1

5

只需结合三个均匀随机分布。此方法假设您有一个单位立方体 [0..1]^3。如果不是这种情况,只需在生成点后缩放和偏移点。

  1. 通过从 [0..6) 中获取一个整数来选择一个立方体边
  2. 在该侧的平面中选择一个 x 坐标
  3. 在该侧的平面中选择一个 y 坐标

这是一些 C++-ish 伪代码:

vec3 result;
int s=randomSide(); // returns 0 to 5, uniformly distributed
int c=s%3; // get the axis perpendicular to the side you just picked

result[c]=s>2 ? 1.f : 0.f;
result[(c+1)%3]=random01();
result[(c+2)%3]=random01();

如果你有一个更通用的盒子而不是立方体,你必须根据盒子侧面的面积来偏向侧边拾取。

于 2012-08-05T13:45:57.873 回答