Processingでの簡単なシミュレーションに挑戦しています。
ここのサイトリンク内容の『配列の使い方1 「過去のデータを記憶する」』のプログラムを改造して、マウスで入力しなくても、ヘビ(私にそう見えただけです)が勝手に動くようにしたいのです。
お手本にしたコードのdrow()の部分を```
void draw() {
background(204); //画面をリセット
//配列を参照して円を描画する
for(int i=0 ; i < length ; i++) {
fill(i * 3);//color
ellipse(x[i], y[i], i, i);
}
//配列の値をひとつ後ろへ移動する
for(int i = length - 1 ; i >= 1 ; i--) {
x[i] = x[i-1];
y[i] = y[i-1];
}
x[0] = constrain(x[0] += random(-20, 21), 30, 800);
y[0] = constrain(y[0] += random(-20, 21), 30, 600);
}
(mouseMoved()は消しました。) 皆様の知恵をお借りしたいのは以下の点です。 0. constrain()を使うことによって枠外に出ないようにしていますが、これはヘビを檻で囲っているのと同じです。ヘビが自らの意志で枠内で動き回るようなアルゴリズムにしたい。 0. ヘビの動きにランダムな加減速をつけたい。 0. サイトにあったお手本と上の改造例を比べると、機械じみたカクカクした印象を受けるので、もっとなめらかに動かしたい。 ヘビの動き=重み*速度と仮定して、枠の中心から離れるほど重みを小さく(重み=中心-位置としました。)すれば[1]が、速度を指数乱数にすれば[2]が解決できるのではないかと思って試してみました。 しかし、座標がint型であることが関係して、どっちつかずな状態になってしまいました。 長文失礼しました、どうかよろしくお願いいたします。 Processing3.0.1を使っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/11/19 10:33