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