//twirling squares //they revolve around the center of the window //press the mouse inside the window to make them go float boxDiam = 40 ; float boxAngle1 = 0 ; void setup (){ size ( 400 , 200 ); } void draw (){ rectMode ( CENTER ); background ( 247 ); stroke ( 0 ); translate ( 200 , 100 ); rotate (boxAngle1); fill ( 255 , 0 , 0 ); rect ( 0 , 0 ,boxDiam,boxDiam); fill ( 250 , 108 , 13 ); rect ( 60 , 0 ,boxDiam,boxDiam); fill ( 250 , 203 , 13 ); rect ( 120 , 0 ,boxDiam,boxDiam); fill ( 182 , 250 , 13 ); rect ( 180 , 0 ,boxDiam,boxDiam); if ( mousePressed == true ){ boxAngle1 += . 05 ; } } |
Here is a 13 second video demonstration (video has no sound)
Note the difference between this program and the previous one. In this one I use a series of pushMatrix() / popMatrix() pairs around each rectangle so that they each rotate about their own centers.
//twirling squares //they each rotate about their own centers //press the mouse in the window to make them go float boxDiam = 40 ; float boxAngle1 = 0 ; void setup (){ size ( 400 , 200 ); } void draw (){ rectMode ( CENTER ); background ( 247 ); stroke ( 0 ); pushMatrix (); translate ( 200 , 100 ); rotate (boxAngle1); fill ( 255 , 0 , 0 ); rect ( 0 , 0 ,boxDiam,boxDiam); popMatrix (); pushMatrix (); translate ( 260 , 100 ); rotate (boxAngle1); fill ( 250 , 108 , 13 ); rect ( 0 , 0 ,boxDiam,boxDiam); popMatrix (); pushMatrix (); translate ( 320 , 100 ); rotate (boxAngle1); fill ( 250 , 203 , 13 ); rect ( 0 , 0 ,boxDiam,boxDiam); popMatrix (); pushMatrix (); translate ( 380 , 100 ); rotate (boxAngle1); fill ( 182 , 250 , 13 ); rect ( 0 , 0 ,boxDiam,boxDiam); popMatrix (); if ( mousePressed == true ){ boxAngle1 += . 05 ; } } |
Here is a 13 second video demonstration (video has no sound)
In this one, I translate to (200,100) so that the center of the red box is the origin around which the rotation happens. The important thing to remember with rotations is to translate first, and then rotate.
//twirling squares //they revolve around the center of the window //in 3D! //press the mouse to make them go float boxDiam = 40 ; float boxAngle1 = 0 ; void setup (){ size ( 400 , 200 , P3D ); } void draw (){ rectMode ( CENTER ); background ( 247 ); smooth (); stroke ( 0 ); translate ( 200 , 100 ); rotateY(boxAngle1); fill ( 255 , 0 , 0 ); rect ( 0 , 0 ,boxDiam,boxDiam); fill ( 250 , 108 , 13 ); rect ( 60 , 0 ,boxDiam,boxDiam); fill ( 250 , 203 , 13 ); rect ( 120 , 0 ,boxDiam,boxDiam); fill ( 182 , 250 , 13 ); rect ( 180 , 0 ,boxDiam,boxDiam); if ( mousePressed == true ){ boxAngle1 += . 05 ; } } |
Here is a 13 second video demonstration (video has no sound)