Graphics

Contents
A.General and Miscellaneous D. Software Packages
B. Algorithms E. File Formats and Conversions
C. Mathematical Techniques F. Journals, Magazines, Books, Resources

Also see: efg's Color, Simulation & Modeling, and  Image Processing Reference Library Pages and
Graphics and Image Processing Project Pages


A. General and Miscellaneous

Computer Graphics

Graphics Resources:  http://www.onlinegraphicdesigndegree.com/resources/graphics-resources/

Game Programming

Amit's Game Programming Information
http://www-cs-students.stanford.edu/~amitp/gameprog.html

Graphics Archive Disks (1990-1998), Images (1992-1998), Programs
www.hornet.org/graphics
Symbols SYMBOLS.com contains more than 2,500 Western signs, arranged into 54 groups according to their graphic characteristics. www.symbols.com
User Interface User Interface Design Tips by well-known expert Bruce Tognazzini ("TOG")
www.asktog.com/menus/designMenu.html

User Interface Engineering
http://www.uie.com

Web Usability
www.useit.com

Digital Human Factors & Ergonomics Resources
www.2-sir.com/Human_Factors

World Wide Web Consortium Notes Precision Graphics Markup Language
www.w3.org/TR/1998/NOTE-PGML

Vector Markup Language
www.w3.org/TR/NOTE-VML


B. Algorithms

general

TechnoMagi:  Algorithm Links
www.technomagi.com/links/graphics.html

2D Transformations [Foley96, pp. 201-213]
3D Transformation [Foley96, pp. 213-216]
Alpha Blending

MMX Enhanced Alpha Blending
www.gamedev.net/reference/articles/article817.asp 

Animation Anmation Resources
http://www.onlinegraphicdesigndegree.com/resources/animation-resources/

[Foley96, Chapter 21, pp. 1057-1081]

Animation tools & tips
www.compuphase.com/animtips.htm

Antialiasing

Unweighted Area Sampling
Weighted Area Sampling
Gupta-Sproull Antialiased Lines
[Foley96, Section 3.17, pp. 132-142, 617-647]

Antialiasing Lines
[Foley96, Section 19.3.1, pp. 967-969]

Antialiasing Circles
[Foley96, Section 19.3.2, pp. 969-971]

Antialiasing General Curves
[Foley96, Section 19.3.4, pp. 974-975]

Antialiasing Rectangles, Polygons, and Line Ends
[Foley96, p. 975]

Wu Anti-aliased Lines
http://freespace.virgin.net/hugo.elias/graphics/x_wuline.htm

Antialiasing and Raytracing
http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/aliasing/ 

BitBlt Making CopyPixel Fast
[Foley96, Section 19.6, pp. 986-992]
Bresenham's algorithm G. Hoffmann's "Drawing Lines"
www.fho-emden.de/~hoffmann/drawf11102001.pdf 

Bresenham's Line and Circle Algorithms
http://www.gamedev.net/reference/articles/article767.asp 

Bresenham's Line Algorithm from Byte, March 1988, pp. 249-253.

Camera Transform

World and Camera Coordinates
Practical Handbook on Image Processing for Scientific Applications 
p. 126

Clipping

A General Polygon Clipping Library
http://www.cs.man.ac.uk/~amurta/software/gpc.html 

Cohen-Sutherland Line-Clipping Algorithm
[Foley96, Section 3.12.3, pp. 113-117]

Cyrus and Beck Parameteric Line-Clipping Algorithm
[Foley96, Section 3.12.4, pp. 117-124]

Sutherland-Hodgman Polygon-Clipping Algorithm
[Foley96, Section 3.14.1, pp. 124-127]

Generic Polygon Clipper Library
www.cs.man.ac.uk/aig/staff/alan/software

Clipping
[Foley96, pp. 924-946]

comp.graphics.algorithms FAQ www.exaflop.org/docs/cgafaq or
ftp://rtfm.mit.edu/pub/faqs/graphics/algorithms-faq
Contours, Contour Maps

Implementation of an Improved Contour Plotting Algorithm
http://members.bellatlantic.net/~vze2vrva/thesis.html 

MUMIL - a cursor based contouring routine
www.triplexware.huckfinn.de/contweber.html 

Contouring.  A guide to the analysis and display of spatial data, Pergamon Press, 1992.   Amazon Link

Contouring Algorithm, Byte Magazine, July 1987
http://local.wasp.uwa.edu.au/~pbourke/papers/conrec/ 

