ここでは、書籍「アートで魅せる数学の世界」のp.204-205で解説されている、レヴィのダストを再現してみました。
レヴィのダスト
今回、描いたレヴィのダストです。
レヴィのダストは、ランダム・ウォークの一種であり、疑似乱数を用いた図形のため、プログラムを実行するたびに形は変わります。
レヴィのダストのステップ
今回作成したレヴィのダストは、\(xy\)座標系の原点\((0,0)\)からスタートして、以下の式によるステップを繰り返していくことで描くことができます。\[ r =(1-u)^{-\frac{1}{d}}, \\ x_{n+1} = x_n + r \cos (2 \pi u’), \ \ y_{n+1} = y_n + r \sin (2 \pi u’) \]なお、\(u, \ \ u’ \)は\(0\)以上\(1\)未満の疑似乱数の値になります。
ソースコード
今回作成したレヴィのダストのプログラムのソースコードを示します。なお、パラメータ\(d\)の値は\(20\)としています。
void setup(){
size(500,500);
translate(width/2, height/2);
background(0,0,0);
stroke(255,255,255);
strokeWeight(0.1);
int step_num = 300000;
float d = 20.0;
float r;
float random_val;
float x, y;
x = 0.0;
y = 0.0;
point(x,y);
for(int i=0; i<step_num; i++){
r = pow(1.0 - random(1.0), -1.0/d);
random_val = random(1.0);
x += r * cos( 2.0 * PI * random_val );
y += r * sin( 2.0 * PI * random_val );
point(x,y);
}
}