Browse Prior Art Database

Anti-Aliased Line Drawing Via Color Interpolation And Microcode Assist

IP.com Disclosure Number: IPCOM000101205D
Original Publication Date: 1990-Jul-01
Included in the Prior Art Database: 2005-Mar-16
Document File: 2 page(s) / 95K

Publishing Venue

IBM

Related People

Johnson, L: AUTHOR [+5]

Abstract

Conventional line drawing hardware produces lines with "jaggies." To combat the jaggy lines, a technique called anti-aliasing is used. The type of display adapter that would need hardware anti-aliased lines to be competitive in the marketplace would typically include hardware for Gouraud shading of triangles. In order to Gouraud shade a triangle, a linear interpolator needs to be included in the hardware. Our invention utilizes this linear interpolator for drawing anti-aliased lines. The function of the linear interpolator is to calculate each successive value (or color) as the sum of an incremental delta plus the previous value: C(n+1) = C(n) + dC.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Anti-Aliased Line Drawing Via Color Interpolation And Microcode Assist

       Conventional line drawing hardware produces lines with
"jaggies." To combat the jaggy lines, a technique called
anti-aliasing is used. The type of display adapter that would need
hardware anti-aliased lines to be competitive in the marketplace
would typically include hardware for Gouraud shading of triangles.
In order to Gouraud shade a triangle, a linear interpolator needs to
be included in the hardware. Our invention utilizes this linear
interpolator for drawing anti-aliased lines.  The function of the
linear interpolator is to calculate each successive value (or color)
as the sum of an incremental delta plus the previous value:
                         C(n+1) = C(n) + dC.

      One method of drawing lines utilizing display hardware is the
Digital Differential Analyzer (DDA) algorithm. The line drawing loop
then becomes:
                         Major(n+1) = Major(n) + 1.
                         Minor(n+1) = Minor(n) + dMinor.

      The major axis increments by 1 each time and the minor axis
increases by a fractional value.  This fractional value is related to
the distance the drawn line is from the actual line.  The fractional
value is simply 0.5 greater than the distance from the line (since
the algorithm initially adds 0.5 to endpoint).

      If the distance from the actual line is utilized to modify the
intensity of the drawn pixel, then pixels that are farther from the
actual line can be drawn at lower intensity and those that are closer
to the actual line can be drawn in higher intensity.  This results in
a line that has a "pulsing" intensity to it, as the line moves closer
and farther from the actual line.  If a second line is drawn just one
pixel displaced from the minor axis, and its distance from the actual
line is also used to modify its intensity in an inverse manner (since
its "actual line" is the line below it, it is closer to that line
when it is farther from its normal actual line), then it can be seen
that the second line will have "pulsed" intensity exactly out of
phase with the first line.  The ef...