PowerPoint - Computer Graphics Through OpenGL: From Theory to

advertisement
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 = x2.
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) x2 – y2 = 0 (b) x2 + y2 = 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 C2-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.33: Swept surfaces: trajectories dashed arrows, profiles solid black.
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.52: GLU quadrics: (a) Sphere (b) Tapered cylinder (c) Annular disc (d)
Partial annular disc.
Figure 10.53: Defining the GLU quadrics.
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 bezierCurveWithEvalCoord.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 bezierCurveTangent.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.
Figure 10.77: Koch curves.
Figure 10.78: Screenshots from fractals.cpp: (a) Koch snowflake (b) Variant Koch
snowflake (c) Tree.
Figure 10.79: The variant Koch curve and fractal tree.
Figure 10.80: A T-pipe is simulated by sticking one GLU cylinder into another.
Figure 10.81: Sheared?
But, what about the other
side?
Download