Contour Maps
http://field.hypermart.net

Dithering See efg's Image Processing Reference Library Algorithms page
Filling Rectangles, Polygons
[Foley96, Sections 3.5-3.6, pp. 91-98, 979-986]
Flare/Glare Physically-based glare effects for digital images
www.graphics.cornell.edu/pubs/1995/SSZG95.html
Graphics Gems Repository On-line repository for the code from the Graphics Gems series by Academic Press.
www.graphicsgems.org 
www.acm.org/tog/GraphicsGems  
Also see Master Table of Contents at
ftp://ftp-graphics.stanford.edu/pub/Graphics/GraphicsGems/AllGems.TOC
Halftone Approximation [Foley96, pp. 568-573]
Homogeneous Coordinates [Foley96, Section 5.2, pp. 204-210]

Practical Handbook on Image Processing for Scientific Applications  p. 127

Landscapes Virtual Terrain Project
http://vterrain.org

Generating Random Fractal Terrain
www.gameprogrammer.com/fractal.html

Terragen is a scenery generator being developed for Windows 95, 98 and NT. At this stage of its development, Terragen is free for personal non-commercial use.    Terragen is already capable of photorealistic results for professional landscape visualisation, special effects, art and recreation.
http://www.planetside.co.uk/terragen

How to Render Landscapes
www.exaflop.org/docs/land/ind.html

Lens Flares

Lens Flare Tutorial
http://www.gamedev.net/reference/articles/article813.asp
 

Marching Cubes Algorithm http://exaflop.org/docs/marchcubes
Perlin Noise http://freespace.virgin.net/hugo.elias/models/m_perlin.htm

"Noise and Turbulence" by Ken Perlin
http://mrl.nyu.edu/perlin/doc/oscar.html#noise
www.acm.org/tog/resources/RTNews/html/rtnv6n3.html#art21

"Making Noise" by Ken Perlin
www.noisemachine.com/talk1

Point in Polygon

Simple Point in Polygon (Convex) Tests
http://exaflop.org/docs/naifgfx/naifpip.html

PNPOLY - Point Inclusion in Polygon Test
www.ecse.rpi.edu/Homepages/wrf/geom/pnpoly.html 

Nochmal Punkt in Polygon (German:  Again, Point in Polygon)
www.mathematica.ch/dmug-archive/1998/msg00480.html 

Point in Triangle in Dave Eberly's UseNet Post:  Let the points be (x0,y0,z0), (x1,y1,z1), (x2,y2,z2).  Given (x,y), solve for s and t in (x,y) = (x0,y0)+s*(x1-x0,y1-y0)+t*(x2-x0,y2-y0).  The point is inside the triangle if s >= 0, t >= 0, and s+t <= 1.  Then choose z = (1-s-t)*z0+s*z1+t*z2.

Point left/right of line See "Orientation" at
www.cs.cmu.edu/~quake/robust.html
Projection [Foley96, Section 6.1,  pp. 230-237]
Radiosity Radiosity Bibliography (Global Illumination Bibliographies)
www.helios32.com/resources.htm 

Radiosity Page
http://www-2.cs.cmu.edu/~radiosity 

Ray Tracing

Ray Tracing News Guide
www.acm.org/tog/resources/RTNews/html

Ray Tracing Bibliography
www.acm.org/tog/resources/bib

Set of basic test images for ray tracing algorithms
www.acm.org/tog/resources/SPD/overview.html

Rendering

Illumination and Shading
[Foley96, Chapter 16, pp. 721-814]

Lights! Camera! Action!
A guide to The Fundamental Maths And Principles Of Rendering
http://exaflop.org/docs/lca/ind.html

Light Sourced Lambert Shading
http://exaflop.org/docs/waynelight/ind.html

Rendering Algorithms
http://graphics.stanford.edu/projects/rendering

Rendering
http://local.wasp.uwa.edu.au/~pbourke/miscellaneous 

Volume Rendering
http://graphics.stanford.edu/projects/volume

Rotation 2D [Foley96, pp. 203, 206]
3D [Foley96, pp. 213-216]

comp.graphics.algorithms FAQ 1.01, 5.01
www.exaflop.org/docs/cgafaq

Rotation using the three Eulerian angles
Practical Handbook on Image Processing for Scientific Applicationsp. 126, 128

efg's Lab Report about Math and Delphi Example of Image Rotation

