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

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

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

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

Q&A

解決済

1回答

196閲覧

Processingで図形を逆回転させたい

angars

総合スコア1

Processing

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

1グッド

0クリップ

投稿2024/06/26 07:32

実現したいこと

マウスを押すたびに図形が回転する向きを変えたいです。(右回りから左回り、左回りから右回り)

発生している問題・分からないこと

どの関数を使えば実現できるのかわかりません。

該当のソースコード

float angle=0.0; int x,y; void setup(){background(255); size(800,600); fill(255); } void draw(){ translate(mouseX,mouseY); rotate(angle); fill(255); rectMode(CENTER); rect(0,0,100,100); angle=angle+radians(3); } void mousePressed(){ background(random(255),random(255),random(255)); angle=angle-radians(3); }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

同じようなプログラムを組んでいる人が見つかりませんでした。

補足

特になし

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

マウスを押すたびに図形が回転する向きを変えたいです。(右回りから左回り、左回りから右回り)

向きを変化させるなら、今どちら向きに回っているかの変数が必要です。

例えばbooleantrueなら右回りfalseなら左回りとして、if文でangleに足すのか引くのかを切り替えてもいいでしょう。

Processing

1float angle; 2// trueなら右回りfalseなら左回り 3boolean rotationRight = true; 4 5void setup() { 6 size(800, 600); 7 rectMode(CENTER); 8 fill(255); 9 background(255); 10 11 // 最初に左上に出ちゃうのがちょっと見苦しいので画面外に飛ばしとく 12 mouseX = mouseY = -100; 13} 14 15void draw() { 16 translate(mouseX, mouseY); 17 rotate(angle); 18 rect(0, 0, 100, 100); 19 20 if (rotationRight) { 21 // angle = angle + radians(3); 22 // ↑と同じ意味 23 angle += radians(3); 24 } else { 25 angle -= radians(3); 26 } 27} 28 29void mousePressed() { 30 background(random(255), random(255), random(255)); 31 32 // ブール値を反転 33 //if (rotationRight) { 34 // rotationRight = false; 35 //} else { 36 // rotationRight = true; 37 //} 38 // ↑と同じ結果 39 rotationRight = !rotationRight; 40}

boolean / Reference / Processing.org
+= (add assign) / Reference / Processing.org
-= (subtract assign) / Reference / Processing.org
! (logical NOT) / Reference / Processing.org

あるいは変化量(radians(3))を変数にとって、プラスなら右回りマイナスなら左回りとするほうがスマートな感じもしますね。

Processing

1float angle; 2// 変化量 プラスなら右回りマイナスなら左回り 3float delta = radians(3); 4 5void setup() { 6 size(800, 600); 7 rectMode(CENTER); 8 fill(255); 9 background(255); 10 mouseX = mouseY = -100; 11} 12 13void draw() { 14 translate(mouseX, mouseY); 15 rotate(angle); 16 rect(0, 0, 100, 100); 17 angle += delta; 18} 19 20void mousePressed() { 21 background(random(255), random(255), random(255)); 22 23 // 符号を反転(delta *= -1; でもOK) 24 delta = -delta; 25}

- (minus) / Reference / Processing.org
*= (multiply assign) / Reference / Processing.org

投稿2024/06/26 09:18

TN8001

総合スコア9640

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

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

angars

2024/06/26 09:38

試したところ問題が解決しました! わざわざ二つも例を教えてくださり、ありがとうございます! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問