640 likes | 856 Views
Computer Graphics Through OpenGL: From Theory to Experiments, Second Edition. Chapter 4. Figure 4.1: Screenshot of box.cpp. Figure 4.2: Translation: glTranslatef(p, q, r). Figure 4.3: Translating into the viewing frustum. Figure 4.4: Screenshot of Experiment 4.3. Figure 4.5: Scaling:
E N D
Computer Graphics Through OpenGL: From Theory to Experiments, Second Edition Chapter 4
Figure 4.1: Screenshot of box.cpp.
Figure 4.4: Screenshot of Experiment 4.3.
Figure 4.5: Scaling: glScalef(u, v, w).
Figure 4.6: Screenshot of initial configuration of Experiment 4.4.
Figure 4.7: Reflection in the yz-plane.
Figure 4.8: Screenshots of Experiment 4.5: (a) before scaling (b) after.
Figure 4.9: Screenshot for Experiment 4.6.
Figure 4.10: Turning along a cylinder.
Figure 4.11: Rotation: glRotatef(A, p, q, r). The point P is rotated according to the 4-step process in the text. The rotation of a box is also shown.
Figure 4.15: Screenshots: (a) Experiments 4.10 and (b) 4.11.
Figure 4.16: Local system (bold) coincides with the global initially. The global system is fixed.
Figure 4.17: Transitions of the box, the box's local coordinates system (bold) and the sphere. The world coordinate system, which never changes, coincides with the box's initial local.
Figure 4.18: Screenshot of relativePlacement.cpp after all transformations from the scaling down have been executed.
Figure 4.19: Planning a head on a torso: (a) The plan (b) Drawn without isolating the scaling (c) After isolating the scaling.
Figure 4.21: Screenshot of rotatingHelix1.cpp.
Figure 4.22: Animation control in rotatingHelix3.cpp.
Figure 4.23: Successive cycles in double buffering.
Figure 4.24: Screenshot of ballAndTorus.cpp.
Figure 4.25: The ball's axis of latitudinal rotation from its start position is L.
Figure 4.26: Screenshot from Experiment 4.21.
Figure 4.27: Screenshot of throwBall.cpp.
Figure 4.28: Ball bouncing off wall.
Figure 4.29: Screenshot of (a) clown1.cpp (b) clown2.cpp (c) clown3.cpp.
Figure 4.30: (a) Cone drawn by glutWireCone(base, height, slices, stacks) (b) Torus drawn by glutWireTorus(inRadius, outRadius, sides, rings). Note that the axes are depicted differently in each diagram.
Figure 4.31: Screenshot of floweringPlant.cpp in mid-bloom.
Figure 4.32: (a) Ball rolling down one plane (b) Ball rolling down two planes (c) Ball bouncing on a box (d) Ball traveling along a helix (e) Four segments opening from a square into a straight line (f) Solar system with a sun, one planet and two moons (g) Pool table with one ball.
Figure 4.33: (a) The (conceptual) OpenGL camera's default pose (b) A (conceptual) point camera at the origin with film on the viewing plane of the frustum.
Figure 4.34: Camera pose determined by gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz).
Figure 4.35: (a) gluLookAt(): the broken frustum is the original viewing frustum, the unbroken one is where it's translated by the gluLookAt() call, the box doesn't move. (b) glTranslatef(): the viewing frustum doesn't move, rather the box is translated by the glTranslatef() call.
Figure 4.36: Sectional diagrams of the (simulated) conguration of the eye and frustum for various gluLookAt() calls in boxWithLookAt.cpp.
Figure 4.38: Taking the dot product: u·v = |u||v|cos θ .
Figure 4.39: (a) Splitting v into components v1 and v2, parallel and perpendicular to u, respectively (b) v2 as the “shadow” of v on a plane p perpendicular to u.
Figure 4.40: The camera is seen face-forward so that its back-plane p lies on the page. The line of sight los comes perpendicularly up from the page toward the reader. The components of the vector up, parallel and perpendicular to los, respectively, are up1 and up2 (the latter lying on the page).
Figure 4.42: Checking the solution to Exercise 4.44(a).
Figure 4.44: Camera rotated on an imaginary sphere enclosing a teapot.
Figure 4.46: Restoring the camera to its default pose: broken arrows indicate movements which applied take the camera to the next conguration in the sequence (a)-(d).
Figure 4.47: Screenshot from Experiment 4.30.
Figure 4.48: Viewing transformation equivalent to a sequence of modeling transformations.
Figure 4.49: Applying a translation (1) and rotations (2)-(4) about the three coordinate axes to bring the camera back to its default pose. The original line of sight is bold. The up direction is shown only at the end.