2012-08-05 99 views
0

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

有什么建议吗?谢谢。

+0

您想要随机生成立方体表面上的点或立方体内的点吗? – aioobe 2012-08-05 10:58:49

+0

你有没有在区间[0,1)上生成随机统一数字的方法? – 2012-08-05 11:21:55

+0

抱歉,我的意思是立方体的表面。 @HighPerformanceMark我有随机(0,1)方法,但我应该如何使用它? – 2012-08-05 11:40:39

回答

4

只需结合三个均匀的随机分布。此方法假定您有一个单位立方[0..1]^3。如果不是这种情况,请在生成它们之后缩放并抵消这些点。

  1. 通过从得到的整数选择一个立方体侧[0..6)
  2. 接在该侧的平面
  3. x坐标接在该侧的平面

下面是一个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(); 

如果您有一个更通用的方框而不是立方体,您必须根据到盒子边的区域。

+0

对不起,我不习惯C++,结果[c]等等你的意思是向量.x vector.y vector.z?谢谢你的回答 – 2012-08-05 16:07:23

+0

它应该访问第n个坐标,所以结果[0]是x,结果[1]是y,结果[2]是z – ltjax 2012-08-05 16:24:17

+0

了解它。这段代码在处理过程中很难翻译,因为我必须使用PVectors,并使用像vector这样的位置访问它们。0 – 2012-08-05 16:38:55