質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

424閲覧

Processingでオブジェクトを拡大させたい

Susan.S

総合スコア7

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1グッド

0クリップ

投稿2022/07/18 11:35

processing でお花をmousePressedの時に2.0に拡大させたいのですが、鳥にまでかかってしまっているせいか、マウスを押すと鳥も花も消えてしまいます。
お花だけを拡大させるにはどうしたらよいのでしょうか。ご回答よろしくお願いします。

float x; float easing = 0.02; void setup() { size(400, 400); noStroke(); } void draw() { background(176, 204, 226); fill(255, 165, 0); circle(350, 80, 50); tree(); bird(50, 0); bird(0, -50); } void tree() { fill(160, 82, 45); rect(55, 250, 50, 150); fill(107, 142, 35); for (int i = 0; i < 6; i++) { for (int j = 0; j <= i; j++) { circle(80 - 15 * i + 30 * j, 170 + i * 20, 30); } } if (mousePressed){ scale(2.0); } else{ scale(1.0); } stroke(0); line(350,350,350,400); fill(255,127,80); noStroke(); ellipse(345,353,10,10); ellipse(355,353,10,10); ellipse(340,345,10,10); ellipse(358,345,10,10); ellipse(345,337,10,10); ellipse(354,337,10,10); fill(255,255,0); ellipse(349,345,10,10); } void bird(int offsetX, int offsetY) { float targetX = mouseX; x += (targetX - x) * easing; float y = 200; pushMatrix(); translate(offsetX, offsetY); fill(255, 182, 193); circle(x + 50, y, 20); triangle(x + 35, y, x + 45, y - 5, x + 45, y + 5); arc(x + 75, y, 50, 50, radians(0), radians(180)); arc(x + 65, y, 35, 35, radians(300), radians(360)); popMatrix(); }
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

お花をmousePressedの時に2.0に拡大させたいのですが、鳥にまでかかってしまっているせいか、マウスを押すと鳥も花も消えてしまいます。

scaleはそれ以降効果が残りますので、当然birdにも影響します。
pushMatrixpopMatrixで、影響範囲を制限してください。
scale() / Reference / Processing.org
pushMatrix() / Reference / Processing.org
popMatrix() / Reference / Processing.org

お花だけを拡大させるにはどうしたらよいのでしょうか。

単にscale(2);とすると、左上を起点に2倍に拡大されます。
どこを中心として拡大したいのかを、scaleするtranslateで指定します。
translate() / Reference / Processing.org

どうなるべきかわからないので、とりあえず花の中央を中心としました。

Processing

1float x; 2float easing = 0.02; 3 4void setup() { 5 size(400, 400); 6 noStroke(); 7} 8 9void draw() { 10 background(176, 204, 226); 11 12 fill(255, 165, 0); 13 circle(350, 80, 50); 14 15 tree(); 16 flower(); 17 18 bird(50, 0); 19 bird(0, -50); 20} 21 22void tree() { 23 fill(160, 82, 45); 24 rect(55, 250, 50, 150); 25 26 fill(107, 142, 35); 27 for (int i = 0; i < 6; i++) { 28 for (int j = 0; j <= i; j++) { 29 circle(80 - 15 * i + 30 * j, 170 + i * 20, 30); 30 } 31 } 32} 33 34void flower() { 35 pushMatrix(); 36 translate(349, 345); 37 if (mousePressed) scale(2); 38 39 stroke(0); 40 line(1, 5, 1, 55); 41 42 fill(255, 127, 80); 43 noStroke(); 44 for (int i = 0; i < 6; i++) { 45 circle(9, 0, 10); 46 rotate(radians(360 / 6)); 47 } 48 49 fill(255, 255, 0); 50 circle(0, 0, 10); 51 52 popMatrix(); 53} 54 55void bird(int offsetX, int offsetY) { 56 float targetX = mouseX; 57 x += (targetX - x) * easing; 58 float y = 200; 59 60 pushMatrix(); 61 translate(offsetX, offsetY); 62 fill(255, 182, 193); 63 circle(x + 50, y, 20); 64 triangle(x + 35, y, x + 45, y - 5, x + 45, y + 5); 65 arc(x + 75, y, 50, 50, radians(0), radians(180)); 66 arc(x + 65, y, 35, 35, radians(300), radians(360)); 67 popMatrix(); 68}

投稿2022/07/18 13:17

TN8001

総合スコア9326

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Susan.S

2022/07/19 01:01

大変わかりやすくありがとうございます。 思う通りに作動しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問