Presentation on theme: "Computer Graphics Through OpenGL: From Theory to Experiments, Second Edition Chapter 10."— Presentation transcript:
Computer Graphics Through OpenGL: From Theory to Experiments, Second Edition Chapter 10
Figure 10.1: One-dimensional objects.
Figure 10.2: Graphs of familiar plane curves (curves are fairly accurate sketches but not exact plots).
Figure 10.3: A couple of exotic curves.
Figure 10.4: More exotic curves.
Figure 10.5: A sphere and a plane intersect in a circle.
Figure 10.6: Helix.
Figure 10.7: Parameter space T = [a; b] mapped to a curve c. The sample grid on T, as well as its corresponding mapped sample on c, has 15 points (not all labeled). The polyline l connecting the mapped sample approximates c.
Figure 10.8: A uniformly sampled parabola y = x 2.
Figure 10.9: Screenshot of astroid.cpp.
Figure 10.10: (a) Curve with a repeating pattern (b) Ax head.
Figure 10.11: Supercircles |x| n + |y| n = 1, for n = 1/2, 1, 2, 4.
Figure 10.12: Points on a circle from a rational parametrization.
Figure 10.13: Conic sections.
Figure 10.14: (a) A double cone C showing two of the lines through the origin lying on it (b) A hyperbolic section of C by a non-radial plane p (c) Cross-sectional view of a non-radial plane p intersecting C.
Figure 10.15: Non-curves: (a) x 2 – y 2 = 0 (b) x 2 + y 2 = 0 (c) y = 0, if x is an integer, 1 otherwise (gaps in the blue line indicate missing points).
Figure 10.16: (a) A smooth curve (b) A non-smooth curve with a corner at P where the tangent changes direction abruptly.
Figure 10.17: Tangent vectors to a circle.
Figure 10.18: Good and bad parametrizations.
Figure 10.19: Regular curves that share a tangent line at a common endpoint join to make one regular curve.
Figure 10.20: Various orders of continuity.
Figure 10.21: Camera moving along a path with a C 2 -discontinuity at the origin O.
Figure 10.22: (a) and (b) Non-simple planar polygons (c) and (d) Simple planar polygons (what we call polygons).
Figure 10.23: (a), (b) and (c) Meshes (d) and (e) Not meshes: parts around vertices V and W are not sheet-like (f) Your call.
Figure 10.24: Planar surfaces with colored boundary; the last one has two components. The black edges belong to approximating meshes.
Figure 10.25: Wooden chair.
Figure 10.26: Parametric mapping of a circular cylinder s.
Figure 10.27: Triangular mesh approximation of a circular cylinder. Upper: A uniform sample grid on the parameter rectangle and its corresponding mapped sample on the cylinder. Only a few points are labeled. Vertices of a triangle strip on the rectangle maps to those of a strip approximating a band of the cylinder. Lower: A map from a grid rectangle to a patch of the cylinder.
Figure 10.28: Screenshot of cylinder.cpp.
Figure 10.29: The composed mapping implemented in cylinder.cpp: first the parameter space is scaled, then mapped to the cylinder.
Figure 10.30: Screenshot of hemisphere.cpp.
Figure 10.31: Screenshot of helicalPipe.cpp.
Figure 10.32: Draw these by modifying cylinder.cpp.
Figure 10.34: Computing parametric equations of a torus: (a) Profile circle c revolves along trajectory circle C (b) Sectional view of the left diagram along the plane containing the z-axis and OO’.
Figure 10.35: Screenshot of torus.cpp.
Figure 10.36: Screenshot of torusSweep.cpp.
Figure 10.37: (a) Part of a toroidal helix (b) Part of a toroidal helix pipe.
Figure 10.38: (a) The profile curve for a table on the xy-plane, with the z-coordinates, all 0, not written (b) A point on the profile curve after a rotation CW about the y-axis.
Figure 10.39: Screenshot of table.cpp.
Figure 10.40: (a) A cone and (b) a doubly-curled cone as swept surfaces.
Figure 10.41: Screenshot of doublyCurledCone.cpp.
Figure 10.42: Screenshot of extrudedHelix.cpp.
Figure 10.43: Stuff to draw.
Figure 10.44: Model these? You gotta be kidding!
Figure 10.45: A ruled surface showing several rulings and two defining trajectories.
Figure 10.46: Bilinear patch.
Figure 10.47: Screenshot of bilinearPatch.cpp.
Figure 10.48: Generalized cones: (a) over a non-closed curve (b) over a closed curve (c) Right circular cone. Only the part between the two trajectories is drawn.
Figure 10.49: A generalized cylinder and a special case.
Figure 10.50: The nine non-degenerate quadric surfaces (from Wikimedia).
Figure 10.51: (a) Screenshot of hyperboloid1sheet.cpp (b) Edible hyperbolic paraboloids (c) Hyperboloid footbridge over Corporation Street in Manchester in England supported by its rulings (courtesy of Patrick Litherland).
Figure 10.54: Regular polygons with number of sides indicated. The triangle shows its circumscribed circle.
Figure 10.55: The five regular polyhedra with the number of faces indicated.
Figure 10.56: Screenshot of tetrahedron.cpp.
Figure 10.57: The five regular polyhedra each containing its inscribed dual (the cube is labeled to help with Exercise 10.67).
Figure 10.58: Mapping a rectangle onto surfaces.
Figure 10.59: Patting gray a double torus.
Figure 10.60: Functions (u, v) → (f(u; v), g(u; v), h(u; v)) and their images.
Figure 10.61: Any neighborhood of P will consist of two intersecting fragments, which cannot lie in one coordinate patch.
Figure 10.62: (a) One coordinate patch wrapping almost all the way around a cylinder (b) A punctured square.
Figure 10.63: The non-zero linearly independent tangent vectors span the tangent plane p at P.
Figure 10.64: Various orders of surface continuity.
Figure 10.65: Screenshot of bezierCurves.cpp with six control points, showing both the Bezier curve and its control polygon.
Figure 10.66: Screenshot of bezier- CurveWithEvalCoord.cpp.
Figure 10.67: Two Bezier curves, one blue and one red, meet smoothly at an endpoint, as their control polygons meet smoothly (because v’, v and v’’ are collinear).
Figure 10.68: Screenshot of bezier- CurveTangent.cpp.
Figure 10.69: Screenshot of bezierSurface.cpp, showing both the surface mesh and its control polyhedron.
Figure 10.70: Screenshot of bezierCanoe.cpp.
Figure 10.71: Two bicubic Bezier patches and their control polyhedrons, one pair blue and one red. The patches meet smoothly along a shared boundary curve which, together with its control polygon, is black.
Figure 10.72: FreeGLUT library's version of the Utah teapot and Martin Newell's original porcelain Melitta model (from Wikimedia).
Figure 10.73: Screenshot of torpedo.cpp.
Figure 10.74: Bezier lady's shoe (courtesy of Pongpon Nilaphruek).
Figure 10.75: Aircraft and express train.
Figure 10.76: A coastline at increasing degrees of resolution: pairs of arrows indicate a blow-up.