Scaling 2D [Foley96, pp. 202, 205-206]
3D [Foley96, pp. 213-216]
Scan Conversion Circles
[Foley96, Section 3.3, pp. 81-87]

Ellipses
[Foley96, Section 3.4, pp. 88-90]

Lines
Bresenham's algorithm

Basic Incremental Algorithm, Midpoint Line Algorithm (Bresenham)
[Foley96, Section 3.2, pp. 73-80]

Sprites www.hornet.org/code/effects/sprites
Star Fields www.hornet.org/code/effects/stars
Sub-Pixel Accuracy www.flipcode.com/documents/wwh1.txt
Terrain See Landscapes
Textures

Texture Mapping Mathematics
www.flipcode.com/documents/texmap.txt

Texture Mapping and Image Warping Bibliography
www.cs.cmu.edu/afs/cs/project/classes-ph/862.95/www/notes/tex.ref

Texture Mapping as a Fundamental Drawing Primitive
www.sgi.com/grafica/texmap/index.html

Texture Land:  Abnormal Textures Index
www.sai.msu.su/~megera/textures/aindex.html

Spherical Texture Mapping
www.hornet.org/code/effects/globe

Texture and Color
http://paulbourke.net/texture_colour/

Translation 2D [Foley96, pp. 201-202, 205]
3D [Foley96, pp. 213-216]
Tunnel www.hornet.org/code/effects/tunnel
Viewing Transformation

Specifying an arbitrary 3D View
[Foley96, pp. 237-242]

3D Transformations and Perspective
Newman and Sproull, Principles of Interactive Computer Graphics, McGraw-Hill, 1973, Chapter 22, pp. 333-354

Visibility

Visible-Surface Determination
[Foley96, Chapter 15, pp. 649-720]

Hans-Bernhard Broeker's pseudocode from UseNet Post: (15 Sep 99) to comp.graphics.algorithms:
  for each edge:
     for each polygon:
           if edge is (partly) obscured by polygon:
           remove the obscured part(s) of the edge
             draw remaining part(s) of the edge

comp.graphics.algorithms FAQ, Section 2.05
Hidden Surface Test
www.exaflop.org/docs/cgafaq

Hidden Surface Removal
www.flipcode.com/portal/issue06.shtml

Window to Viewport Transformation [Foley96, pp. 210-212]

C. Mathematical Techniques

Bezier Curves Postscript Programming -- Bezier Techniques
www.fho-emden.de/~hoffmann/pstutor22112002.pdf 

Curved Surfaces Using Bézier Patches
www.gamasutra.com/features/19990611/bezier_01.htm

[Foley96, Section 11.2.2, pp. 488-491, 521-525]

