a-04 繰り返しとランダム

2011年5月 2日

このエントリーをはてなブックマークに追加

for 処理を繰り返す

05-3

for ()の条件を満たす間、繰り返し {}内の処理の実行する。

size(400,200);

for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 100, 60, 60);
}

上のfor文では、以下のように i = 0 を初期値として、iが3未満ならば、iを1ずつ増やして{}内を実行している。

ellipse(100 + 100 * 0, 100, 60, 60); // i=0のとき
ellipse(100 + 100 * 1, 100, 60, 60); // i=1のとき
ellipse(100 + 100 * 2, 100, 60, 60); // i=2のとき

練習

  • 円を5つ並べてみる
  • 一定の大きさで小さくなる円を3つ描く

繰り返しを繰り返す(for文を入れ子にする)

横に3つ並んだ円を、3段描く。

for-for

size(400,400);

//1段目
for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 100, 60, 60);
}

//2段目
for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 200, 60, 60);
}

//3段目
for(int i = 0; i < 3; i++){
  ellipse(100 + 100 * i, 300, 60, 60);
}

y座標に着目すると、100ずつ増えているので、以下のように書きかえることができる。

size(400, 400);

for (int j = 0; j < 3; j++) {
  for (int i = 0; i < 3; i++) {
    ellipse(100 + 100 * i, 100 + 100 * j, 60, 60);
  }
}

繰り返しに合わせて色を付ける

for1-1

size(200, 200);
colorMode(HSB, 100);
background(99);
noStroke();

for(int x = 0; x < 10; x++){
  fill(x*10, 10, 99);
  rect(x*20, 0, 10, 10);
}

for1-2

size(200, 200);
colorMode(HSB, 100);
background(99);
noStroke();

for(int y = 0; y < 10; y++){
  for(int x = 0; x < 10 ; x++){
    fill(10*x, 10+y*10, 99);
    rect(x*20, y*20, 10, 10);
  }
}

random() ランダムに決める

random-line1 random-line2 random-line3

size(200,200);

for(int i=0; i<100; i++){
  line(random(width), random(height), random(width), random(height));
}

※プログラムが実行されるたびに、出力結果が変わる。

色もランダムにしてみる

random2-1 random2-2 random2-3

size(200, 200);
colorMode(RGB, 100);
background(99);

for(int i = 0; i < 100; i++){
  stroke(random(100), random(100), random(100));
  line(random(width), random(height), random(width), random(height));
}

ランダムな値(乱数)を変数に入れて利用する

random3-1

size(200, 200);
colorMode(HSB, 100);
background(99);

for(int x = 0; x < width; x++){
  float color1 = random(100); // 色を設定する乱数の値は0から100未満とする
  stroke(color1, 60, 99);
  line(x, 0, x, height);
}

※randomはfloat型で変数を設定する(int型にするとエラーになる)。

まとめ

制御

繰り返し処理

数学

ランダム

このエントリーをはてなブックマークに追加

Archives

以下の記事は、2011年度に筆者が大学での授業で利用していた補足資料です。現在、これらをベースに本ウェブサイトを再構築しています。完了するまで一時的に掲載します。


About

筆者: @mathatelle

ジェネラティブ・アート -Processingによる実践ガイド Processing: A Programming Handbook for Visual Designers and Artists Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction (Morgan Kaufmann Series in Computer Graphics and Geometric Modeling) Processingをはじめよう (Make: PROJECTS) Built with Processing[Ver. 1.x対応版] -デザイン/アートのためのプログラミング入門 Processing アニメーションプログラミング入門 デザイン言語 Processing入門 - 楽しく学ぶコンピュテーショナルデザイン Processingプログラミング入門―Javaベースのオープンソース統合開発環境 ProcessingでかんたんAndroidプログラミング FORM+CODE -デザイン/アート/建築における、かたちとコード Form+Code in Design, Art, and Architecture (Design Briefs) Generative Art: A Practical Guide Using Processing Generative Gestaltung ビジュアライジング・データ ―Processingによる情報視覚化手法 ARプログラミング—Processingでつくる拡張現実感のレシピ— Arduinoをはじめよう 第2版 (Make:PROJECTS) +GAINER―PHYSICAL COMPUTING WITH GAINER Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門 ビューティフルビジュアライゼーション ビジュアル・コンプレキシティ ―情報パターンのマッピング