2012-08-05 3 views
0

큐브 표면에 점을 무작위로 생성하고 균일하게 처리하려고합니다. 나는 애니메이션을 만들려고 노력 중이므로 x, y 및 z 최종 점이 필요합니다.큐브의 표면에 3D 랜덤 포인트 생성

제안 사항? 감사.

+0

큐브 표면이나 큐브 내에서 임의로 점을 생성하고 싶습니까? – aioobe

+0

간격 [0,1]에 임의의 균일 한 숫자를 생성하는 방법이 있습니까? –

+0

죄송합니다. 큐브 표면에 있습니다. @HighPerformanceMark 무작위 (0,1) 방법이 있는데 어떻게 사용해야합니까? –

답변

4

세 개의 균일 한 임의 분포를 결합하면됩니다. 이 방법에서는 단위 큐브 [0..1]^3이 있다고 가정합니다. 그렇지 않은 경우 포인트를 생성 한 후 크기를 조정하고 오프셋하면됩니다.

  1. 는 [0..6)
  2. y를가

여기하다는 측면의 평면 좌표 픽업은 X가 측의 평면

  • 좌표 픽업 정수를 얻어서 큐브 측 선택 일부 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++에 익숙하지 않으므로 벡터를 의미하게됩니다. .x vector.y vector.z? 귀하의 답변을 주셔서 감사합니다 –

    +0

    그것은 n 번째 좌표에 액세스해야하므로 result [0]은 x, result [1]은 y이고 result [2]는 z – ltjax

    +0

    입니다. 이 코드는 PVectors를 사용하고 vector.x와 같은 위치로 접근해야하기 때문에 처리가 복잡하기 때문에 번역하기가 까다 롭습니다. –

    관련 문제