Pierre Bézier died in France on the 25th of November 1999 (R. Forrest's UseNet Post)

FAQ comp.graphics.algorithms FAQ
Section 1, 2D Computations, Points, Segments, Circles, etc.
Section 2, 2D Polygon Computations
Section 4, Curve Computations
Section 5, 3D Computations
Section 6, Geometric Structures
www.exaflop.org/docs/cgafaq
Geometry See efg's Algorithms page

Projections
http://paulbourke.net/miscellaneous/

[Foley96, pp. 253-258]

Mathematics Mathematics for Computer Graphics
[Foley96, Appendix, pp.1083-1112]
Numbers Postscript Programming -- Drawing Numbers
www.fho-emden.de/~hoffmann/pstutor22112002.pdf 
NURBS Non-Uniform Rational B-splines
  • Non-uniform refers to the type of knot vector supported. A non-uniform knot vector requires that the knot vector is non-decreasing.
  • Rational refers to the type or polynomial functions that define the blending.  While some areas benefit from rational polynomials, many applications work best with non-rational curves (scuh as refitting and smoothing).
  • B-spline refers to "basis" spline used to blend the control points.  Basis splines represent a generalization of Bezier splines, which support conics and are considered to be very stable.

Also see Splines

Solid Modeling [Foley96, Chapter 12,  pp. 533-562]
Splines

"Implementing Uniform Trigonometric Spline Curves"
by Robert F. Kauffmann in  Algorithm Alley of Dr. Dobb's Journal
May 1997.  The article demonstrates different trigonometric and cubic splines.

Also see NURBS

Surfaces Representing Curves and Surfaces
[Foley96, Chapter 11, pp. 471-532]

Paper and Plotter: A 3D Surface (excellent article)
http://www.graficaobscura.com/surf/index.html


D. Software Packages

gnuplot API in ANSI C http://ndevilla.free.fr/gnuplot/ 
Mesa 3D Graphics Library Mesa is a 3D graphics library with an API which is very similar to that of OpenGL.
www.mesa3d.org

E. File Formats and Conversions

Also see Delphi File Formats and Conversions page

AVI Personal AVI Editor from FlickerFree Multimedia Products www.flickerfree.com
Compression comp.compression Newsgroup FAQ
www.faqs.org/faqs/by-newsgroup/comp/comp.compression.html
DIB Windows Device-Independent Bitmap

Using Device-Independent Bitmaps and Palettes
http://support.microsoft.com/kb/q72041/

Sample: 16 and 32 Bits-Per-Pel Bitmap Formats
http://support.microsoft.com/kb/q94326/

"More Fun with MFC: DIBs, Palettes, Subclassing, and a Gamut of Reusable Goodies", Parts I, II, II, in January, March, June 1997 Microsoft Systems Journal by Paul DiLascia. MSJJAN97, MSJMAR97 and MSJJUN97 [Microsoft failed to maintain their links.]

DICOM Digital Imaging and Communications in Medicine
EPS Encapsulated PostScript is a page description language used by imagesetters and some laser printers.
See Postscript below.
File Formats www.wotsit.org (great file format resource)

My File Formats
http://myfileformats.com 

The Graphics File Formats Page
www.dcs.ed.ac.uk/~mxr/gfx

Graphics and Sound File Formats
ftp://ftp.ncsa.uiuc.edu/misc/file.formats

FLIC www.compuphase.com/flic.htm
GIF Compuserve's Graphics Interchange Format using Sperry-Univac's patented LZW compression is limited to 256-colors.  Unisys failed to maintain their link about their LZW Patent and Software Information.

Optimized GIFs from Windows DIBs, December 1998, C/C++ Users Journal

GIF Movie Gear (for GIF animation) www.gamani.com
GIF Movie Gear Lab: www.gamani.com/gmglab.htm

Library of GIFs
Icons and Images for Use in HTML Documents

ICO IconEdit by Michael J. Mefford in PC Magazine
JPEG JPEG Compression:  http://www.onlinegraphicdesigndegree.com/resources/jpeg-compression/

FAQ: www.faqs.org/faqs/jpeg-faq

Independent JPEG Group, www.ijg.org 

Implementing Fast DCTs
Dr. Dobb's Journal, March 1999, pp. 115-119

Multiple Conversions

PaintLib. Supports PNG, TGA, TIFF, JPEG/JFIF, BMP, Mac Pict, as well as EPS previews. C++ class.
www.paintlib.de/paintlib

PGM Used with the AT&T's Laboratories Cambridge Database of Faces (400 images)

See efg's Interactive PGMP5 "viewer" to display PGM files (P5 format) or the command-line utility ConvertFaces to convert PGM files of the Olivetti and Oracle Research Laboratory's Database of Faces (400 images) to BMP or JPG.

PNG

PNG Specification   (alternate link to Specification)

Postscript Ghostscript is a fully functional PostScript language interpreter (currently supporting Language Level 2).  Ghostscript has evolved into a very general graphics engine with several interpreter front ends (PostScript language, Adobe PDF, Hewlett-Packard PCL 5 and PCL XL) and many graphics file formats and device drivers on the back end (TIFF, JPEG, EPS, etc).
www.ghostscript.com

Postscript Programming
www.fho-emden.de/~hoffmann/pstutor22112002.pdf 

SVF Simple Vector Format
www.softsource.com/svf/spec.html
TIFF Tag Image File Format (TIFF), pp. 299-302
Digital Image Processing:  Principles and Applications

Reading the Tag Image File Format, The C Users Journal, March 1991, pp. 92-100. 

YUV

yvu.gif (989 bytes)  efg's YUV Lab Report


F. Journals, Magazines, Books, Resources

ACM SIGGRAPH www.siggraph.org
Bibliographies on Computer Graphics and Vision http://liinwww.ira.uka.de/bibliography/Graphics/index.html
Computer Graphics World www.cgw.com
Journal of Graphics, GPU & Game Tools http://jgt.akpeters.com/ 
Newsgroups comp.games.development.programming.algorithms

comp.graphics.algorithms
FAQ from comp.graphics.algorithms
www.exaflop.org/docs/cgafaq

comp.graphics.visualization
sci.engr.color
sci.image.processing


Updated 6 Nov 2011
Since 1 Nov 1998