Browse Prior Art Database

Coordinate Transformation in a Graphics Display Processor

IP.com Disclosure Number: IPCOM000042656D
Original Publication Date: 1984-Jun-01
Included in the Prior Art Database: 2005-Feb-04
Document File: 3 page(s) / 16K

Publishing Venue

IBM

Related People

Kaffashan, A: AUTHOR [+2]

Abstract

This article describes a technique for coordinate transformation and scaling in a graphics display processor having a 16-bit fixed-point arithmetic unit. In particular, the technique provides a pseudo floating point effect by the use of a Scale Factor which provides an additional 12 bits of accuracy. While the technique is discussed below specifically in relation to the processing of image points, it is generally useful where matrix arithmetic is to be performed to a greater accuracy than that conventionally obtainable with a fixed-point arithmetic unit. Furthermore, the technique is not restricted to the number sizes described. 1.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 40% of the total text.

Page 1 of 3

Coordinate Transformation in a Graphics Display Processor

This article describes a technique for coordinate transformation and scaling in a graphics display processor having a 16-bit fixed-point arithmetic unit. In particular, the technique provides a pseudo floating point effect by the use of a Scale Factor which provides an additional 12 bits of accuracy. While the technique is discussed below specifically in relation to the processing of image points, it is generally useful where matrix arithmetic is to be performed to a greater accuracy than that conventionally obtainable with a fixed-point arithmetic unit. Furthermore, the technique is not restricted to the number sizes described. 1. Pre-transformation Coordinates The display list coordinates define the absolute coordinates of points in pre-transformation space "World Coordinates", which are represented by 16-bit integers, one of the 16 bits being a sign bit. The format for the X, Y and Z coordinates is: S B B B B B B B B B B B B B B
B where 'S' is the sign bit. Negative numbers are in twos complement. This format is called '16-bit integer' format. 2. Transformation Matrix Elements The elements of the bottom row of the matrix (M31, M32 in 2D (2-dimensional) Mode, or M41, M42, M43 in 3D (3-dimensional) Mode) have 16-bit integer format. All other elements have the following format: S.b b b b b b b b b b b b b b b where 'S' is the sign bit, '.' is the position of the binary point, and the 'b' bits have fractional weights, being coefficients of negative powers of 2. This format is called '16-bit fractional format'. The Scale Factor, which is a shift factor for the first two or three rows of the transformation matrix (depending on 2D/3D Mode), is a 4-bit positive binary number of the following format: 0 0 0 0 0 0 0 0 0 0 0 0 B B
B B The Scale Factor value is a power of two exponent with an allowable range of values 0 to 12. If matrix concatenation causes the value of any matrix element in the first two rows in case of 2D Mode and in the first three rows in case of 3D Mode to exceed the values expressible in fractional number format (from -1 to +1), an attempt is made to bring the element value within the permissible range by adjusting the values of the Scale Factor and other elements. If this attempt fails to correct the problem, then the process is halted and a 'matrix element overflow' error is signalled to the host. If the values of the elements in the last row exceed the range of -32K to +32K, then the process is also halted and a 'matrix element overflow' error is signalled to the host. 3. Transformed Coordinates The transformation of a coordinate consists of multiplying together two pairs or three pairs of numbers depending upon the mode (2D or 3D), each pair consisting of a 16-bit integer format number (coordinate value) and a 16-bit fractional format number (an element from the first two or three rows of the transformation matrix) shifted left SF times, where SF is the value...