3d 立方体表面上三维随机点的生成

3d 立方体表面上三维随机点的生成,3d,geometry,processing,cube,particles,3d,Geometry,Processing,Cube,Particles,我试图在处理过程中在立方体表面上随机均匀地生成点。我正在尝试制作一个动画,所以我需要点的x、y和z最终位置 有什么建议吗?谢谢。只需将三个均匀随机分布组合起来即可。此方法假定您有一个单位多维数据集[0..1]^3。如果不是这样,只需在生成点后缩放和偏移它们即可 通过从[0..6]中获取整数来拾取多维数据集边 在该边的平面中拾取一个x坐标 在该侧的平面中拾取y坐标 下面是一些C++伪代码: vec3 result; int s=randomSide(); // returns 0 to 5, un

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


有什么建议吗?谢谢。

只需将三个均匀随机分布组合起来即可。此方法假定您有一个单位多维数据集[0..1]^3。如果不是这样,只需在生成点后缩放和偏移它们即可

  • 通过从[0..6]中获取整数来拾取多维数据集边
  • 在该边的平面中拾取一个x坐标
  • 在该侧的平面中拾取y坐标
  • 下面是一些C++伪代码:

    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..1]^3。如果不是这样,则在生成点后,只需缩放和偏移这些点即可

  • 通过从[0..6]中获取整数来拾取多维数据集边
  • 在该边的平面中拾取一个x坐标
  • 在该侧的平面中拾取y坐标
  • 下面是一些C++伪代码:

    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,1)?对不起,我的意思是在立方体的表面。@HighPerformanceMark我有随机(0,1)方法,但我应该如何使用它?假设您的立方体是轴对齐的单位立方体,这应该很容易。对于每个点,一个轴应该是0或1。其余的轴应该在[0,1]中.因此,首先选择一个随机轴,然后为该轴随机选择0或1,最后选择[0,1]之间的值对于其余的轴。但我不知道此解决方案是否满足曲面上点分布的要求。是否要在立方体的曲面上或立方体内随机生成点?是否有在间隔上生成随机均匀数的方法[0,1)?对不起,我的意思是在立方体的表面。@HighPerformanceMark我有随机(0,1)方法,但我应该如何使用它?假设您的立方体是轴对齐的单位立方体,这应该很容易。对于每个点,一个轴应该是0或1。其余的轴应该在[0,1]中所以首先选择一个随机轴,然后随机选择C++轴的0或1,最后为剩余的轴选择[0,1]之间的值,但是我不知道这个解决方案是否满足了表面上的点分布的要求。你是说vector.x vector.y vector.z?谢谢你的回答,它应该访问n坐标,所以结果[0]是x,结果[1]是y,结果[2]这个代码在处理过程中很难翻译,因为我必须使用pVoice,并且用向量来访问它们。X.只要编写一个小助手函数,它就可以写入第n个坐标。这应该会使它更容易。我仍然缺少一张脸。尝试随机(0, 6),但它不起作用:/对不起,我不习惯C++,结果[C]你是说vector.x vector.y vector.z?谢谢你的回答,它应该访问n坐标,所以结果[0]是x,结果[1]是y,结果[2]是zgot。这段代码在处理过程中很难翻译,因为我必须使用pVector并使用vector之类的位置访问它们。X只需编写一个小的辅助函数,写入n坐标。这应该会更容易。我仍然缺少一个面..尝试使用random(0,6)但不起作用:/