2012-08-05 143 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