ランダムな数値を出力する、Randomコンポーネントの使い方について解説します。


グラスホッパー上では上の2つのどちらかで表されます。
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。
ランダムな数値を出力する
Randomを使うことで、ランダムな数値を出力することができます。

RandomのR端子には、数値の範囲を入力します。
最初は、Construct Domainを使い、0~100の範囲を作成しています。
N端子には、出力する数値の数を入力します。
最初は、10を入力しています。
S端子には、ランダムさを変えるシード値の数値を入力します。
もし0~100の数値をNumber Sliderに入力した場合、数値を変えることで100通りのランダム数を生み出すことができます。
最初は、20を入力しました。
すると、上の画像の場合、0~100の範囲内で、10個の数値がランダムで作成されました。

R端子の数値の範囲は、文字で指定することもできます。
Panelに、数値 To 数値を入力することで、この方法でも範囲を指定できます。
上の画像の場合は、0 To 100と入力しています。

範囲の最大値を、100から50までに変更してみました。
すると、出力される数値は50を超えなくなりました。

N端子の数値を増やすと、出力される数値の数を増やすことができます。
今回は、数値を10から20に変更しました。
すると、20個の数値が出力されました。

数値を5にすると、5つだけ数値が出力されました。

S端子の数値を変更すると、出力される数値のランダムさが変わりました。
上の画像は、シード値を50にした場合です。

シード値が79の場合です。
Randomの使用例

Randomを使って、上の画像のような例を作成してみます。
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。

使用コンポーネント:①Rectangle ②Surface ③Divide Domain² ④Isotrim ⑤Area ⑥Multiplication ⑦Random ⑧Scale ⑨Deconstruct Brep ⑩Curve ⑪Ruled Surface

まずは、Rectangleを使い、四角形を作成します。
今回は、RectangleのXとYに100を入力し、辺の長さを100にしました。

次にRectangleをSurfaceをつなぎ、四角形をサーフェスにします。

その後、Divide Domain²とIsotrimを使い、サーフェスを分割します。
SurfaceをDivide Domain²のI端子につなげます。
今回はUとV端子に10を入力し、10×10で分割しました。
SurfaceをIsotrimのS端子につなげ、D端子にDivide Domain²をつなげます。

すると、サーフェスが分割されました。

IsotrimをAreaにつなげると、それぞれの分割されたサーフェスの中心点を取得できます。

その後、Divide Domain²で使った分割数の10を、MultiplicationのAとB端子につなげ、掛け算します。
そして、RandomのRの範囲を0~1にします。
N端子には、Multiplicationをつなげます。
S端子には、適当なシード値を入力します。
すると、0~1のランダムな数値が作成されます。
これは、この後のスケールを変える際の倍率になります。

C端子に、AreaのC端子をつなげます。
F端子に、Randomをつなげます。
これで、ランダムにそれぞれのサーフェスの大きさが変わりました。

その後、元々のサーフェスと、サイズを変えた後のサーフェスにDeconstruct Brepを使い、枠線を抽出します。
そして、Deconstruct BrepのE端子に、それぞれCurveをつなげます。

このように、枠線が抽出されました。

最後に、Ruled Surfaceに2つのCurveをつなげると、2つの枠線をつなぐサーフェスが作成されます。
これで完成です。
Randomコンポーネントを使用しているグラスホッパー記事はこちら↓
Comment