processing #3 真似のcoding
こんにちは、kazumaです。最近は段ボールに触りすぎている気もするので、processingもうまく書いていけたら良いなと思います。
「真似は上達のチカミチ」という言葉もありますしとりあえず先輩のコードを真似して理解するのを目的とした回になります。
というわけで私が大好きな某さんのコードがこちら
import processing.opengl.*;
int actRandomSeed = 0;
int rectSize = 100;
int h = 360;
void setup(){
size(800,800,OPENGL);
pixelDensity(1);
colorMode(HSB,360,100,100,100);
rectMode(CENTER);
}
void draw(){
randomSeed(actRandomSeed);
drawBackground();
tile();
}
void drawBackground() {
background(360,9,100);
strokeWeight(2);
float xStep = 5;
for(float y = 0;y<height+20;y++){
for(float x = random(xStep);x<width+20;x+=random(xStep)){
float s = map(dist(width/2,height,x,y),0,height,100,40);
stroke(h,s,random(60,100),90);
line(x-10,y,x+10,y);
}
}
}
void tile(){
for(int y = rectSize/2;y<height;y+=rectSize){
for(int x = rectSize/2;x<width;x+=rectSize){
float angleNoise = map(noise(x*0.001,y*0.001),0,1,-PI,PI)/2;
pushMatrix();
translate(x,y,sqrt(sq(rectSize/2)+sq(rectSize/2)));
rotateX(angleNoise);
rotateY(angleNoise);
strokeWeight(1);
stroke(0);
fill(random(360),random(50));
rect(0,0,rectSize,rectSize);
popMatrix();
}
}
}
void mousePressed(){
actRandomSeed = (int)random(10000);
int newNoiseSeed = (int)random(10000);
noiseSeed(newNoiseSeed);
}
色がうまく付いていなく見にくいのは申し訳ないです。
とりあえず上から見ていこうかなって思います。
最初のrandomSeedから見たことないな
randomSeed
Processingはプログラムを実行するたびに異なる乱数列を作りますが、この関数で種を設定することで乱数列を決定できます。つまり、毎回同じ値を設定すれば、毎回同じ乱数列が得られます。
毎回同じ数字の並びで稼働させられるっていうことなのだろうか。
こんど動作実験してみよう
次は。。。pushMatrixかな
これに関しては分かり易いサイトがあったので紹介しておきます。
イメージとしてはpushMatrixで現座標を保存して、popMatrixで元に戻すことができるってことだと思う(多分..)
難しい言葉を使うと相対座標じゃなくて絶対座標にしたいときに使うってこと
最後にnoiseSeedも分からないな
noiseSeed
種を設定して毎回同じノイズを生成します。
難しいいいいいいいいいい
もっと勉強してから出直します(笑)
ここまで読んでいただきありがとうございます、いいねやコメントの方よろしくお願いします。
今回は、おかず先輩のコードでした。おかずさんは毎回すごく感性刺激してくる作品が多くて勉強になります。この場を借りておかずさんにも感謝をお伝え出来たらと思います。
この記事が気に入ったらサポートをしてみませんか?