オブジェクトの運動は、2次元座標の場合はx座標とy座標を連続的に変化させることによって実現します。座標の変化が一定の場合は単調な動きになりますが、複雑な数式を用いなくてもif文などを上手く応用すると複雑な運動が可能になります。このスタディでは、試行錯誤によってアルゴリズムによる運動にどのようなバリエーションを作ることができるかを検証します。
3.6.1 課題
円の運動を使って5種類のバリエーションを作る
目的
- 単純な円の運動から出発して、どれだけバリエーションを生み出せるかを競う
- 形態の可能性を試行錯誤によって発見する
条件
- 使用する要素は黒の正円のみ。背景は白。フェードはさせない
- 円の数、大きさ、動き方の変化は自由。円の縦横比は変えないこと
- 5パターンのバリエーションは、単純なアルゴリズムから出発し複雑にしていく
- 画面は400×400ピクセル
- 10パターン作りたい人は作ってもいい。その方が勉強になる
- 次のサンプルを出発点とする【リスト3.6-a】
図3.6-a
リスト3.6-a
int eSize = 40; //オブジェクトのサイズ
int velocity = 5; //オブジェクトのスピード
int x = 0; //オブジェクトのx座標
void setup() {
size(400, 400);
noStroke(); //輪郭を描かない
fill(0); //オブジェクトは黒
}
void draw() {
background(255);
/* 軌跡を残す場合は、下の3行をON、backgoundをOFFにする
fill(255, 50); //透明度のあるrectを描画
rect(0, 0, width, height);
fill(0); //オブジェクトは黒
*/
ellipse(x, height/2, eSize, eSize); //円を描く
x += velocity; //x座標にvelocityの値を足す
//もし、xの値が画面の幅以上になったら、xを0に戻す
if (x >= width) {
x = 0;
}
}
3.6.2 サンプルA
画像をクリックするとサンプルのコードを見ることができます
スタディ3.6-a
スタディ3.6-b
スタディ3.6-c
スタディ3.6-d
スタディ3.6-e
作成:小澤太一
3.6.3 サンプルB
スタディ3.6-f
スタディ3.6-g
スタディ3.6-h
スタディ3.6-i
スタディ3.6-j
作成:三上航平