# Computer graphics

CompuPhase build up much experience in the field of computer graphics, both 2-dimensional and 3-dimensional. A few of the papers that we wrote were published as magazine articles, others are available on this site.

Colour metric
2019-05-23
An introduction to colour models and specifying the distance (or closeness) of colours. Measuring the difference between colours is essential for a variety of tasks: from palette mapping to lossy image compression (and broadcast television). The document describes different approaches to the problem (CIE LUV, YIQ and YUV) and proposes a new formula for colour distances (both simpler and more accurate).
The paper also briefly covers gamma correction and its implications for transferring pictures from the Apple Macintosh to the IBM PC.
Most recent update: extra references of proposed modification to the CIE L*u*v* colour space.
Axonometric projections
2019-05-23
Isometric projections are used in a few popular computer games. This paper starts with an overview and a historic perspective, then focuses on six alternative isometric and dimetric projections. Although intended as an overview, the paper presents several formulae and details that are probably published here for the first time.
Most recent update: A link to the CARTESIO program was corrected (again).
Panoramic image projection
2020-04-03
Panoramic images are best known from QuickTime VR (QTVR). This paper gives an overview of panoramic imaging and derives the basic formulae for the projection.
Quick image scaling by 2
2018-03-03
Down-scaling by two is a simple matter of applying a "box-filter". For the purpose of up-scaling by a factor of 2, the article proposes a novel directionally-interpolating algorithm. The algorithm is quick (single pass), keeps smooth areas smooth and edges sharp.
Quick colour averaging
2018-03-03
Computing the middle colour between two colours is not difficult. Doing it fast requires a few tricks. Calculating the average colour is a requirement of some of the scaling and image re-sampling techniques that will be published in the near future (both on this site and in magazine articles).
Synchronizing animation on MIDI audio
2021-07-01
A low level toolkit for Win32, Maximum Midi, can serve as a base timer for the screen refresh of sprite or frame animation. All tempo changes in the MIDI piece are handled automatically. This paper explains how to hook Maximum MIDI into AniSprite. The principles apply to other MIDI and animation toolkits as well.
Most recent update: An extra section explaining why it is important to synchronize animation to MIDI, and why a "single timer" strategy is the better alternative.
Drawing the Hilbert curve
2019-05-23
The Hilbert curve is a space filling curve that visits every point in a square grid. It has advantages in those image processing (and rendering) operations where the coherence between neighbouring pixels is important. The Hilbert curve has been applied successfully in image compression and dithering algorithms.
Riemersma dither
2021-07-01
Dithering along a Hilbert curve with restricted error proliferation. This paper proposes a new dither algorithm that combines the advantages of ordered dither and error diffusion dither.
Animation tips and resources
2019-05-28
An overview of animation techniques and tips, plus a list of software resources and links to related sites.
Most recent update: We made our storyboard layout available (in Adobe Acrobat format, or PDF) and discuss how one should use it.
Display Typography
2019-05-23
This article focuses on the design of "screen" fonts; fonts that are designed to be optimally legible on computer displays.
Feathering a mask for anti-aliased sprites
2019-05-23
Two algorithms, one conventional and one novel, to "blur" a mask on the inside. This allows a sprite engine to use the same "alpha blending" techniques for animated objects as advanced paint programs.
Most recent update: a clarification of the requirements for the convolution filters.
The FLIC file format
2020-10-18
A detailed description of the animation file format for FLI/FLC files. The FLIC file format was developed for Autodesk Animator, and it is now supported by a wide range of animation software and utilities.
The document also discusses many enhancements and extensions to the file format from EGI, DTA and Cosmigo, plus that it covers the FLH/FLT/FLX files in addition to the 256-colour FLIC files.
Most recent update: An additional "known error" in the format plus clarifications of the colour palette chunks (how they relate to updating the screen).
The Filmstrip file format
2019-05-23
A description of the lossless (uncompressed) animation file format that Adobe introduced with Premiere. This paper fills in a few details that are lacking from the original description by Adobe and it provides some C source code to read/convert Filmstrip files.
Most recent update: Minor corrections in the code snippets.
The Poly-Raster Image format
2019-05-28
The Poly-Raster Image format is a picture file format that holds one or more device-specific bitmaps along with descriptive headers. Its goal is to be a flexible format that is easy to decode, using few resources. The Poly-Raster format is therefore particularly useful for embedded systems —especially the smallest of these embedded systems. The article presents the file format as well as source code and utilities.
Most recent update: The article has a new section on animation, and the updated software now comes with a GUI version of the image encoder.