« C4D C.O.F.F.E.E.Randomクラスを使ってポリゴンオブジェクトを変形させる。 | トップページ | お詫び »

C4D C.O.F.F.E.E.のRandomクラスのガウス分布の確認。

C.O.F.F.E.E.のRandomクラスのGetG11()メンバ関数のガウス分布を確認します。

まず最初に、均等分布のGet11()メンバ関数を使い、1000個の球体オブジェクトを(-100.0 , -100.0 , -100.0)~(100.0 , 100.0 , 100.0)の空間に配置してみます。

/*
1000個の球体オブジェクトを200 × 200 × 200の空間にランダム値の均等分布で配置します。
Random::Get11()
2009.6.19
*/


main(doc , op)
{
  var i;
  var obj , g_obj;
  var pos;
  var rnd = new(Random);
  var size = 100.0;
  var x , y , z;

  //グループオブジェクトの追加
  g_obj = AllocObject(Onull);
  doc->InsertObject(g_obj , NULL , NULL);

  for(i = 0 ; i < 1000 ; i++){
    //球体の追加
    obj = AllocObject(Osphere);
    obj#PRIM_SPHERE_RAD = 1.0;
    doc->InsertObject(obj , g_obj , NULL);

    //座標の算出
    x = rnd->Get11() * size;
    y = rnd->Get11() * size;
    z = rnd->Get11() * size;
    pos = vector(x , y , z);

    //位置の更新
    obj->SetPosition(pos);
  }
}

結果は、この通り。空間内に均等分布で配置されています。

Romdom05

では、ガウス分布で配置してみます。

/*
1000個の球体オブジェクトを200 × 200 × 200の空間にランダム値のガウス分布で配置します。
Random::GetG11()
2009.6.19
*/


main(doc , op)
{
  var i;
  var obj , g_obj;
  var pos;
  var rnd = new(Random);
  var size = 100.0;
  var x , y , z;

  //グループオブジェクトの追加
  g_obj = AllocObject(Onull);
  doc->InsertObject(g_obj , NULL , NULL);

  for(i = 0 ; i < 1000 ; i++){
    //球体の追加
    obj = AllocObject(Osphere);
    obj#PRIM_SPHERE_RAD = 1.0;
    doc->InsertObject(obj , g_obj , NULL);

    //座標の算出
    x = rnd->GetG11() * size;
    y = rnd->GetG11() * size;
    z = rnd->GetG11() * size;
    pos = vector(x , y , z);

    //位置の更新
    obj->SetPosition(pos);
  }
}

結果は、ガウス分布です。中心に集まるように配置されました。

Romdom06

個数が少ないのか、-50.0~50.0の範囲に集中していて、端には全く配置されていません。

GetG11()のガウス分布を確認できたでしょうか?

|

« C4D C.O.F.F.E.E.Randomクラスを使ってポリゴンオブジェクトを変形させる。 | トップページ | お詫び »