1

処理中に立方体の表面にランダムかつ均一に点を生成しようとしています。アニメーションを作成しようとしているので、ポイントのx、y、zの最終位置が必要になります。

助言がありますか?ありがとう。

4

1 に答える 1

5

3つの均一なランダム分布を組み合わせるだけです。この方法は、単位立方体[0..1]^3があることを前提としています。そうでない場合は、ポイントを生成した後、ポイントをスケーリングしてオフセットするだけです。

  1. [0..6)から整数を取得して立方体側を選択します
  2. その側の平面でx座標を選択します
  3. その側の平面で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();

立方体ではなく、より一般的なボックスがある場合は、ボックスの側面の面積に応じてサイドピッキングにバイアスをかける必要があります。

于 2012-08-05T13:45:57.873 に答える