Getting Started / 1: |
Introduction / 1.1: |
Access to Libraries / 1.2: |
Data Types / 1.3: |
Terminology / 1.4: |
The OpenGL Utility Toolkit-GLUT / 1.5: |
Our First Program / 1.6: |
Drawing Primitives / 1.6.1: |
Gaps, Lines and Blobs / 1.6.2: |
Other Line Types / 1.6.3: |
Surface Patterns and Polygon Stippling / 1.6.4: |
Character Generation / 1.6.5: |
Parametric Representation of Curves / 1.7: |
The Growth or Logarithmic Spiral / 1.7.1: |
Approximation and Processing Efficiency / 1.8: |
Line Drawing / 1.8.1: |
The Digital Difference Analyser / 1.8.2: |
Bresenham's Algorithm / 1.8.3: |
Bresenham's Algorithm for a Circle / 1.8.4: |
Problem Solving Through Graphics / 1.9: |
The Application Programming Interface (API) / 1.10: |
The OpenGL Utility Toolkit (GLUT) Library / 1.10.1: |
Mouse Interaction / 1.10.2: |
Keyboard Interaction / 1.10.3: |
Exercises / 1.11: |
Conclusion / 1.12: |
Image File Formats / 2: |
The Bitmap File / 2.1: |
Bitmap-file Structure / 2.2.1: |
A Typical File Layout / 2.2.2: |
Reading and Drawing a Bitmap File / 2.2.3: |
Creating a Display Window / 2.2.4: |
Creating the Image for Display / 2.2.5: |
Monochrome Bitmaps / 2.2.6: |
A General Class for Input of Bit Map Files / 2.2.7: |
Manipulating Bit Maps - Embossing / 2.2.8: |
Audio/Video Interleaved (AVI) File Format / 2.3: |
Chunk Hierarchy / 2.3.1: |
An Example of Web Cam Display / 2.3.2: |
Compression / 2.3.3: |
Image Processing / 2.4: |
Finding Objects / 3.1: |
Edge Detection / 3.2.1: |
Numerical Implementation / 3.2.2: |
Sobel Operator / 3.2.3: |
Convolution / 3.2.4: |
Laplacian Operator / 3.2.5: |
Smoothing and Edge Finding / 3.2.6: |
Histogram Equalisation / 3.3: |
Component (object) Labelling / 3.4: |
Exploring Connectivity (1) / 3.4.1: |
Exploring Connectivity (2) / 3.4.2: |
Multiple Regions / 3.4.3: |
Drawing on the Screen and Data Capture / 3.5: |
Outlining of Areas of Interest on Images / 3.5.1: |
An Approach to Automating Edge Detection / 3.5.2: |
Transformations / 3.6: |
Representing Points and Vectors / 4.1: |
Vector Dot Products / 4.2.1: |
The Vector Cross Product / 4.2.2: |
Using the Cross Product to Provide Colour Variation to a Cylinder / 4.2.3: |
Coordinate Systems / 4.3: |
Rotation / 4.4: |
A Simple Example of Rotation / 4.4.2: |
General Rotations About Any Point / 4.4.3: |
The Model View Matrix / 4.5: |
Adding Some Movement / 4.6: |
Movement of Composite Objects / 4.6.1: |
The Orrery / 4.6.2: |
The Internal Combustion Engine / 4.6.3: |
Arms, Robots, Actuators and Movement / 4.6.4: |
Data Capture of Limb Movement / 4.6.5: |
Animation - A Walking Robot / 4.6.6: |
Collision Detection / 4.7: |
Viewing and Projection / 4.8: |
Vertex Pipeline / 5.1: |
The Viewing Process / 5.3: |
Engineering Drawings / 5.3.1: |
Orthographic or Parallel Projection / 5.4: |
From Real World to Screen Window / 5.4.1: |
Inside the Matrix / 5.4.2: |
Getting to Grips with Where Things Are / 5.4.3: |
Perspective Projection / 5.4.4: |
Understanding the View / 5.4.5: |
Lighting and Colour / 5.5: |
The Electromagnetic Spectrum / 6.1: |
Colour / 6.2.1: |
Mixing Colours / 6.2.2: |
The Shading Model / 6.2.3: |
Lighting and Illumination / 6.3: |
Setting up the Lighting / 6.3.1: |
Addition of Specular Light / 6.3.2: |
A Synthetic Face / 6.4: |
Getting the Vertex Coordinates / 6.4.1: |
Moving the Eye and Light Source Together / 6.4.2: |
Shadows - A Projection / 6.5: |
Derivation of the Shadow Outline Using Equation of a Line / 6.5.1: |
A Polygon Moving Shadow / 6.5.2: |
Texture Mapping / 6.6: |
The Mapping Process / 7.1: |
Setting up Textures / 7.3: |
Drawing the Texture / 7.3.1: |
Mapping onto Curved Surfaces / 7.4: |
Mercator Lines of Projection / 7.4.1: |
Quadric Surfaces / 7.4.2: |
Mapping onto a Spherical Surface / 7.4.3: |
Mapping one Image to Sphere / 7.4.4: |
Cylinder Texturing Mapping / 7.4.5: |
Mapping to a Circle / 7.4.6: |
Mapping to a Cone / 7.4.7: |
Mapping onto a General Surface / 7.4.8: |
Mapping onto a Contour Surface / 7.4.9: |
Adding Some Movement - A Rotating Hemisphere / 7.5: |
Movement via the Mouse / 7.5.1: |
Using Bit Maps to Provide Context / 7.6: |
Blending / 7.6.1: |
Manipulating Pixels / 7.6.2: |
Three-Dimensional Texturing / 7.7: |
Simulation of a Spherical Object / 7.7.1: |
Building a Solid Model of a Head / 7.7.2: |
Objects to Artefacts / 7.8: |
Artefact Hierarchy / 8.1: |
Construction Double Sided Squares / 8.2.1: |
A Box as a Basic Building Block / 8.2.2: |
Building a Table / 8.2.3: |
Integrating to a System / 8.3: |
Changing the Furniture Style / 8.4: |
Curves, Surfaces and Patterns / 8.5: |
Fitting a Line or a Curve / 9.1: |
Straight Line Fitting to Data Points / 9.2.1: |
Lagrange Polynomials and Curve Fitting / 9.2.2: |
A Practical Approach to Curve Fitting / 9.2.3: |
Curve Fitting Using Cubic Splines / 9.2.4: |
Surface Construction from Contour Maps / 9.2.5: |
A Spline Surface Construction / 9.2.6: |
Bezier Curves / 9.2.7: |
General Curve Representation / 9.2.8: |
The Beginning's of a Bezier Surface / 9.2.9: |
Using Rotation to Sweep Out a Ring / 9.2.10: |
Patching a Surface / 9.2.11: |
Complex Shapes and Fractal Geometry / 9.3: |
Introductory Concepts / 9.3.1: |
Reduction Copying / 9.3.2: |
Implementation of a Sierpinski Gasket / 9.3.3: |
Pascal's Triangle / 9.3.4: |
The Sierpinski Gasket in 3 Dimensions / 9.3.5: |
Order Out of Chaos - A Non-deterministic Gasket? / 9.3.6: |
An Alternative Idea for a Tree or Plant / 9.3.7: |
Koch Curves / 9.4: |
Further Thoughts on the Koch Snowflake / 9.4.1: |
Self-Similarity / 9.4.2: |
Random Koch Fractals / 9.4.3: |
Back to Trees and Bushes / 9.4.4: |
Brownian Motion / 9.5: |
Fractalised Lines / 9.5.1: |
Fractal Surfaces / 9.5.2: |
Appendix A / 9.6: |
Starting up VC++ 6.0 / A.1: |
Appendix B |
Bresenham's Line Algorithm - General Conditions / B.1: |
Appendix C |
Matrix and Vector Algebra / C.1: |
Matrix Addition or Subtraction / C.2: |
Matrix Multiplication / C.3: |
Matrix Vector Multiplication / C.4: |
Example of Matrix Multiplication / C.5: |
Shearing Matrices / C.6: |
Appendix D |
Equation of a Plane / D.1: |
References |
Index of Functions |
Index |
Getting Started / 1: |
Introduction / 1.1: |
Access to Libraries / 1.2: |