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

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

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

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

Q&A

解決済

1回答

2493閲覧

processingのpushMatrix()とpopMatrix()について

mana_mana419

総合スコア27

Processing

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

0グッド

0クリップ

投稿2020/01/28 00:37

編集2020/01/28 00:40

お世話になっております。
今processingのpushMatrix()とpopMatrix()をいじっていて疑問が生まれたためご質問をさせて頂きました。
この二つの関数で座標を保存し、一連のコードが終わったら元の座標に戻すことはわかりました。
ですがこの下のコードの中のA,C{pushMatrix()}とB,D{popMatrix()}がない時に、矩形2が矩形1を中心に回っており、それがpushMatrix()とpopMatrix()があることで矩形1も矩形2も矩形の中心から回るようになった流れがうまく掴み取れませんでした。
多分なのですが矩形1から矩形2が終わるまでの座標の遷移が掴めていないような気がしています。。。

上手くまとめられず、読みにくくすいません。もしわかる方がいました、是非お力を貸して頂きたいです。
よろしくお願いしますm(_ _)m

proccesing

1float angle = 0.0; //回転角度 2 3//初期設定 4void setup(){ 5 //画面初期設定 6 size(800,600); 7 frameRate(60); 8 fill(0,127,255); 9 noStroke(); 10} 11 12//繰り返し描画 13void draw(){ 14 background(0); 15 16 //矩形1 17 pushMatrix(); //座標を保存する・・・A 18 translate(width/4,height/4); 19 rotate(angle); 20 rectMode(CENTER); 21 rect(0,0,100,100); 22 popMatrix(); //保存した座標に復元する・・・B 23 24 //矩形2 25 pushMatrix(); //座標を保存する・・・C 26 translate(width/2,height/2); 27 rotate(angle); 28 rectMode(CENTER); 29 rect(0,0,200,200); 30 popMatrix(); //保存した座標に復元する・・・D 31 32 //角度を更新する 33 angle += 0.1; 34} 35

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

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

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

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

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

guest

回答1

0

ベストアンサー

座標系はdraw()を抜けるとリセットされますから、矩形2の方のpush/popは意味が無いです。
で、draw()に入った直後の座標系をpushしてpopしているのですから、つまり、

Processing

1float angle = 0.0; //回転角度 2 3//初期設定 4void setup() { 5 //画面初期設定 6 size(800, 600); 7 frameRate(60); 8 fill(0, 127, 255); 9 noStroke(); 10} 11 12//繰り返し描画 13void draw() { 14 background(0); 15 16 //矩形1 17 //pushMatrix(); //座標を保存する・・・A 18 translate(width/4, height/4); 19 rotate(angle); 20 rectMode(CENTER); 21 rect(0, 0, 100, 100); 22 //popMatrix(); //保存した座標に復元する・・・B 23 resetMatrix(); //push/popって、このプログラムでは結局こういうことでしょう? 24 25 //矩形2 26 // 無意味 pushMatrix(); //座標を保存する・・・C 27 translate(width/2, height/2); 28 rotate(angle); 29 rectMode(CENTER); 30 rect(0, 0, 200, 200); 31 // 無意味 popMatrix(); //保存した座標に復元する・・・D 32 33 //角度を更新する 34 angle += 0.1; 35}

でも同じ動作になります。これならわかりますか?

投稿2020/01/28 14:33

thkana

総合スコア7639

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

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

mana_mana419

2020/01/28 18:04

とても分かり易かったです!丁寧に教えていただきありがとうございました( ´ ▽ ` )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問