Introduction
Solutions for session 10.
Exercises
Source code of the exercises.
Exercise 1: Spinning Cube
/************************* * Extra motion variables *************************/ float scalefactor = 1.0; // zooming factor float a = 0; // rotation parameter void draw() { // ... /********************************** * make cube turn counterclockwise **********************************/ translate(0,-cos(a),sin(a)); a += 0.01; /******************* * make cube rotate *******************/ rotateX(cos(a)*radius); rotateY(sin(a)*radius); rotateZ(cos(tiltspeed * angle) * tilt); /********************* * Zooming in and out *********************/ scale(cos(scalefactor), cos(scalefactor), cos(scalefactor)); scalefactor += 0.01; drawCube(); }
Exercise 2: 3D Sierpinski Triangle
void recursive_tri(int i) { if (i <= 1) { /* Base case: draw a pyramid */ beginShape(TRIANGLES); fill(1.0f, 0.0f, 0.0f); vertex(-80.0, -80.0, 80.0); fill(0.0f, 1.0f, 0.0f); vertex(80.0, -80.0, 80.0); fill(0.0f, 0.0f, 1.0f); vertex(0.0, 80.0, 0.0); fill(1.0f, 0.0f, 0.0f); vertex(80.0, -80.0, 80.0); fill(0.0f, 1.0f, 0.0f); vertex(0.0, -80.0, -80.0); fill(0.0f, 0.0f, 1.0f); vertex(0.0, 80.0, 0.0); fill(1.0f, 0.0f, 0.0f); vertex(0.0, -80.0, -80.0); fill(0.0f, 1.0f, 0.0f); vertex(-80.0, -80.0, 80.0); fill(0.0f, 0.0f, 1.0f); vertex(0.0, 80.0, 0.0); fill(1.0f, 0.0f, 0.0f); vertex(-80.0, -80.0, 80.0); fill(0.0f, 1.0f, 0.0f); vertex(80.0, -80.0, 80.0); fill(0.0f, 0.0f, 1.0f); vertex(0.0, -80.0, -80.0); endShape(); } else { --i; pushMatrix(); /* draw lower front left */ translate(-40.0, -40.0, 40.0); scale(0.5, 0.5, 0.5); recursive_tri(i); popMatrix(); pushMatrix(); /* draw lower front right */ translate(40.0, -40.0, 40.0); scale(0.5, 0.5, 0.5); recursive_tri(i); popMatrix(); pushMatrix(); /* draw lower back middle */ translate(0.0, -40.0, -40.0); scale(0.5, 0.5, 0.5); recursive_tri(i); popMatrix(); pushMatrix(); /* draw top-middle */ translate(0.0, 40.0, 0.0); scale(0.5, 0.5, 0.5); recursive_tri(i); popMatrix(); } }
The solutions to the C exercises can be found here.