Processing:うねうねうごく物体 : PROCESSING入門
こちらが元ネタですね。
参考コードがある場合は質問に明示してください。
魚自体がうねりすぎて魚の形すらわからなくなりました。
そのページに「円を多数描いて」とあります。
コードの詳細は分からなくても、位置をずらしながらellipse
を100回描いていることはわかると思います。
画像が重なっていけば、当然わけのわからない物体になるでしょう。
文字をうねらせる際にテキスト入力と文字の画像はどちらが扱いやすいでしょうか。
どちらにもメリット・デメリットがあるでしょう。
テキストベースなら文字を簡単に入れ替えられます。
画像ベースなら凝った色使いとか加工(目を入れるとか)も自在です。
魚の文字が魚のようにうねっているプログラミングを作成したいです。
やり方はいろいろあるでしょうが、今のコードを尊重してみました。
画像が重ならないように、縦に細切れにして描きました。
py0nnさんの思っている動きかは、自信がありませんが^^;
Processing
1float theta;
2float xspeed;
3int direction = 1;
4PImage img;
5
6PGraphics g;
7PImage[] images;
8
9void setup() {
10 size(500, 200);
11 smooth();
12 noStroke();
13
14 g = createGraphics(31, 31); // PGraphics(描き込めるPImageのようなもの)作成
15 g.beginDraw(); // 描画開始
16 //g.background(255); // 文字の大きさがちょうどいいか確認用
17 g.fill(0);
18 g.textFont(createFont("メイリオ", 20));
19 g.textSize(20);
20 g.textAlign(CENTER, CENTER); // 上下左右の中央にテキストを描画
21 g.text("魚", 0, 0, g.width, g.height); // 描画範囲を全体に指定 ↑と合わせて大体中央に
22 g.endDraw(); // 描画終了
23
24 images = new PImage[g.width]; // 縦に1pxずつ細切れのPImage配列
25 for (int i = 0; i < g.width; i++) {
26 images[i] = g.get(i, 0, 1, g.height);
27 }
28}
29
30void draw() {
31 background(180, 200, 100);
32 float t = 20 * noise(1, 1);
33 fill(0);
34
35 for (int i = 0; i < 100; i++) {
36 ellipse(i + xspeed, height / 3 + t * sin(theta + 0.1 * i), 31, 31);
37 }
38
39 for (int i = 0; i < images.length; i++) {
40 image(images[i], i + xspeed, height / 3 * 2 + t * sin(theta + 0.1 * i));
41 }
42
43 theta += 0.1 * direction;
44 xspeed += 0.7 * direction;
45 if (width < xspeed) xspeed = 0; // 画面外に行ったらもう一周
46
47 //image(g, 0, 0); // 文字がちゃんと書けているか確認用
48}