マウスを押すたびに図形が回転する向きを変えたいです。(右回りから左回り、左回りから右回り)
向きを変化させるなら、今どちら向きに回っているかの変数が必要です。
例えばboolean
でtrue
なら右回り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:38