在立方体表面上生成3D随机点

时间:2012-08-05 10:48:07

标签: 3d geometry processing cube particles

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

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:4)

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

  1. 通过从[0..6)
  2. 获取整数来选择一个立方体
  3. 在该侧的平面中选择一个x坐标
  4. 在该侧的平面中选择一个y坐标
  5. 这是一些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();
    

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