The Motif System
Motif Widget Library -Xm
Widgets, Gadgets, and Convenience Functions
Your first Motif Program
Shell Widgets
Display Widgets
Your second Motif Program
Container Widgets
Dialog Widgets
Menu Widgets
Your third Motif Program
Dialog Widget Descriptions
Convenience Dialogs
Your last Motif Program
Creating Widgets
Core Widgets
CoreClassPart Structure
CorePart Structure
Core Resources
CorePart Default Values
Composite Widgets
CompositeClassPart Structure
CompositePart Structure
Composite Resources
CompositePart Default Values
Constraint Widgets
ConstraintClassPart Structure
ConstraintPart Structure
Constraint Resources
Implementation-specific Types
Widget Classing
Widget Naming Conventions
Widget Subclassing in Public .h Files
Widget Subclassing in Private .h Files
Widget Subclassing in .c Files
Widget Class and Superclass Look Up
Widget Subclass Verification
Superclass Chaining
Class Initialization: class_initialize and class_part_initialize Procedures
Initializing a Widget Class
Inheritance of Superclass Operations
Invocation of Superclass Operations
Class Extension Records
Widget Instantiation
Creating a Widget Instance
Widget Instance Initialization: the initialize Procedure
Constraint Instance Initialization: the ConstraintClassPart initialize Procedure
Nonwidget Data Initialization: the initialize_hook Procedure
Realizing Widgets
Widget Instance Window Creation: the realize Procedure
Window Creation Convenience Routine
Obtaining Window Information from a Widget
Unrealizing Widgets
Destroying Widgets
Adding and Removing Destroy Callbacks
Dynamic Data Deallocation: the destroy Procedure
Dynamic Constraint Data Deallocation: the ConstraintClassPart destroy Procedure
Exiting from an Application
Geometry Management
Initiating Geometry Changes
General Geometry Manager Requests
Resize Requests
Potential Geometry Changes
Child Geometry Management: the geometry_manager Procedure
Widget Placement and Sizing
Preferred Geometry
Size Change Management: the resize Procedure
Executing Callback Procedures
Setting Widget State
Widget State: the set_values Procedure
Widget State: the set_values_almost Procedure
Translation Management
Action Tables
Action Table Registration
Action Names to Procedure Translations
Action Hook Registration
Translation Tables
Event Sequences
Action Sequences
Multi-click Time
Colour Cathode Ray Tube
Colour Vision
Human Visual System
Colour Quantisation
The Human Eye
Colour Composition in Computers
X PseudoColour Displays
An Example of Quantising
Uniform Quantisation
Octree Quantisation
Evaluation of the Representatives
Filling the Colour Table
Mapping the Original Colours onto the Representatives
Memory and Computational Expense
Code for mapping RGB triples to 4 bits
The Popularity Algorithm
The Median Cut Algorithm
XV's Diversity Algorithm
Picking `Important' Colours
The Original Diversity Algorithm
The Modified Diversity Algorithm
Comparison of Various Algorithms
Measuring Quantisation Error
References and Further Reading
3-D Transformations.
Perspective Projection
Homogeneous Co-ordinate System.
Line Drawing Algorithms
Polygon Drawing Algorithms
Three Dimensional Algorithms
Hidden Line Algorithms
Hidden Surface Algorithms
Shading Algorithms
The colour shaded image.
Object Representation.
Primitive Instancing.
Polygonal Modelling
Constructive Solid Geometry.
Speeding Things Up
Data structures for 3-D objects.
Visual Realism.
Other Hidden Line/Surface algorithms.
Back Face algorithm.
Painters algorithm.
Scanline Algorithm
Ancient History
Recent History
The Ray Tracing Technique
Intersection Tree Generation.
Shading Algorithm.
Object Representation.
Primitive Instancing.
Constructive Solid Geometry.
Command Line Arguments
User Interface
3DDDA Techniques
General speeding up raytracing
Cheaper intersection tests
Special purpose hardware
Parallel processing and supercomputing
Adaptively reduce the number of rays cast
Decrease the number of intersection tests
Algorithm for 3DDDA
Defining the voxel grid
Spatially enumerating the scene
Traversing from voxel to voxel
Results and discussion
What is Radiosity?
Radiosity Applications
Thermal Engineering concepts behind radiosity
Radiation Heat Transfer concept
Properties of diffuse surfaces
Radiation exchange in enclosures having diffuse surfaces
Radiation exchange in enclosure having specular and diffuse surfaces
Modelling the scene
Model geometry requirements
Mesh requirements
Mesh generation
Concerning Form Factor
Form Factor definition
Hemicube and delta form factor
Problems with hemicube or hemisphere
Hybridized form factor
Global cube
Source to vertex form factor
Radiosity Solutions
Progressive Refinement method
Two-pass approach
The Preprocess
The Postprocess
A Rapid Hierarchical Radiosity algorithm
N-body problem
Form factor matrix calculation
Visibility determination
An Importance-Driven radiosity algorithm
Radiosity and Importance
Incorporation with hierarchical algorithm
Pixel interpolation
Gouraud shading
Changing environment and image refinement
Definition of dynamic environment and walkthroughs
Geometry Changes
Radiosity redistribution
Reordering patches
Handling redistribution and propagation energy shots
Conclusion of tutorial on radiosity
Hemicube form factor algorithm [Hall,89]
A Rapid Hierarchical Algorithm
Hybrid form factor algorithm
Radiosity images
Radiosity related links
Technical Reports
Links to articles and technical reports
Pretty pictures
Radiance software
Other links
Quadtrees and Octrees.
Constructing a Quadtree
Retrieving a Quadtree image
Advantages of Quadtrees
Disadvantages of Quadtrees
How Octrees work
Advantages of Octrees
Disadvantages of Octrees
What Octrees are used for
Source code
The Draughtman's Tool
Parametric Curves
Types of Splines
Bezier Curves
Designing Bezier Surfaces
Characteristics of Bezier surfaces
Applications of Bezier surfaces
Example 1 - Lens
Example 2 - Teapot
Cubic Splines
Uniform Nonrational B-Splines
Nonuniform Nonrational B-Splines
Nonuniform Rational B-Splines
Example Code.
Nurbs (Non-Uniform Rational B-Splines)
Background: Rational B-splines
Mathematical Definitions
Pretty Pictures
Example Code.
User and Device Space
Paths and Paint
PostScript Examples
Viewing PostScript
PostScript Interpreters
PostScript Level 2
Some of the features of Level 2
Display PostScript.
What makes up Display PostScript?
More Information on PostScript
Progressive Realism Demonstration - the Cow
Texture Synthesis
What is Texture Synthesis?
Where is Texture Synthesis used ?
Why do we use Texture Synthesis ?
How does Texture Synthesis work ?
Color or a Color map.
Bump maps, or surface roughness.
Surface Properties.
Synthetic vs Digitized Textures
The Texturing Function.
Using Synthesized Textures
Summary of Texture Synthesis
Displaying Textures on the Screen
Averaging Sub-pixels
The Bartlett Filter
Summed Area Tables
Tilable vs Non-Tilable Textures
Applications of Textures
Glossary of Texturing Terminology
Examples of Texture Synthesis.
Font Types.
X11 Fonts.
Conversion software
Macintosh Fonts.
PC Fonts
Sun Fonts
Amiga Fonts
Atari Fonts
Further Font information
Significance of Unit
Course Outline
Teaching Staff
Unit Organisation
Text Book/References
Texts and References
Required texts.
Other References on Closed Reserve.
Other References.
Resources Required
Common Computer Area.
Pooling of Resources and Collusion.
Assignment Details
Distance Assessment
Satisfactory attendance.
University and School Rules.
Enrolment and HECS
List of Key Dates
Example Programs
Free Widget Foundation
Icon Nomenclature of Computer Graphics

 Fig 1.1 User Interface Development Model 

Fig 1.2 Basic Widget Class Hierarchy
Fig 1.3 Primitive Class Widgets
Fig 1.4 Shell Widgets
Fig 1.5 Manager Widgets
Fig 1.6 Dialog Widgets
Fig 1.7 Gadgets
Fig 1.8 Complex application using Motif widgets
Fig 1.9 A complex Motif application
Fig 1.10 Example of dialogs.
Fig 1.11 Example of File Selection Box.
Fig 1.12 Example of Question dialog.
Fig 1.13 Example of warning dialog.
Fig 3.1 Colour
Fig 5.1 Reflection from planar surface
Fig 5.2 Refraction
Fig 6.1 Reflecting Rays.
Fig 6.2 Refraction.
Fig 6.3 Intersection Tree
Fig 6.4 Lumpy Spheres.
Fig 6.5 dda8balls (Tree depth=1)
Fig 6.6 dlamp (Tree depth=1)
Fig 6.7 dda125balls (Tree depth=1)
Fig 6.8 ddatree (Tree depth=2)
Fig 6.9 ddahat (Tree depth=1)
Fig 6.10 dda1000balls (Tree depth=1)
Fig 6.11 Timing Summary.
Fig 7.1 The main stages in radiosity method
Fig 7.2 Radiation exchange between surfaces
Fig 7.3 Reflection from diffuse surface
Fig 7.4 Energy Transfer
Fig 7.5 equation 1
Fig 7.6 equation 2
Fig 7.7 equation 3
Fig 7.8 Radiation Exchange
Fig 7.9 equation 1
Fig 7.10 Energy components
Fig 7.11 equation 4
Fig 7.12 equation 5
Fig 7.13 equation 6
Fig 7.14 equation 7
Fig 7.15 equation 8
Fig 7.16 Normals
Fig 7.17 T Vertices
Fig 7.18 Aspect ratio of inscribed circle
Fig 7.19 Light leaks
Fig 7.20 Structure Hierarchy
Fig 7.21 Mesh density
Fig 7.22 Mesh subdivision
Fig 7.23 Splitting of the Mesh
Fig 7.24 Form Factor
Fig 7.25 Nusselt analogue
Fig 7.26 A different type of pixel
Fig 7.27 Form Factor Evaluation
Fig 7.28 Hemicube Justification
Fig 7.29 Hemicube pixels
Fig 7.30 Hemicube Aliasing
Fig 7.31 Occlusion
Fig 7.32 Baum's Method
Fig 7.33 Sample points
Fig 7.34 Global Cube
Fig 7.35 Immel's Method
Fig 7.36 Progressive refinement
Fig 7.37 Analytic solution
Fig 7.38 Gathering versus Shooting
Fig 7.39 Radiation Exchange
Fig 7.40 Specular Transmission
Fig 7.41 Mirror Form Factor
Fig 7.42 Postprocessing
Fig 7.43 Jittering
Fig 7.44 Radiosity and Importance
Fig 7.45 Radiosity and Importance and Hierarchy
Fig 7.46 Vertex Radiosities
Fig 7.47 Bilinear Interpolation
Fig 7.48 Geometry Changes
Fig 8.1 (a) a region (b) its binary array (c) maximal blocks
Fig 8.2 quadtree decomposition
Fig 8.3 (a)first division (b)second division (c)third division (e)entire image divided
Fig 8.4 Final quadtree showing levels
Fig 8.5 Varied Resolution of Quadtree
Fig 8.6 First image and rotated image, different quadtrees
Fig 8.7 3-D image, its octree block composition and tree representation(Samet 1990)
Fig 9.1 Bezier surface characteristics
Fig 9.2 Joining Bezier surfaces
Fig 9.3 Bezier approx. of quarter circle
Fig 9.4 Bezier approximation of cylinder
Fig 9.1 Lens - Control net from above
Fig 9.2 Lens - Surfaces from side
Fig 9.1 Teapot - Control nets
Fig 9.2 Teapot - Surfaces
Fig 10.1 A Rendered Rosebud (or something)
Fig 10.2 Spheres
Fig 10.3 Spheres
Fig 10.4 A Seriously Deformed Sphere
Fig 11.1 Font examples
Fig 11.2 Output of example one
Fig 11.3 Output of example two
Fig 12.1 Wireframe cow.
Fig 12.2 Flat Shaded cow.
Fig 12.3 diagram taken from (Heckbert, 1986)
Fig 12.4 Image from (modified) a PhD thesis by Robert C. Lansdale
Fig 12.5 A tilable image of a continent.
Fig 12.6 Tilable paving
Fig 12.7 tiled earth
Fig 12.8 tiled herring
Fig 12.9 forrest - 24 bit jpg format ( 156104 bytes. )
Fig 12.10 No texture at all (default texture).
Fig 12.11 Pink Alabaster color map, no surface properties.
Fig 12.12 Pink Alabaster, Bumpy surface by fiddling Normal.
Fig 12.13 Pink Alabaster color map, Dents in surface.
Fig 12.14 Pink Alabaster color map, Wrinkled surface.
Fig 12.15 Silver color map and reflectivity, No normal manipulation.
Fig 12.16 Silver map and reflectivity, Bumps on surface.
Fig 12.17 Silver color map and reflectivity, Dents in surface.
Fig 12.18 Silver color map and reflectivity, Wrinkled surface.
Fig 13.1 Some typical fonts.
Fig 13.2 Other example of fonts.
Fig 13.3 Another example of fonts.
Fig 13.4 Next example of fonts.
Fig 13.5 Last example of fonts.