Computer Graphics
Computer Graphics
Computer Graphics
UNIT – I
A S URVEY OF C OMPUTER G RAPHICS
Nowadays, Computer Graphics are used routinely in various areas as Science, Engineering,
Medicine, Business, Industry, Government, Art, Entertainment, Advertising, Education and Training.
Some of the Graphics applications are as follows:
ComputerAided Design:
A major use of Computer Graphics is in Design Processes, particularly for engineering and
architectural systems. CAD (ComputerAided Design) methods are used in the design of buildings,
automobiles, aircraft, watercraft, spacecraft, computers, textiles and many other products.
In this,
Objects are first displayed in a Wireframe outline form that shows the overall shape and internal
features of objects. It also allows the designers to quickly see the effects to interactive adjustment to
design shapes.
Software packages for CAD applications typically provide the designer with a multiwindow
environment.
Animations are often used in CAD applications. Realtime animations using wireframe displays on a
video monitor are useful for testing performance of a vehicle or system.
When object designs are complete, or nearly complete, realistic lighting models and surface rendering
are applied to produce displays that will show the appearance of the final product.
Architects use interactive graphics methods to layout floor plans, such as positioning of rooms, doors,
windows, stairs, shelves, counters and other building features, electrical outlets, etc.
Realistic displays of architectural designs permit both architects and their clients to study the
appearance of buildings. Many other kinds of systems and products are designed using either general
CAD packages or specially developed CAD software.
Presentation Graphics:
Presentation Graphics is used to produce illustrations for reports or to generate 35mm slides or
transparencies for use with projectors.
It is commonly used to summarize financial, statistical, mathematical, scientific and economic data for
research reports, managerial reports, consumer information bulletins and other types of reports.
Typical examples of presentation graphics are bar charts, line graphs, surface graphs, pie charts and
other displays showing relationships between multiple parameters.
Computer Art:
Computer Graphics methods are widely used in both fine art and commercial art applications.
Artists use a variety of computer methods, including specialpurpose hardware, artists’ paint brush
programs, other paint packages, specially developed software, symbolic mathematics packages, CAD
packages, desktop publishing software and animation packages that provide facilities for designing object
shapes and specifying object motions.
The artist uses a combination of threedimensional modeling packages, texture mapping, drawing
programs and CAD software.
There is a Pen Plotter with specially designed software that can create “automatic art” without
intervention from the artist.
Another art is “mathematical” art, in which the art ist uses a combination of mathematical functions,
fractal procedures, mathematical software, inkjet printers and other systems to create a variety of
threedimensional and twodimensional shapes and stereoscopic image pairs.
A common graphics method employed in many commercial is morphing, where one object is
transformed into another. This method has been used in TV commercials such as logo design,
advertising, etc.
Entertainment:
1
Computer Graphics methods are now commonly used in making motion pictures, music videos and
television shows. Sometimes the graphics scenes are displayed by themselves and sometimes graphics
objects are combined with the actors and live scenes.
Music Videos use graphics in several ways. Graphics objects can be combined with the live action,
or graphics and image processing techniques can be used to produce morphing effects.
Many TV series regularly employ Computer Graphics methods.
Education and Training:
Computergenerated models of physical, financial and economic systems are often used as
educational aids. Models of physical systems, physiological systems, population trends or equipment such
as the colorcoded diagram can help trainers to understand the operation of the system.
For some training applications, special systems are designed. Examples of such specialized systems
are the simulators for practice sessions or training of ship captains, aircraft pilots, heavyequipment
operators and air trafficcontrol personnel.
Some simulators have no video screens, but most simulators provide graphics screens for visual
operation.
For example, in an automobiledriving simulator, it is used to investigate the behavior of drivers in
critical situations.
Visualization:
Producing graphical representations for scientific, engineering and medical data sets and processes
is generally referred to as Scientific Visualization. The term Business Visualization is used in connection
with data sets related to commerce, industry and other nonscientific areas.
There are many different kinds of data sets and effective visualization schemes depend on the
characteristics of the data. Color coding is one way to visualize a data set.
Additional techniques include contour plots, graphs and charts, surface rendering and visualizations
of volume interiors. In addition, Image Processing techniques are combined with Computer Graphics to
produce many of the data visualization.
Image Processing:
Image Processing is a technique used to modify or interpret existing pictures, such as photographs
and TV scans. Two principal applications of Image Processing are,
i) improving picture quality
ii) machine perception of visual information as used in Robotics.
To apply imageprocessing methods, we first digitize a photograph or other picture into an image
file. Then digital methods can be applied to rearrange picture parts, to enhance color separations, or to
improve the quality of shading.
These techniques are used extensively in commercial art applications that invoke the retouching
and rearranging the sections of photographs and other artwork. Similar methods are used to analyze
satellite photos of the earth and photos of galaxies.
Image Processing and Computer Graphics are typically combined in many applications. For
example, in Medical field this technique is used to model and study physical functions, to design artificial
limbs and to plan and practice surgery. This application is generally referred as ComputerAided Surgery.
Graphical User Interfaces:
Nowadays all the software packages provide a Graphical Interface. A major component of a
graphical interface is a window manager that allows a user to display multiplewindow areas. Each
window can contain a different process that can contain graphical or nongraphical displays.
Interfaces also display menus and icons for fast selection of processing operations and parameter
values.
O VERVIEW OF G RAPHICS S YSTEM : V IDEO D ISPLAY D EVICES
The primary output device in a graphics system is a Video Monitor. The functionality of most
video monitors is based on the standard CathodeRay Tube (CRT) design.
2
Refresh Cathode Ray Tubes:
A beam of electrons
(cathode rays) emitted by an
electron gun, passes through
focusing and deflection systems that
direct the beam toward specified
positions on the phosphorcoated
screen. The phosphor then emits a
small spot of light at each position
contacted by the electron beam.
The phosphor glowing is to
redraw the picture repeatedly by
quickly directing the electron beam
back over the same points. This type
of display is called a Refresh CRT.
o The primary components of an electron gun in a CRT are the heated metal cathode and a control grid.
Heat is supplied to the cathode by directing a current through a coil of wire, called the filament, inside
the cylindrical cathode structure.
o The focusing system in a CRT is needed to force the electron beam to converge into a small spot as it
strikes the phosphor.
o As with focusing, deflection of the electron beam can be controlled either with electric fields or with
magnetic fields. One pair of plates is mounted horizontally to control the vertical deflection, and the
other pair is mounted vertically to control horizontal deflection.
o Different kinds of phosphor are available for use in a CRT. Besides, color a major difference between
phosphor is either persistence, how long they continue to emit light after the CRT beam is removed.
o The maximum number of points that can be displayed without overlap on a CRT is referred to as the
Resolution.
o Another property of video monitor is aspect ratio, which gives the ratio of vertical points to horizontal
points necessary to produce equallength lines in both directions on the screen.
RasterScan Displays:
The most common type of graphics
monitor employing a CRT is the Raster
Scan Display, based on television
technology.
In RasterScan systems, the electron
beam is swept across the screen, one row at
a time from top to bottom. As the electron
beam moves across each row, the beam
intensity is turned on and off to create a
pattern of illuminated spots.
Picture definition is stored in a
memory area called the Refresh Buffer or
Frame Buffer.
This memory area holds the set of intensity values for all the screen points. Stored intensity values
are then retrieved from the refresh buffer and “pai nted” on the screen one row (scan line) at a time. Each
screen point is referred to as a Pixel or Pel (Picture Element).
On a BlackandWhite system with one bit per pixel, the frame buffer is commonly called a
Bitmap. For systems with multiple bits per pixel, the frame buffer is often referred to as a Pixmap.
At the end of each scan line, the electron beam returns to the left side of the screen to begin
displaying the next scan line.
The return to the left of the screen, after refreshing each scan line, is called the Horizontal Retrace
th th
of the electron beam. And at the end of each frame (displayed in 1/80 to 1/60 of a second), the electron
beam returns (vertical retrace) to the top left corner of the screen to begin the next frame.
3
On some rasterscan systems (and in
TV sets), each frame is displayed in two
passes using an INTERLACED refresh
procedure. In the first pass, the beam
sweeps across each other scan line from top
to bottom. Then after the vertical retrace,
the beam sweeps out the remaining scan
line.
Interlacing of the scan line in this
way allows us to see the entire screen
displayed in onehalf the time it would have
taken to sweep across all the lines at once
from top to bottom.
This is an effective technique for
avoiding flicker, providing that adjacent
scan lines contain similar display
information.
RandomScan Displays:
When operated as a RandomScan display unit, a CRT has the electron beam directed only to the
parts of the screen where a picture is to be drawn.
RandomScan monitors draw a
picture one line at a time and for this reason
are also referred to as Vector Displays (or
strokewriting or calligraphic displays). The
component lien of a picture can be drawn
and refreshed by a randomscan system in
any specified order. A Pen Plotter operates
in a similar way and is an example of a
randomscan, hard copy device.
Refresh rate of a randomscan system
depends on the number of lines to be
displayed. Picture definition is now stored as
a set of linedrawing commands in an area of
memory referred to as the Refresh Display
File. It is also called as Display List, Display
Program, Refresh Buffer.
RandomScan systems are designed
for linedrawing applications and cannot
display realistic shaded scenes.
Color CRT Monitors:
A CRT monitor displays color pictures by using a combination of phosphors that emit different
colored light. By combining the emitted light from the different phosphors, a range of colors can be
generated.
The two basic techniques for producing color displays with a CRT are the BeamPenetration
method and the ShadowMask method.
The BeamPenetration method for displaying color pictures has been used with randomscan monitors.
Two layers of phosphor, usually red and green, are coated onto the inside of the CRT screen, and
are displayed color depends on how far the electron beam penetrates into the phosphor layers.
At intermediate beam speeds, combinations of red and green light are emitted to show two
additional colors, orange and yellow.
Since only 4 colors are possible, the quality of pictures is not as good as with other methods.
- 4
ShadowMask methods are commonly used in rasterscan systems because they produce a much wider
range of colors than the beampenetration method.
A ShadowMask CRT has three phosphor color dots at each pixel position.
One phosphor dot emits a red light, another emits a green light and the third emits a blue light.
When the 3 beams pass through a hole in the shadow mask, they activate a dot triangle, which
appears as a small color spot on the screen.
In some lowcost systems, the electron beam can only be set to on or off, limiting displays to 8
colors.
More sophisticated systems can set intermediate intensity levels for the electron beams, allowing
several million different colors to be generated.
Color CRTs in graphics systems are designed as RGB Monitors. An RGB color system with 24 bits
of storage per pixel is generally referred to as a fullcolor system or a truecolor system.
DirectView Storage Tubes (DVST):
A DVST stores the picture information as a charge distribution just behind the phosphorcoated
screen. Two electron guns are used in a DVST. One, the primary gun, is used to store the picture pattern,
the second, the flood gun, maintains the picture display.
Advantage: Since no refreshing is needed, very complex pictures can be displayed at very high resolutions
without flicker.
Disadvantage: They ordinarily do not display color and that selected parts of a picture cannot be erased.
FlatPanel Displays:
The term FlatPanel display refers to a class of video displays that have reduced volume, weight
and power requirements compared to a CRT. Example: small TV monitors, laptop, an advertisement board
in elevators, etc.
FlatPanel displays are categorized into Emissive and Nonemissive displays.
The Emissive displays (or emitters) are devices that convert electrical energy into light. Eg. Plasma
panels, lightemitting diode, etc.
Nonemissive displays (or nonemitters) use optical effects to convert sunlight or light from some other
source into graphics patters. The most important example is a liquidcrystal device.
Emissive Devices:
Plasma Panels, are also called GasDischarge Displays, are constructed by filling the region
between two glass plates with a mixture of gases that usually includes neon. A series of vertical
conducting ribbons is placed on one glass panel, and a set of horizontal ribbon is built into the
other hand.
ThinFilm Electroluminescent Displays are similar in construction to a Plasma Panel. The
difference is that the region between the glass plates is filled with a phosphor, such as zinc sulfide
doped with manganese, instead of a gas.
- 5
LED is a matrix of diodes arranged to form the pixel positions in the display and picture definition
is stored in a refresh buffer.
Nonemissive Devices:
LiquidCrystal Displays (LCDs) are commonly used in small systems, such as calculators and portable
laptop computers. They produce a picture by passing polarized light from the surroundings or from an
internal light source through a liquidcrystal material that can be aligned to either block
or transmit the light. Two types – Passive Matrix and Active Matrix LCDs.
ThreeDimensional Viewing Devices:
They are devised using a technique that reflects a CRT image from a vibrating, flexible mirror. For
example, in Medical applications it is used to analyse data from Ultrasonography, in Geological
applications to analyse topological data.
Stereoscopic and VirtualReality Systems:
To represent objects in displaying Stereoscopic Views. This method does not produce true three
dimensional images, but it does provide a threedimensional effect by presenting a different view to each
eye of an observer so that scenes do appear to have depth.
Stereoscopic viewing is also a component in VirtualReality Systems, where users can step into a
scene and interact with the environment.
RASTERSCAN SYSTEMS
Interactive Raster graphics systems typically employ several processing units. In addition to the
CPU, a specialpurpose processor called the Video Controller or Display Controller is used to control the
operation of the display device.
Video Controller:
System Frame Video
CPU Monitor
Memory Buffer Controller
System Bus
I/O Devices
Architecture of a Raster System
A fixed area of the system memory is reserved for the frame buffer, and the Video Controller is
given direct access to the FrameBuffer Memory.
FrameBuffer locations and the corresponding screen positions are referred in Cartesian
Coordinates. For many graphics monitors, the coordinate origin is defined at the lower left screen corner.
On some PC, origin is at upper left corner of the screen.
6
The basic refresh operations of the Video Controller are diagrammed below:
Horizontal and
RasterScan Generator Vertical Deflection
Voltage
x y
Register Register
Pixel
Memory Address Register Intensity
Frame Buffer
Basic VideoController Refresh Operations
Two registers are used to store the coordinates of the screen pixels. Initially, x register is set to 0
and y is set to ymax. The value stored in the frame buffer for this pixel position is then retrieved and
used to set the intensity of the CRT beam.
Then the x register is incremented by 1 and the process repeated for the next pixel on the top scan
line. This procedure is repeated for each pixel along the scan line.
After the last pixel on the top scan line has been processed, the x register is reset to 0 and y register
is decremented by 1.
After cycling through all pixels along the bottom scan line (y = 0), the Video Controller resets the
registers to the first pixel position on the top scan line and the refresh process starts again.
Since the screen must be refreshed at the rate of 60 frames per second, the cycle time is too slow,
this can’t be accommodated by typical RAM chips. To speed up pixel processing, Video
Controllers can retrieve multiple pixel values from the refresh buffer on each pass.
When that group of pixels has been processed, the next block of pixel values is retrieved from the
frame buffer.
In highquality systems, 2 frame buffers are often provided so that one buffer can be used for
refreshing while the other is being filled with intensity values.
RasterScan Display Processor:
Display Processor is also referred as a Graphics Controller or a Display Coprocessor. The
purpose of the display processor is to free the CPU from the graphics chores. In addition to the system
memory, a separate display processor memory area can also be provided.
A major task of the display processor is digitizing a picture definition given in an application
program into a set of pixelintensity values for storage in the frame buffer. This digitization process is
called Scan Conversion.
Graphics commands specifying straight lines and other geometric objects are scan converted into a
set of discrete intensity points. Similar methods are used for scan converting curved lines and polygon
outlines. Characters can be defined with rectangular grids or they can be defined with curved outlines. The
array size for character grids can vary from about 5 by 7 to 9 by 12 or more for higherquality displays.
Display Processors are also designed to perform a number of additional operations. These
functions include generating various line styles (dashed, dotted or solid), displaying color areas and
performing certain transformations and manipulations on displayed objects.
Also, display processors are typically designed to interface with interactive input devices, such as a
mouse.
7
RANDOMSCAN SYSTEMS
System Display
CPU Monitor
Memory Processor
System Bus
I/O Devices
An application program is input and stored in the system memory along with a graphics package.
Graphics commands in the application program are translated by the graphics package into a display file
stored in the system memory. This display file is then accessed by the display processor to refresh the
screen. The display processor cycles through each command in the display file program once during every
refresh cycle. Sometimes the display processor in a RandomScan system is referred to as a Display
Processing Unit or a Graphics Controller.
Graphics patterns are drawn on a randomscan system by directing the electron beam along the
component lines of the picture. Lines are defined by the values for their coordinate endpoints, and these
input coordinate values are converted to x and y deflection voltages.
I NPUT D EVICES :
Various devices are available for data input on graphics workstations. Most systems have a
keyboard and one or more additional devices include a mouse, trackball, spaceball, joystick, digitizers,
dials, and button boxes. Some other input devices used in particular applications are data gloves, touch
panels, image scanners, and voice systems.
Keyboards:
The Keyboard is an efficient device for inputting
nongraphic data as picture labels, i.e., for entering text strings.
Cursorcontrol keys, Numeric pad and function keys are common
features on generalpurpose keyboards.
Other types of cursorpositioning devices, such as a
trackball or joystick, are included on some keyboards.
For specialized applications, input to a graphics application may come from a set of buttons, dials,
or switches that select data values or customized graphics operations.
Buttons and switches are often used to input predefined functions, and dials are common devices
for entering scalar values.
Real numbers within some defined range are selected for input with dial rotations. Potentiometers
are used to measure dial rotations, which are then converted to deflection voltages for cursor movement.
Mouse:
A mouse is small handheld box used to position the screen cursor.
Wheels or rollers on the bottom of the mouse can be used to record the amount
and direction of movement.
Another method is the optical sensor, which detects movement across the
lines in the grid. One, two, or three buttons are usually included on the top of the
mouse for signaling the execution of some operation, such as recording cursor
position or invoking a function.
-8
-
Trackball and Spaceball:
A Trackball is a ball that can be rotated with
the fingers or palm of the hand, to produce screen
cursor movement. Trackballs are often mounted on
keyboards and it is a twodimensional positioning
device.
A Spaceball provides six degrees of
freedom. Unlike the trackball, a spaceball does not
actually move. Spaceballs are used for three
dimensional positioning and selection operations in Trackball Spaceball
virtualreality systems, modeling, animation, CAD,
and other applications.
Joysticks:
A Joystick consists of a small, vertical lever (called the stick)
mounted on a base that is used to steer the screen cursor around. Most
joysticks select screen positions with actual stick movement; others
respond to pressure on the stick. Some are mounted on a keyboard;
others function as standalone units.
In another type of movable joystick, 8 switches are arranged in a circle, so that the stick can select
any one of eight directions for cursor movement.
Pressuresensitive joysticks, also called Isometric Joysticks, have a nonmovable stick. Pressure on the
stick is measured with strain gauges and converted to movement of the cursor in the direction specified.
Data Glove:
A Data Glove that can be used to grasp a "virtual" object.
The glove is constructed with a series of sensors that detect hand
and finger motions. Electromagnetic coupling between
transmitting antennas and receiving antennas is used to provide
information about the position and orientation of the hand. A two
dimensional projection of the scene can be viewed on a video
monitor, or a threedimensional projection can be viewed with a
headset.
Digitizers:
A common device for drawing, painting, or interactively
selecting coordinate positions on an object is a Digitizer. These
devices can be used to input coordinate values in either a two
dimensional or a threedimensional space. Stylus
One type of digitizer is the graphics tablet (data tablet),
which is used to input twodimensional coordinates by activating a
hand cursor or stylus at selected positions on a flat surface. A hand
cursor contains cross hairs for sighting positions, while a stylus is a Tablet
pencilshaped device that is pointed at positions on the tablet.
Graphics tablets provide a highly accurate method for selecting coordinate positions, with an
accuracy that varies from about 0.2 mm on desktop models to about 0.05 mm or less on larger models.
Many graphics tablets are constructed with a rectangular grid of wires embedded in the tablet
surface.
Depending on the technology, either signal strength, coded pulses, or phase shifts can be used to
determine the position on the tablet.
Threedimensional digitizers use sonic or electromagnetic transmissions to record positions.
Resolution of this system is from 0.8 mm to 0.08 mm, depending on the model.
9
Image Scanners:
Drawings, graphs, color and blackandwhite photos, or text can be stored for computer processing
with an Image Scanner by passing an optical scanning mechanism over the information to be stored. We
can also apply various transformations, imageprocessing methods to modify the array representation of
the picture.
Touch Panels:
Touch Panels allow displayed objects or screen positions to be selected with the touch of a finger.
A typical application of touch panels is for the selection of processing options that are represented with
graphical icons.
Touch input can be recorded using optical, electrical, or acoustical methods.
Optical Touch Panels employ a line of infrared lightemitting diodes (LEDs) along one vertical edge
and along one horizontal edge of the frame. The opposite vertical and horizontal edges contain light
detectors. These detectors are used to record which beams are interrupted when the panel is touched.
An Electrical Touch Panel is constructed with two transparent plates separated by a small distance.
One of the plates is coated with a conducting material, and the other plate is coated with a resistive
material. When the outer plate is touched, it is forced into contact with the inner plate. This contact
creates a voltage drop across the resistive plate that is converted to the coordinate values of the
selected screen position.
In Acoustical Touch Panels, highfrequency sound waves are generated in the horizontal and vertical
directions across a glass plate.
Light Pens
Light Pen is a pencilshaped device used to select screen
positions by detecting the light coming from points on the CRT screen.
Light Pens sometimes give false readings due to background
lighting in a room.
The pen will send a pulse whenever phosphor below it is
illuminated. While the image on a refresh display may appear to be
stable, it is in fact blinking on and off faster than the eye can detect. This
blinking is not too fast, for the light pen. The light pen as easily
determines the time at which the phosphor is illuminated. Since there is
only one electron beam on the refresh display, only one line segment can
be drawn at a time and no two segments are drawn simultaneously.
Voice Systems
Speech recognizers are used in some graphics workstations as input devices to accept voice
commands. The VoiceSystem input can be used to initiate graphics operations or to enter data. These
systems operate by matching an input against a predefined dictionary of words and phrase.
H ARD C OPY D EVICES :
We can obtain hardcopy output for various images in several formats. The most important output
device is Printer or Plotter and many types are there.
Printers produce output by either Impact or Nonimpact methods.
Impact Printers press formed character faces against an inked ribbon onto the paper. E.g. : Line
Printer, with the typefaces mounted on bands, chains, drums, or wheels.
Character impact printers often have a DotMatrix print head containing a rectangular array of
protruding wire pins, with the number of pins depending on the quality of the printer.
10
Nonimpact Printers and plotters use laser techniques, inkjet sprays, xerographic processes
(photocopying), electrostatic methods, and electrothermal methods to get images onto Paper.
In a Laser Device, a laser beam mates a charge distribution on a rotating drum coated with a
photoelectric material, such as selenium. Toner is applied to the drum and then transferred to
paper.
InkJet methods produce output by squirting ink in horizontal rows across a roll of paper
wrapped on a drum. The electrically charged ink stream is deflected by an electric field to
produce dotmatrix patterns.
Laser Printer Inkjet Printer
An Electrostatic Device places a negative charge on the paper, one complete row at a time along
the length of the paper. Then the paper is exposed to a toner. The toner is positively charged and so
is attracted to the negatively charged areas, where it adheres to produce the specified output.
Electrothermal methods use heat in a dotmatrix print head to output patterns on heat sensitive
paper. We can get limited color output on an impact printer by using different colored ribbons.
Nonimpact devices use various techniques to combine three color pigments (cyan, magenta, and
yellow) to produce a range of color patterns.
Laser and Xerographic devices deposit the three pigments on separate passes; inkjet methods
shoot the three colors simultaneously on a single pass along each print tine on the paper.
Drafting layouts and other drawings are typically generated with inkjet or pen plotters.
A Pen Plotter has one or more pens mounted on a carriage, or crossbar, that spans a sheet of paper.
Pens with varying colors and widths, wetink, ballpoint, and felttip pens are all possible choices
for use with a pen plotter. Crossbars can be either moveable or stationary, while the pen moves
back and forth along the bar. E.g.: flatbed pen plotter, rollfeed pen plotter.
- 11
End of Unit – I
12
UNIT – II
O UTPUT P RIMITIVES : P OINTS AND L INES
Graphics programming packages provide functions to describe a scene in terms of these basic
geometric structures, referred to as Output Primitives, and to group sets of output primitives into more
complex structures.
Each output primitive is specified with input coordinate data and other information about the way
that objects is to be displayed.
Points and Straight Line segments are the simplest geometric components of pictures. Additional
output primitives that can be used to construct a picture include circles and other conic sections, quadric
surfaces, spline curves and surfaces, polygon color areas, and character strings.
Points and Lines:
Point plotting is accomplished by converting a single coordinate position furnished by an
application program into appropriate operations for the output device.
A RandomScan (Vector) System stores pointplotting instructions in the display list, and
coordinate values in these instructions are converted to deflection voltages that position the electron beam
at the screen locations to be plotted during each refresh cycle.
For a blackandwhite raster system, a point is plotted by setting the bit value corresponding to a
specified screen position within the frame buffer to 1. Then, as the electron beam sweeps across each
horizontal scan line, it emits a burst of electrons (plots a point) whenever a value of 1 is encountered in the
frame buffer.
With an RGB system, the frame buffer is loaded with the color codes for the intensities that are to
be displayed at the screen pixel positions.
Line drawing is accomplished by calculating intermediate positions along the line path between
two specified endpoint positions. An output device is then directed to fill in these positions between the
endpoints.
For a raster video display, the line color (intensity) is then loaded into the frame buffer at the
corresponding pixel coordinates. Reading from the frame buffer, the video controller then "plots" the
screen pixels. Screen locations are referenced with integer values, so plotted positions may only
approximate actual Line positions between two specified endpoints.
For example, a computed line position is (10.48,
20.51), it is rounded to (10, 21). This rounding of coordinate
values to integers causes lines to be displayed with a
stairstep appearance ("the jaggies"), as represented below.
This stairstep shape is noticeable in low resolution systems.
For the rastergraphics devicelevel algorithms, object positions are specified directly in integer
device coordinates.
The Cartesian slopeintercept equation for a straight line is
y = mx + b (1)
with m representing the slope of the line and b as the y intercept. Given that the two endpoints of a line
segment are specified at positions (x1, y1) and (x2, y2).
We can determine the slope m and y intercept b with the following calculations:
(y2-y1)
m = (2)
(x2x1)
b = y1 – m x 1 (3)
Algorithms for displaying straight lines are based on the line equations (1) and the calculations
given in equations (2) and (3).
For any given x interval x along a line, we can compute the corresponding y interval y from
equation (2) as,
y = mx (4)
Similarly, we can obtain the x interval x corresponding to a specified y as
y
x = (5)
m
These equations form the basis for determining deflection voltages in analog devices.
For lines with slope magnitudes | m | < 1, x can be set proportional to a small horizontal deflection
voltage and the corresponding vertical deflection is then set proportional to y as calculated from
Equation 4.
For lines whose slopes have magnitudes | m | > 1, y can be set proportional to a small vertical
deflection voltage with the corresponding horizontal deflection voltage set proportional to x,
calculated from Equation 5.
For lines with m = 1, x = y and the horizontal and vertical deflections voltages are equal. In each
case, a smooth line with slope m is generated between the specified endpoints.
DDA algorithm:
The Digital Differential Analyzer (DDA) is a ScanConversion line algorithm based calculating
either y or x using equations (4) and (5).
Consider first a line with positive slope, less than or equal to 1, we sample at unit intervals
(x=1) and compute each successive y value as
yk+1 = yk + m (6)
subscript k takes integer values starting from 1, for the first point, and increases by 1 until the final
endpoints is reached.
Since m can be any real number between 0 & 1, the calculated y values must be rounded to the
nearest integer.
For lines with a positive slope greater than 1, we reserve the roles of x & y. That is, we
sample at unit y intervals (y=1) and calculate each succeeding x value as
1
xk+1 = xk + (7)
m
Equations (6) and (7) are based on the assumption that lines are to be processed from the left
endpoint to the right endpoint.
If this processing is reversed, so that the starting endpoint is that, then either we have x= -1
and
yk+1 = yk – m (8)
or (when the slope is greater than 1) we have y = 1 with
14
1
xk+1 = xk (9)
m
Equations (6), (7), (8) and (9) can also be used to calculate pixel positions along a line with
negative slope. If the absolute value of the slope is less than 1 and the start endpoint is at the left, we set
x=1 and calculate y values with equation (6).
When the start endpoint is at the right (for the same slope), we set x= 1 and obtain y positions
from equation (8). Similarly, when the absolute value of a negative slope is greater than 1, we use y= 1
and equation (9) or we use y=1 and equation (7).
The DDA algorithm is a faster method for calculating pixel position than the direct use of equation
(1). We can improve the performance of the DDA algorithm by separating the increments m and 1/m into
integer and fractional parts so that all calculations are reduced to integer operations.
Bresenham’s Line Drawing Algorithm.
An accurate and efficient raster linegenerating algorithm, developed by Bresenham, scans converts
lines using only incremental integer calculations that can be adapted to display circles and other curves.
We first consider the scanconversion process for lines with positive slope less than 1. Pixel
positions along a line path are then determined by sampling at unit x intervals. Starting from the left
endpoint (x0, y0) of a line, we step to each successive column (x position) and plot the pixel whose scan
line y value is closest to the line path.
th
The above figure demonstrates the k step in y = mx + b
this process. Assuming we have determined that the y
k+1
pixel at (xk, yk) is to be displayed, we next need to
decide which pixel to plot in column x k+1. Our choices y
are the pixels at positions
k
x x
(xk+1, yk) and (xk+1, yk+1). xk k+1 k+2
Parallel Line Algorithms.
With a parallel computer, we can calculate pixel positions along a line path simultaneously by
partitioning the computations among the various processors available.
16
One approach to the partitioning problem is to adapt an existing sequential algorithm to take
advantage of multiple processors. Alternatively, we can look for other ways to set up the processing so that
pixel positions can be calculated efficiently in parallel.
An important consideration in devising a parallel algorithm is to balance the processing load
among the available processors.
Given np processors, we can set up a parallel Bresenham line algorithm by subdividing the line
path into np partitions and simultaneously generating line segments in each of the subintervals.
For a line with slope 0 < m < 1 and left endpoint coordinate position (xo, yo), we partition the line
along the positive x direction. The distance between beginning x positions of adjacent partitions can be
calculated as,
x n p 1
x p (1)
n p
where x is the width of the line, and the value for partition width xp is computed using integer division.
Numbering the partitions, and the as 0, 1, 2, up to n1, we calculate the starting x coordinate for the kth
partition as,
xk x0 kx p (2)
To apply Bresenham's algorithm over the partitions, we need the initial value for the y coordinate
and the initial value for the decision parameter in each partition. The change yp in the y direction over
each partition is calculated from the line slope rn and partition width xp
y p mx p (3)
th
At the k partition, the starting y coordinate is then
yk y0 round (ky p ) (4)
th
The initial decision parameter for Bresenham's algorithm at the start of the k subinterval is obtained from
the equation,
we get,
Each processor then calculates pixel positions over its assigned subinterval using the starting
decision parameter value for that subinterval and the starting coordinates (xk, yk).
The extension of the parallel Bresenham algorithm to a line with slope > 1 is achieved by
partitioning the line in the y direction and calculating beginning x values for the partitions. For negative
slopes, we increment coordinate values in one direction and decrement in the other.
Another way to set up parallel algorithms on raster systems is to assign each processor to a
particular group of screen pixels.
Perpendicular distance d from the line in the diagram to a pixel with coordinates (x, y) is obtained
with the calculation
where,
17
L OADING T HE F RAME B UFFER
Scanconversion algorithms generate pixel positions at
successive unit intervals. This allows us to use incremental
methods to calculate framebuffer addresses.
Suppose the framebuffer array is addressed in row
major order and that pixel positions vary from (0. 0) at the
lower left screen corner to (x, at the top right corner).
For a bilevel system (1 bit per pixel), the framebuffer
bit address for pixel position (x, y) is calculated as,
addr (x, y) = addr (0, 0) + y(xmax + 1) + x
Frame Buffer
Moving across a scan line, we can calculate the framebuffer address for the pixel at (x + 1, y) as
the following offset from the address for position (x, y):
addr (x + 1, y) = addr (x, y) + 1
Stepping diagonally up to the next scan line from (x, y), we get to the framebuffer address of (x +
1, y + 1) with the calculation
addr (x + 1, y + 1) = addr (x, y) + x max + 2
where the constant xmax + 2 is precomputed once for all line segments. Similar incremental calculations
can be obtained for unit steps in the negative x and y screen directions. Each of these address calculations
involves only a single integer addition.
With systems that can display a range of intensity values for each pixel, framebuffer address
calculations would include pixel width (number of bits), as well as the pixel screen location.
C IRCLE – G ENERATING A LGORITHMS :
In general, a single procedure can be provided to display either
Circular or Elliptical Curves.
Properties of Circles:
A Circle is defined as the set of points that are all at a given
distance r from a center position (xc, yc).
This distance relationship is expressed by the Pythagorean
theorem in Cartesian coordinates as,
(1)
18
We could use this equation to calculate the position of points on a
circle circumference by stepping along the x axis in unit steps from x c – r to
x c + r and calculating the corresponding y values at each position as,
(2)
But this is not the best method for generating a circle. One
problem with this approach is that it involves considerable
computation at each step. Moreover, the spacing between plotted
pixel positions is not uniform, as shown in the following figure.
(3)
When a display is generated with these equations using a fixed angular step size, a circle is plotted
with equally spaced points along the circumference.
Computation can be reduced by considering the
symmetry of circles. The shape of the circle is similar in
each quadrant.
These symmetry conditions are illustrated in the
above diagram, where a point at position ( x , y) on a one
eighth circle sector is mapped into the seven circle points in
the other octants of the xy plane.
Taking advantage of the circle symmetry in this way
we can generate all pixel positions around a circle by
calculating only the points within the sector from x=0 to x=y.
Determining pixel positions along a circle
circumference using either equation (1) or equation (3) still
requires a good deal of computation time.
Bresenham's line algorithm for raster displays is
adapted to circle generation by setting up decision parameters
for finding the closest pixel to the circumference at each sampling step.
Midpoint Circle Algorithm:
For a given radius r and screen center position (xc, yc) we can first set up our algorithm to calculate
pixel positions around a circle path centered at the coordinate origin (0, 0). Then each calculated position
(x, y) is moved to its proper screen position by adding xc to x and yc to y.
Along the circle section from x = 0 to x = y in the first quadrant, the slope of the curve varies from
0 to 1. Positions in the other seven octants are then obtained by symmetry.
To apply the midpoint method, we define a circle function:
(4)
Any point (x, y) on the boundary of the circle with radius r satisfies the equation fcircle (x, y) = 0.
If the point is in the interior of the circle, the circle function is negative, and if the point is outside
the circle, the circle function is positive.
To summarize, the relative position of any point (x, y) can be determined by checking the sign of
the circle function:
19
(5)
(6)
2. Calculate the initial value of the decision parameter as
3. At each xk position, starting at k = 0, perform the following test:
If pk < 0, the next point along the circle centered on (0, 0) is (xk +1, yk) and
Otherwise, the next point along the circle is (xk + 1, y k 1) and
,
4. Determine symmetry points in the other seven octants.
5. Move each calculated pixel position (x, y) onto the circular path centered on (xc, yc) and plot the
coordinate values:
x = x + xc, y = y + yc
6. Repeat steps 3 through 5 until x y.
E LLIPSE – G ENERATING A LGORITHM :
An Ellipse is an elongated circle. So, Elliptical Curves can be generated by modifying circle
drawing procedures to take into account the different dimensions along the major and minor axes.
Properties of Ellipses
An Ellipse is defined as the set of points such that the sum of the distances from two fixed positions
(foci) is the same for all points.
20
If the distances to the two foci from any point P = (x, y) on the ellipse are labeled d1 and d2,
then the
general equation of an ellipse can be stated as,
d1 + d2 = constant (1)
Expressing distances d1 and d2 in terms of the focal
coordinates F1 = (x1, y1) and F2 = (x2, y2), we have
(2)
We can rewrite the general ellipse equation in the form,
2 2
Ax + By + Cxy + Dx + Ey + F = 0 (3)
where the coefficients A, B, C, D, E, and F are evaluated in terms
of the focal coordinates and the dimensions of the major and
minor axes of the ellipse.
An interactive method for specifying an ellipse in an
arbitrary orientation is to input the two foci and a point on the ellipse boundary.
In the diagram, we show an ellipse in "standard position" with major and minor axes oriented
parallel to the x and y axes.
Parameter rx labels the semimajor axis, and parameter ry
labels the semiminor axis. Using this the equation of the ellipse
can be written as,
2 2
x x c y y c
1 (4)
r ry
x
Using polar coordinates r and , we can also describe the
ellipse in standard position with the parametric equations:
x x c rx Cosθ
y y r Sinθ (5)
c y
Thus, we must calculate pixel positions along the elliptical
arc throughout one quadrant, and then we obtain positions in the
remaining three quadrants by symmetry as shown below:
I
Midpoint Ellipse Algorithm:
Our approach here is similar to that used in displaying a raster circle. Given parameters rx, ry, and
(xc, yc), we determine points (x, y) for an ellipse in standard position centered on the origin, and then we shift
the points so the ellipse is centered at (xc, yc).
The midpoint ellipse method is applied throughout the first quadrant in two parts. The following
diagram shows the division of the first quadrant according to the slope of an ellipse with rx < ry.
Regions 1 and 2 can be processed in various ways. We can start at position (0, ry) and step
clockwise along the elliptical path in the first quadrant, shifting from unit steps in x to unit steps in y when
the slope becomes less than 1.
21
Alternatively, we could start at (rx, 0) and select points in a counterclockwise order, shifting from
unit steps in y to unit steps in x when the slope becomes greater than 1.
With parallel processors, we could calculate pixel
positions in the two regions simultaneously.
We define an Ellipse Function from equation (4) with
(xc,yc) = (0, 0) as
ellips ( x, y) 2 2 2
f r 2 x 2 r y r r 2
e y x x y
which has the following properties:
0,if (x, y) is inside the ellipse boundary,
f
ellipse ( x, y) 0,if (x, y) is on the ellipse boundary
0,if (x, y) is outside the ellipse boundary
Thus the ellipse function serves as the decision parameter in
the Midpoint Algorithm.
1. Input rx, ry and ellipse center (xc, yc), and obtain the first point on an ellipse centered on the origin
as,
(x0, y0) = (0, ry)
2. Calculate the initial value of the decision parameter in region 1 as,
p10 ry rx ry 1 rx
2 2 2
4
3. At each x, position in region 1, starting at k = 3, perform the following test:
If p l , < 0, the next point along the ellipse centered on (0, 0) is (xk+1, yk)
2 2
and p1k 1 p1k 2ry xk 1 ry
Otherwise, the next point along the circle is ( xk+1, yk1) and p1k
2 2 2
1 p1k 2ry xk 1 2rx yk 1 ry
with
2 2 2
2ry xk 1 2ry xk 2ry ,
2 2 2
2rx yk 1 2rx yk 2rx
2 2
and continue until 2ry x 2rx y
4. Calculate the initial value of the decision parameter in region 2 using the last point (xo, yo)
calculated in region 1 as
1 2
p20 ry x
2 2 2 2 2
0 rx ( y0 1) rx ry
2
5. At each yk position in region 2, starting at k = 0, perform the following test:
If pk > 0, the next point along the ellipse centered on (0, 0) is (xk, yk 1)
2 2
and p2k 1 p2k 2rx yk 1 rx
Otherwise, the next point along the circle is (xk + 1, yk 1) and p2k
2 2 2
1 p2k 2ry xk 1 2rx yk 1 rx
using the same incremental calculations for x and y as in region 1.
6. Determine symmetry points in the other three quadrants.
7. Move each calculated pixel position (x, y) onto the elliptical path centered on (x c, yc) and plot the
coordinate values:
- 22
x x xc ,
y y yc
2 2
8. Repeat the steps for region 1 until 2ry x 2rx y .
FILLEDAREA PRIMITIVES:
A standard output primitive in general graphics packages is a solidcolor or patterned polygon area.
There are two basic approaches to area filling on raster systems.
One way to fill an area is to determine the overlap intervals for scan lines that cross the area.
Another method for area filling is to start from a given interior position and paint outward
from this point until we encounter the specified boundary conditions.
The scanline approach is typically used in general graphics packages to fill polygons, circles,
ellipses, and other simple curves. All methods starting from an interior point are useful with more complex
boundaries and in interactive painting systems.
ScanLine Polygon Fill Algorithm:
For each scan line crossing a polygon, the areafill algorithm locates the intersection points of the
scan line with the polygon edges. These intersection points are then sorted from left to right, and the
corresponding framebuffer positions between each intersection
pair are set to the specified fill color.
In the diagram, the four pixel intersection positions with
the polygon boundaries define two stretches of interior pixels
from x = 10 to x = 14 and from x = 18 to x = 24.
Some scanline intersections at polygon vertices require
special handling. A scan line passing through a vertex intersects
two polygon edges at that position, adding two points to the list
of intersections for the scan line.
The following figure shows two scan lines at positions y and y' that intersect edge endpoints. Scan
line y intersects five polygon edges. Scan line y', however, intersects an even number of edges although it
also passes through a vertex. Intersection points along
scan line y' correctly identify the interior pixel spans. But
with scan line y, we need to do some additional
processing to determine the correct interior points. The
topological difference between scan line y and scan line
y' in the diagram is identified by noting the position of
the intersecting edges relative to the scan line.
The following figure illustrates shortening of an
edge. When the endpoint y coordinates of the two edges are increasing, the y value of the upper endpoint for
the current edge is decreased by 1, as in fig. (a). When the endpoint y values are monotonically decreasing, as
in fig. (b), we decrease they coordinate of the upper endpoint of the edge following the current edge.
Calculations performed in scanconversion and other graphics algorithms typically take advantage
of various coherence properties of a scene that is to be displayed. Coherence methods often involve
23
incremental calculations applied along a single scan line or between successive scan lines. In determining
edge intersections, we can set up incremental coordinate calculations along any edge by exploiting the fact
that the slope of the edge is constant from one scan line to the next.
The following figure shows two successive scan lines crossing a left edge of a polygon. The slope
of this polygon boundary line can be expressed in terms of the scanline intersection coordinates:
y y
m k 1 k
x x
k 1 k
Since the change in y coordinates between the two
scan lines is simply
yk 1 yk 1
the xintersection value xk+1 on the upper scan line can be
determined from the xintersection value xk on the
preceding scan line as
1
xk 1 xk
m
Each successive x intercept can thus be calculated by adding the inverse of the slope and rounding
to the nearest integer.
Along an edge with slope m, the intersection xk value for scan line k above the initial scan line can
k
be calculated as, xk x0
m
In a sequential fill algorithm, the increment of x values by the amount l/m along an edge can be
accomplished with integer operations by recalling that the slope m is the ratio of two integers:
m = D y ,
Dx
where x and y are the differences between the edge endpoint x and y coordinate values. Thus,
incremental calculations of x intercepts along an edge for successive scan lines can be expressed as
x
xk x
k 1
y
Using this equation, we can perform integer evaluation of the x intercepts by initializing a counter to 0,
then incrementing the counter by the value of x each time we move up to a new scan line. Whenever the
counter value becomes equal to or greater than y, we increment the current x intersection value by 1 and
decrease the counter by the value y. This procedure is equivalent to maintaining integer and fractional parts
for x intercepts and incrementing the fractional part until we reach the next integer value.
InsideOutside Tests:
Areafilling algorithms and other graphics processes often need to identify interior regions of objects.
Examples of standard polygons include triangles, rectangles, octagons, and decagons. The component edges of
these objects are joined only at the vertices, and otherwise the edges have no common points in the plane.
24
For such shapes, it is not always clear which regions of the xy plane we should call "interior" and
which regions we should designate as "exterior" to the object. Graphics packages normally use either the
oddeven rule or the nonzero winding number rule to identify interior regions of an object.
We apply the oddeven rule, also called the odd parity rule or the evenodd rule, by conceptually
drawing a line from any position P to a distant point outside the coordinate extents of the object and
counting the number of edge crossings along the line. If the number of polygon edges crossed by this line
is odd, then P is an interior point. Otherwise, P is an exterior point.
To obtain an accurate edge count, we must be sure that the line path we choose does not intersect
any polygon vertices. The fig. (a) shows the interior and exterior regions obtained from the oddeven rule
for a selfintersecting set of edges.
Another method for defining interior regions is the nonzero winding number rule, which counts the
number of times the polygon edges wind around a particular point in the counterclockwise direction. This
count is called the winding number, and the interior points of a twodimensional object are defined to be
those that have a nonzero value for the winding number. We apply the nonzero winding number rule to
polygons by initializing the winding number to 0 and again imagining a line drawn from any position P to
a distant point beyond the coordinate extents of the object.
Some graphics packages use the nonzero winding number rule to implement area filling, since it is
more versatile than the oddeven rule.
ScanLine Fill of Curved Boundary Areas:
In general, scanline fill of regions with curved boundaries requires more work than polygon
filling, since intersection calculations now involve nonlinear boundaries. For simple curves
such as circles or ellipses, performing a scanline fill is a straightforward process.
We only need to calculate the two scanline Intersections on opposite sides of the
curve. This is the same as generating pixel positions along the curve boundary, and
we can do that with the midpoint method. Then we simply fill in the horizontal pixel
spans between the boundary points on opposite sides of the curve.
Symmetries between quadrants (and between octants for circles) are used to reduce the boundary
calculations. Similar methods can be used to generate a fill area for a curve section.
BoundaryFill Algorithm:
Another approach to area filling is to start at a point inside a region and paint the interior outward
toward the boundary. If the boundary is specified in a single color, the fill algorithm proceeds outward
pixel by pixel until the boundary color is encountered. This method, called the boundarytill algorithm, is
particularly useful in interactive painting packages, where
interior points are easily selected.
A boundaryfill procedure accepts as input the
coordinates of an interior point (x, y), a fill color, and a
boundary color. Starting from (x, y), the procedure tests
neighboring positions to determine whether they are of
the boundary color. If not, they are painted with the fill
color, and their neighbors are tested.
25
This process continues until all pixels up to the boundary color for the area have been tested. Both
inner and outer boundaries can be set up to specify an area, and some examples of defining regions for
boundary fill are shown in the figure.
The following figure shows two methods for proceeding to neighboring pixels from the current test
position. In this figure, four neighboring points are tested.
These are the pixel positions that are right, left, above, and
below the current pixel. Areas filled by this method are
called 4connected.
The second method is used to fill more complex
figures. Here the set of neighboring positions to be tested
includes the four diagonal pixels. Fill methods using this
approach are called 8connected.
Recursive boundaryfill algorithms may not fill regions correctly if some interior pixels are already
displayed in the fill color. This occurs because the
algorithm checks next pixels both for boundary color and
for fill color. Encountering a pixel with the fill color can
cause a recursive branch to terminate, leaving other
interior pixels unfilled. To avoid this, we can first change
the color of any interior pixels that are initially set to the
fill color before applying the boundaryfill procedure.
FloodFill Algorithm:
Sometimes we want to fill in (or recolor) an area that is not defined within a single color boundary.
The figure shows an area bordered by several different color regions. We can paint
such areas by replacing a specified interior color instead of searching for a boundary
color value. This approach is called a floodfill algorithm.
We start from a specified interior point (x, y) and reassign all pixel values that
are currently set to a given interior color with the desired fill color. If the area we want
to paint has more than one interior color, we can first reassign pixel values so
that all interior points have the same color. Using either a 4connected or 8connected approach, we then
step through pixel positions until all interior points have been repainted.
C HARACTER G ENERATION :
Letters, numbers, and other characters can be displayed in a variety of sizes and styles. The overall
design style for a set (or family) of characters is called a type face. Today, there are hundreds of typefaces
available for computer applications. Examples of a few common typefaces are Courier, Helvetica, New
York, Palatino, and Zapf Chancery. Originally, the term font referred to a set of cast metal character forms
in a particular size and format, such as 10point Courier Italic or 12point Palatino Bold.
Typefaces (or fonts) can be divided into two broad groups: serif and sans serif. Serif type has small
lines or accents at the ends of the main character strokes, while sansserif type does not have accents.
Two different representations are used for storing computer fonts. A simple method for
representing the character shapes in a particular typeface is to use rectangular grid patterns. The set of
characters are then referred to as a bitmap font (or bitmapped font) . Another, more flexible, scheme is to
describe character shapes using straightline and curve sections, as in PostScript. In this case, the set of
characters is called an outline font.
The two methods for character representation are illustrated below. When the pattern in fig.(a) is
copied to an area of the frame buffer, the 1 bits designate which pixel positions are to be displayed on the
monitor. To display the character shape in Fig. (b), the interior of the character outline must be filled using
the scanlime fill procedure.
26
Bitmap fonts are the simplest to define and display: The character grid only needs to be mapped to
a framebuffer position. In general, bitmap fonts require more space, because each variation (size and
format) must be stored in a font cache.
Outline fonts require less storage since each variation does not require a distinct font cache. We can
produce boldface, italic, or different sizes by manipulating the curve definitions for the character outlines.
But it does take more time to process the outline fonts, because they must be scan converted into the frame
buffer.
A character string is displayed with the following function:
text (wcpoint, string)
Another convenient character function is one that places a designated character, called a marker
symbol, at one or more selected positions. This function is defined with the same parameter list as in the line
function:
polymarker (n, wcpoints)
A predefined character is then centered at each of the n
coordinate positions in the list wcpoints. The default symbol
displayed by polymarker depends on the particular
implementation, but we assume for now that an asterisk is to be
used. The diagram illustrates plotting of a data set with the
statement
polymarker (6, wcpoints)
End of Unit – II
27
UNIT – III
(a) butt caps, (b) round caps, and (c) projecting square caps
A TTRIBUTES OF O UTPUT P RIMITIVES : L INE A TTRIBUTES
In general, any parameter that affects the way a primitive is to be displayed is referred to as an
attribute parameter. Some attribute parameters, such as color and size, determine the fundamental
characteristics of a primitive.
L INE A TTRIBUTES
Basic attributes of a straight line segment are its type, its width, and its color. In some graphics
packages, lines can also be displayed using selected pen or brush options.
Line Type:
Possible selections for the linetype attribute include solid lines, dashed lines, and dotted lines. We
modify a line drawing algorithm to generate such lines by setting the length and spacing of displayed solid
sections along the line path. A dashed line could be displayed by generating an interdash spacing that is
equal to the length of the solid sections. Similar methods are used to produce other linetype variations.
To set line type attributes in a PHICS application program, a user invokes the
function setLinetype (lt)
where parameter 1 is assigned a positive integer value of 1, 2, 3, or 4 to generate lines that are,
respectively, solid, dashed, dotted, or dashdotted.
Raster line algorithms display linetype attributes by plotting pixel spans. For the various dashed,
dotted, and dotdashed pattern, the linedrawing procedure outputs sections of contiguous pixels along the
line path, skipping over a number of intervening pixels between the solid spans.
Line Width:
Implementation of linewidth options depends on the capabilities of the output device. A heavy line
on the video monitor could be displayed as adjacent parallel lines, while a pen plotter might require pen
changes.
As with other PHIGS attributes, a linewidth command is used to set the current linewidth value in
the attribute list.
We set the linewidth attribute with the command:
setLinesidthScaleFactor (lw)
Linewidth parameter lw is assigned a positive number to indicate the relative width of the line to be
displayed. A value of 1 specifies a standardwidth line.
For instance, on a pen plotter, a user
could set lw to a value of 0.5 to plot a line
whose width is half that of the standard
line. Values greater than 1 produce lines
thicker than the standard.
Another problem with implementing
width options using horizontal or vertical
pixel spans is that the method produces
lines whose ends are horizontal or vertical
regardless of the slope of the line. This
effect is more noticeable with very thick lines. We can adjust the shape of the line ends to give them a
better appearance by adding line caps.
The following figure shows three possible methods for smoothly joining two line segments. A
miter join is accomplished by extending the outer boundaries of each of the two lines until they meet. A round
join is produced by capping the
connection between the two segments
with a circular boundary whose diameter
is equal to the line width. And a bevel
join is generated by displaying the line
segments with butt caps and filling in the
triangular gap where the segments meet.
(a) miter join, (b) round join, and (c) bevel join
Pen and Brush Options:
With some packages, lines can be displayed with pen or brush selections. Options in this category
include shape, size, and pattern. Some possible pen or brush shapes are given below.
These shapes can be stored in a pixel mask that identifies the array of pixel positions that are to be
set along the line path.
To avoid setting pixels more than once in the frame buffer, we can simply accumulate the
horizontal spans generated at each position of the mask
and keep track of the beginning and ending x
positions for the spans across each scan line.
Lines generated with pen (or brush)
shapes can be displayed in various widths by
changing the size of the mask. Also, lines can
be displayed with selected patterns by
superimposing the pattern values onto the pen
or brush mask. An additional pattern option
that can be provided in a paint package is the display of simulated brush strokes.
Line Color:
When a system provides color (or intensity) options, a parameter giving the current color index is
included in the list of systemattribute values. A polyline routine displays a line in the current color by setting
this color value in the frame buffer at pixel locations along the line path using the setpixel procedure. The
number of color choices depends on the number of bits available per pixel in the frame buffer.
We set the line color value in PHIGS with the function,
SetPolylineColourIndex (lc)
Nonnegative integer values, corresponding to allowed color choices, are assigned to the line color
parameter lc. A line drawn in the background color is invisible, and a user can erase a previously displayed
line by respecifying it in the background color
C URVE A TTRIBUTES :
Parameters for curve attributes are the same as those for line segments. We can display curves with
varying colors, widths, dotdash patterns, and available pen or brush options.
Raster curves of various widths can be displayed using the method of horizontal or vertical pixel
spans. Where the magnitude of the curve slope is less than 1, we plot vertical spans; where the slope
magnitude is greater than 1, we plot horizontal spans.
29
Another method for displaying thick curves is to fill in the area between two parallel curve paths,
whose separation distance is equal to the desired width. We could do this using the specified curve path as
one boundary and setting up the second boundary either inside or outside the original curve path. This
approach shifts the original curve path either inward or outward, depending on which direction we choose
for the second boundary. We can maintain the original curve position by setting the two boundary curves
at a distance of onehalf the width on either side of the specified curve path.
Although this method is accurate for generating thick circles, it provides only an approximation to
the true area of other thick curves.
Curves drawn with pen and brush shapes can be displayed in different sizes and with superimposed
patterns or simulated brush strokes.
C OLOR AND G RAYSCALE L EVELS :
Various color and intensitylevel options can be made available to a user, depending on the
capabilities and design objectives of a particular system. General purpose rasterscan systems usually
provide a wide range of colors, while randomscan monitors typically offer only a few color choices.
Color options are numerically coded with values ranging from 0 through the positive integers. For
CRT monitors, these color codes are then converted to intensity level settings for the electron beams.
In a color raster system, the number of color choices available depends on the amount of storage
provided per pixel in the frame buffer.
Colorinformation can be stored in the frame buffer in two ways:
We can store color codes directly in the frame buffer, or
We can put the color codes in a separate table and use pixel values as an index into this table.
With the direct storage scheme, whenever a particular color code is specified in an application
program, the corresponding binary value is placed in the frame buffer for eachcomponent pixel in the
output primitives to be displayed in that color. A minimum number of colors can be provided in this
scheme with 3 bits of storage per pixel, as shown in the Table.
Color Tables:
The following figure illustrates a possible scheme for storing color values in a color lookup table
(or video lookup table), where framebuffer values art now used as indices into the color table.
30
Systems employing this particular lookup table would allow a user to select any 256 colors for
simultaneous display 17 million colors. Compared to a fullcolor system, this scheme reduces the number
of simultaneous colors that can be displayed, but it also reduces the frame buffer storage requirements to 1
megabyte.
Advantages in storing color codes in a lookup table are,
Use of a color table can provide a "reasonable" number of simultaneous colors without
requiring large frame buffers. For most applications, 256 or 512 different colors are sufficient
for a single picture.
Table entries can be changed at any time, allowing a user to be able to experiment easily with
different color combinations.
Visualization applications can store values for some physical quantity, such as energy, in the
frame buffer and use a lookup table to try out various color encodings without changing the
pixel values.
In visualization and imageprocessing applications, color tables are a convenient means for
setting color thresholds so that all pixel values above or below a specified threshold can be set
to the same color.
For these reasons, some systems provide both capabilities for colorcode storage, so that a user
can elect either to use color tables or to store color codes directly in the frame buffer.
Grayscale:
With monitors that have no color capability, color functions can be used in an application program
to set the shades of gray, or grayscale, for displayed primitives.
Numeric values over the range from 0 to 1 can be used to specify grayscale levels, which are then
converted to appropriate binary codes for storage in the raster. This allows the intensity settings to be
easily adapted to systems with differing grayscale capabilities.
If additional bits per pixel are available in the frame
buffer, the value of 0.33 would be mapped to the nearest
level. With 3 bits per pixel, we can accommodate 8 gray
levels; while 8 bits per pixel would give us 256 shades of
gray.
An alternative scheme for storing the intensity
information is to convert each intensity code directly to the
voltage value that produces this grayscale level on the
output device in use.
When multiple output devices are available at an installation, the same
colortable interface may be used for all monitors. In this case, a color table
for a monochrome monitor can be set up using a range of RGB values.
A REA F ILL A TTRIBUTES :
Options for filling a defined region include a choice between a solid
color or a patterned fill and choices for the particular colors and patterns.
These fill options can be applied to polygon regions or to areas defined with
curved boundaries, depending on the capabilities of the available package. In
addition, areas can be painted using various brush styles, colors, and
transparency parameters.
Fill Styles
Areas are displayed with three basic fill styles: hollow with a color
border, filled with a solid color, or Wed with a specified pattern or design.
A basic fill style is selected in a PHIGS program with the
function setInteriorStyle (fs)
values for the fillstyle parameter fs include hollow, solid, and pattern.
31
Another value for fill style is hatch, which is used to fill an area with selected hatching patterns
parallel lines or crossed lines.
Fill selections for parameter fs are normally applied to polygon areas, but they can also be
implemented to fill regions with curved boundaries.
Hollow areas are displayed using only the boundary outline, with the interior color the same as the
background color. A solid fill is displayed in a single color up to and including the borders of the region. The
color for a solid interior or for a hollow area outline is chosen with where fillcolor parameter fc is set to the
desired color code.
We can display area edges dotted or dashed, fat or thin, and in any available color regardless of
how we have filled the interior.
Pattern Fill
We select fill patterns with
setInteriorStyleIndex (pi)
where pattern index parameter pi specifies a table position.
Separate tables are set up for hatch patterns. If we had selected hatch fill for the interior style in this
program segment, then the value assigned to parameter pi is an index to the
stored patterns in the hatch table.
For fill style pattern, table entries can be created on individual
output devices with
SetPatternRepresentation( ws, pi, nx, ny, cp)
Parameter pi sets the pattern index number for workstation code
ws, and cp is a twodimensional array of color codes with nx columns and
ny rows.
When a color array cp is to be applied to fill a region, we need to
specify the size of the area that is to be covered by each element of the
array. We do this by setting the rectangular coordinate extents of the
pattern:
setPatternSize (dx, dy)
where parameters dx and dy give the coordinate width and height of the
array mapping.
A reference position for starting a pattern fill is assigned with the
statement
setPatternReferencePoint (positicn)
Parameter position is a pointer to coordinates (xp, yp) that fix the lower left comer of the rectangular pattern.
Soft Fill:
Modified boundaryfill and floodfill procedures that are applied to repaint areas so that the fill
color is combined with the background colors are referred to as softfill or tintfill algorithms.
One use for these fill methods is to soften the fill colors at object borders that have been blurred to
antialias the edges.
Another is to allow repainting of a color area that was originally filled with a semitransparent
brush, where the current color is then a mixture of the brush color and the background colors
"behind" the area.
In either case, we want the new fill color to have the same variations over the area as the current fill
color.
32
As an example of this type of fill, the linear softfill algorithm repaints an area that was originally
painted by merging a foreground color F with a single background color B, where F B.
Assuming we know the values for F and B, we can determine how these colors were originally
combined by checking the current color contents of the frame buffer. The current RGB color P of each
pixel within the area to be refilled is some linear combination of F and B:
P = tF + (1 – t)B
where the “transparency” factor t has a value betwe en 0 nad 1 for each pixel.
The above vector equation holds for each RGB component of the colors, with
P = (PR, PC, PR), F = (FR, Fc, FR), B = (BR, Bc, BB)
We can thus calculate the value of parameter f using one of the RGB color components as
P B
t k k
Fk Bk
where k = R, G, or B and Fk Bk.
Similar softfill procedures can be applied to an area whose foreground color is to be merged with
multiple background color areas, such as a checkerboard pattern.
C HARACTER A TTRIBUTES
The appearance of displayed characters is controlled by attributes such as font, size, color, and
orientation. Attributes can be set both for entire character strings (text) and for individual characters
defined as marker symbols.
Text Attributes:
There are a great many text options that can be made available to graphics programmers. First of
all, there is the choice of font (or typeface), which is a set of characters with a particular design style such
as New York, Courier, Helvetica, London, Times Roman, and various special symbol groups.
The characters in a selected font can also be displayed with assorted underlining styles (solid, dotted,
double), in boldface, in italics and in or shadow styles.
A particular font and associated style is selected in a PHIGS program by setting an integer code for
the text font parameter tf in the function
setTextFont (tf)
Color settings for displayed text are stored m the system attribute list and used by the procedures
that load character definitions into the frame buffer. When a character string is to be displayed, the current
color is used to set pixel values in the frame buffer corresponding to the character shapes and positions.
Control of text color (or intensity) is managed from an application program with
setTextColourIndex (tc)
where text color parameter tc specifies an allowable color
code. We can adjust text size by scaling
the overall dimensions (height and
width) of characters or by scaling only
the character width. Character size is
specified by printers and compositors in
points, where 1 point is 0.013837 inch
(or approximately 1/72 inch).
The distance between the
bottomline and the topline of the
character body is the same for all
characters in a particular size and
typeface, but the body width may vary.
Proportionally spaced fonts assign a
smaller body width to narrow characters such as i, j, 1, and f compared to broad characters such as W or
M. Character height is defined as the distance between the baseline and the capline of characters.
33
Text size can be adjusted without changing the widthtoheight ratio of characters
with setCharacterHeight (ch)
The width only of text can be set with the function
setCharacterExpansionFactor (cw)
Marker Attribute:
A marker symbol is a single character that can he displayed in different colors and in different
sizes. We select a particular character to be the marker symbol with
setMarkerType (mt)
where marker type parameter mt is set to an integer code.
Typical codes for marker type are the integers 1 through 5, specifying, respectively, a dot ( .), a
vertical cross (+), an asterisk (*), a circle (o), and a diagonal cross (X). Displayed marker types are
centered on the marker coordinates. We set the marker size with
setMarkerSizeScaleFactor (ms)
with parameter marker size ms assigned a positive number.
A NTIALIASING:
Displayed primitives generated by the raster algorithms have a jagged, or stairstep, appearance
because the sampling process digitizes coordinate pints on an object to discrete integer pixel positions.
This distortion of information due to lowfrequency sampling (undersampling) is called aliasing.
We can improve the appearance of displayed raster lines by applying antialiasing methods that
compensate for the undersampling process.
To avoid losing information from such periodic objects, we need to set the sampling frequency to
at least twice that of the highest frequency occurring in the object, referred to as the Nyquist sampling
frequency (or Nyquist sampling rate) fs:
f 2f
s max
Another way to state this is that the sampling interval should be no larger than onehalf the cycle
interval (called the Nyquist sampling interval). For xinterval sampling, the Nyquist sampling interval Ax, is
x
xs cycle
2
where xcycle = l / fmax.
One way to increase sampling rate with raster systems is simply to display objects at higher
resolution.
A straightforward antialiasing method is to increase sampling rate by treating the screen as if it
were covered with a finer grid than is actually available. We can then use multiple sample points across
this finer grid to determine an appropriate intensity level for each screen pixel. This technique of sampling
object characteristics at a high resolution and displaying the results at a lower resolution is called
supersampling (or postfiltering, since the general method involves computing intensities, it subpixel grid
positions, then combining the results to obtain the pixel intensities).
34
An alternative to supersampling is to determine pixel intensity by calculating the areas of overlap
of each pixel with the objects to be displayed. Antialiasing by computing overlap areas is referred to as
area sampling (or prefiltering, since the intensity of the pixel as a whole is determined without calculating
subpixel intensities). Pixel overlap areas are obtained by determining where object boundaries intersect
individual pixel boundaries.
Raster objects can also be antialiased by shifting the display location of pixel areas. This technique,
called pixel phasing, is applied by "micropositioning" the electron beam in relation to object geometry.
Another advantage of supersampling with a finitewidth line is that the total line intensity is
distributed over more pixels.
End of Unit – III
35
UNIT – IV
2D TRANSFORMATIONS
BASIC TRANSFORMATIONS
Changes in orientation, size, and shape are accomplished with geometric transformations that alter
the coordinate descriptions of objects. The basic geometric transformations are translation, rotation, and
scaling. Other transformations that are often applied to objects include reflection and shear.
TRANSLATION
A translation is applied to an object by repositioning it along a straightline path from one
coordinate location to another. We translate a twodimensional point by adding translation distances, tx
and ty, to the original coordinate position (x, y) to move the point to a new position (x', y').
x' = x + tx , y' = y + ty
The translation distance pair (tx, ty) is called a translation vector or shift vector.
We can express the translation equations as a single matrix equation by using column vectors to
represent coordinate positions and the translation vector:
x P
1 P x ,
1
t
x x 2
, 2 x
T
t
y
This allows us to write the twodimensional translation equations in the matrix form:
P P T
Sometimes matrixtransformation equations are expressed in terms of coordinate row vectors instead of
column vectors. In this case, we would write the matrix representations as P = [x y] and T = [tx ty].
Translation is a rigidbody transformation that moves objects without deformation, i.e., every point
on the object is translated by the same amount.
Polygons are translated by adding the translation vector to the coordinate position of each vertex
and regenerating the polygon using the new set of vertex coordinates and the current attribute settings.
Similar methods are used to translate curved objects. To change the position of a circle or ellipse,
we translate the center coordinates and redraw the figure in the new location. We translate other curves
(splines) by displacing the coordinate positions defining the objects, and then we reconstruct the curve
paths using the translated coordinate points.
SCALING
A scaling transformation alters the size of an object. This operation can be carried out for polygons
by multiplying the coordinate values (x, y) of each vertex by scaling factors sx
and sy to produce the transformed coordinates (x', y'):
x x . s x , y y . s y
Scaling factor sx, scales objects in the x direction, while sy scales in the y
direction. The transformation equations can be written in the matrix form as,
- 36
-
x sx 0 x
s
y 0 y y
P S P
where S is the 2 by 2 scaling matrix.
Specifying a value of 1 for both sx and sy leaves the size of objects unchanged.
When sx and sy are assigned the same value, a uniform scaling is produced that maintains relative
object proportions.
Unequal values for sx and sy result in a differential scaling that are often used in design
applications, when pictures are constructed from a few basic shapes that can be adjusted by scaling
and positioning transformations.
We can control the location of a scaled object by choosing a position, called the fixed point that is
to remain unchanged after the scaling transformation.
Coordinates for the fixed point (xf , yf) can be chosen as one of the vertices, the object centroid, or
any other position. A polygon is then scaled relative to the fixed point by scaling the distance from each
vertex to the fixed point.
For a vertex with coordinates (x, y), the scaled coordinates (x', y') are calculated as,
x x f (x x f ) sx , y y f ( y y f ) s y
We can rewrite these scaling transformations to separate the multiplicative and additive terms:
x x sx x f (1 sx )
y y s y y f (1 s y )
where the additive terms x f (1 sx ) and y f (1 s y ) are constant for all points in the object.
ROTATION
A twodimensional rotation is applied to an object by repositioning it along a circular path in the xy
plane. To generate a rotation, we specify a rotation angle 0 and the position (x, y) of the rotation point (or
pivot point) about which the object is to be rotated.
Positive values for the rotation angle define counterclockwise
rotations. Negative values rotate objects in the clockwise direction.
This transformation can also be described as a rotation about a rotation axis that is perpendicular to
the xy plane and passes through the pivot point.
We first determine the transformation equations for rotation of a point position P when the pivot
point is at the coordinate origin. The angular and coordinate relationships of the original and transformed
point positions are shown in the diagram.
In this figure, r is the constant distance of the point from the origin, angle is the original angular
position of the point from the horizontal, and is the rotation angle.
Using standard trigonometric identities, we can express the transformed coordinates in terms of
angles and as
37
x r cos( ) r cos cos r sin sin
y r sin( ) r cos sin r sin cos
The original coordinates of the point in polar coordinates are,
x = r cos
y = r sin
nd st
Substituting expressions 2 into 1 , we obtain the transformation equations for rotating a point at
position (x, y) through an angle about the origin:
x x cos y sin
y x sin y
cos
We can write the rotation equations in the matrix form:
P R . P
where the rotation matrix is
cos sin
R
sin cos
When coordinate positions are represented as row vectors instead of column vectors, the matrix product
in rotation equation is transposed so that the transformed row coordinate vector [x' y'] calculated as,
T T
P (R . P)
T T
P . R
T T
where P’ = [x y], and the transpose R of matrix R is obtained by interchanging rows and columns. For a
rotation matrix, the transpose is obtained by simply changing the sign of the sine terms.
Rotation of a point about an arbitrary pivot position is illustrated in the following diagram.
Using the trigonometric relationships in this figure, we can generalize to obtain the transformation
equations for rotation of a point about any specified rotation position (xr, yr):
x xr (x xr ) cos ( y yr ) sin
y yr (x xr ) sin ( y yr ) cos
As with translations, rotations are rigidbody transformations that move objects without
deformation. Every point on an object is rotated through the same angle.
Polygons are rotated by displacing each vertex through the specified rotation angle and
regenerating the polygon using the new vertices. Curved lines are rotated by repositioning the defining
points and redrawing the curves.
A circle or an ellipse, for instance, can be rotated about a noncentral axis by moving the center
position through the arc that subtends the specified rotation angle.
An ellipse can be rotated about its center coordinates by rotating the major and minor axes .
38
Matrix Representation and Homogeneous Coordinates.
Many graphics applications involve sequences of geometric transformations. An animation, for
example, might require an object to be translated and rotated at each increment of the motion. In design
and picture construction applications, we perform translations, rotations, and scalings to tit the picture
components into their proper positions.
Each of the basic transformations can be expressed in the general matrix form
P' = M1 . P + M2
with coordinate positions P and P' represented as column vectors.
Matrix M1 is a 2 by 2 array containing multiplicative factors, and M2 is a twoelement column
matrix containing translational terms.
For translation, M1 is the identity matrix.
For rotation, M2 contains the translational terms associated with the pivot point.
For scaling, M2 contains the translational terms associated with the fixed point.
with T (tx, ty) as the 3 by 3 translation matrix.
The inverse of the translation matrix is obtained by replacing the translation parameters tx and ty
with their negatives – tx and – ty .
Similarly, Rotation Transformation equations about the coordinate origin are written as
x cos sin 0 x
y sin cos 0 y
0 1 1
1 0
or as
39
P' = R ( ) . P
The rotation transformation operator R () is the 3 by 3 matrix with rotation parameter . We get
the inverse rotation matrix when is replaced with .
A Scaling Transformation relative to the coordinate origin is now expressed as the matrix
multiplication
x s x 0 0 x
y 0 s y 0 y
0 1 1
1 0
or
P' = S (sx, sy) . P
where S (sx, sy) is the 3 by 3 matrix with parameters sx and sy.
Replacing these parameters with their multiplicative inverses (1/sx and 1/sy) yields the inverse scaling
matrix.
Matrix representations are standard methods for implementing transformations in graphics systems.
Rotations and Scalings relative to other reference positions are then handled as a succession of
transformation operations.
An alternate approach in a graphics package is to provide parameters in the transformation
functions for the scaling fixedpoint coordinates and the pivotpoint coordinates
C OMPOSITE T RANSFORMATIONS
With the matrix representations, we can set up a matrix for any sequence of transformations as a
composite transformation matrix by calculating the matrix product of the individual transformations. Forming
products of transformation matrices is often referred to as a concatenation, or composition, of matrices.
For columnmatrix representation of coordinate positions, we form composite transformations by
multiplying matrices in order from right to left, i.e., each successive transformation matrix premultiplies
the product of the preceding transformation matrices.
Translations:
If two successive translation vectors (tx1, ty1) and (tx2, ty2) are applied to a coordinate position P, the
final transformed location P' is calculated as
P' = T (tx2, ty2) . {T (tx1, ty1) . P}
= {T (tx2, ty2) . T (tx1, ty1)} . P}
where P and P' are represented as homogeneouscoordinate column vectors.
Also, the composite transformation matrix for this sequence of translations is
t
1 0 t x 2 1 0 t x1 1 0 x1 t x 2
t t
0 1 t y 2 0 1 t y1 0 1 y1 y 2
0 0 1 0 0 1 0 0
1
or
T (tx2, ty2) . T (tx1, ty1) = T (tx1 + tx2 , ty1 + ty2)
which demonstrates that two successive translations are additive.
Rotations:
Two successive rotations applied to point P produce the transformed position
P' = R ( 2) . {R ( 1) . P}
= {R ( 2) . R ( 1)} . P
By multiplying the two rotation matrices, we can verify that two successive rotations are additive:
40
R ( 2) . R ( 1) = R ( 1 + 2)
so that the final rotated coordinates can be calculated with the composite rotation matrix as
P' = R ( 1 + 2) . P
Scaling:
Concatenating transformation matrices for two successive scaling operations produces the
following composite scaling matrix:
s x 2 0 0 s x1 0 0 s x1 sx 2 0 0
s s s s
0 y 2 0 0 y1 0 0 y1 y 2 0
0 0 1 0 0 1 0 0 1
or
S (sx2, sy2) . S (sx1, s) = S (sx1 . sx2 , sy1 . sy2)
The resulting matrix in this case indicates that successive scaling operations are multiplicative.
General PivotPoint Rotation:
With a graphics package that only provides a rotate function for revolving objects about the
coordinate origin, we can generate rotations about any selected pivot point (xr, yr) by performing the
following sequence of translaterotatetranslate operations:
1. Translate the object so that the pivotpoint position is moved to the coordinate origin.
2. Rotate the object about the coordinate origin.
3. Translate the object so that the pivot point is returned to its original position.
This transformation sequence is illustrated in the following diagram. The composite transformation
matrix for this sequence is obtained with the concatenation.
1 0 xr cos sin 0 1 0 xr
y
0
1
y
r sin cos 0 0 1 r
0 0 1 0 0 1
0 1 0
cos sin xr (1 cos ) yr sin
sin cos yr (1 cos ) xr sin
0 0 1
which can be expressed in the form
T (xr , yr ) . R ( ) . T(– xr , – yr ) = R (xr , yr
–1
, ) where T(– xr , – yr) = T ( xr , yr)
41
General FixedPoint Scaling:
The following diagram illustrates a transformation sequence to produce scaling with respect to a
selected fixed position (xf , yf ) using a scaling function that can only scale relative to the coordinate origin.
1. Translate object so that the fixed point coincides with the coordinate origin.
2. Scale the object with respect to the coordinate origin.
3. Use the inverse translation of step 1 to return the object to its original position.
Concatenating the matrices for these three operations produces the required scaling matrix
1 0 x f s x 0 0 1 0 x f s x x
0 1 y f 0 s y 0 0 1 y f 0 0 f (1 s x )
0 0 1 0 0 1 0 0 1 0 y
s y f (1 s y )
or
0 1
T (xf , yf ) . S (sx , sy ) . T(– xf , – yf ) = S (xf , yf , sx , sy )
General Scaling Directions:
Parameters sx and sy scale objects along the x and y
directions. We can scale an object in other directions by rotating
42
the object to align the desired scaling directions with the coordinate axes before applying the scaling
transformation.
If we want to apply scaling factors with values specified by parameters sl and s2 in the directions
shown in the diagram, to accomplish the scaling with out changing the orientation of the object, we first
perform a rotation so that the directions for s 1 and s2 coincide with the x and y axes, respectively.
Then the scaling transformation is applied, followed by an opposite rotation to return points to their
original orientations. The composite matrix resulting from the product of these three transformations is,
Concatenation Properties:
Matrix multiplication is associative. For any three matrices, A, B and C, the matrix product A . B .
C can be performed by first multiplying A and B or by first multiplying B and C:
A . B . C = (A . B) . C = A . (B . C)
Therefore, we can evaluate matrix products using either a lefttoright or a righttoleft associative
grouping.
On the other hand, transformation products may not be commutative: The matrix product A . B is
not equal to B . A.
This commutative property holds also for two successive translations or two successive scalings.
Another commutative pair of operations is rotation and uniform scaling. ( sx = sy)
General Composite Transformations and Computational Efficiency:
A general twodimensional transformation, representing a combination of translations, rotations,
and scalings, can be expressed as
rs
x rsxx xy trsx x
trs y
y rsyx rsyy
0 1 1
y
1 0
The four elements rsij are the multiplicative rotationscaling terms in the transformation that
involve only rotation angles and scaling factors.
Elements trsx and trsy are the translational terms containing combinations of translation distances,
pivotpoint and fixedpoint coordinates, and rotation angles and scaling parameters.
For example, if an object is to be scaled and rotated about its centroid coordinates (xc, yc) and then
translated, the values for the elements of the composite transformation matrix are
T (tx , ty ) . R (xc , yc , ) . S (xc , yc , sx , sy )
0 0 1
43
where the four elements rij are the multiplicative rotation terms, and elements tr, and try are the
translational terms. A rigidbody change in coordinate position is also sometimes referred to as a rigid
motion transformation.
The orthogonal property of rotation matrices is useful for constructing a rotation matrix when we
know the final orientation of an object rather than the amount of angular rotation necessary to put the
object into that position.
O THER T RANSFORMATIONS :
Some other additional transformations are reflection and shear.
Reflection:
A reflection is a transformation that produces a mirror image of an object. The mirror image for a
twodimensional reflection is generated relative to an axis of reflection by rotating the object 180" about
the reflection axis. Some common reflections are as follows:
xReflection:
Reflection about the line y = 0, the x axis, is accomplished with
the transformation Matrix
1 0 0
0 1 0
0 0 1
This transformation keeps x values the same, but "flips" the y
values of coordinate positions.
The resulting orientation of an object after it has been reflected
about the x axis is shown in the diagram.
yReflection:
A reflection about the y axis flips x coordinates while keeping y coordinates the
same. The matrix for this transformation is,
1 0 0
0 10
0 0 1
The diagram illustrates the change in position of an object that
has been reflected about the line x = 0.
OriginReflection:
0 0 1
If we chose the reflection axis as the diagonal line y = x, the reflection matrix is
0 1 0
1 0 0
0 0 1
To obtain a transformation matrix for reflection about the diagonal y = x, we could concatenate
matrices for the transformation sequence:
(1) clockwise rotation by 45,
(2) reflection about the y axis, and
(3) counterclockwise rotation by 45.
The resulting transformation matrix is
0 1 0
1 0 0
0 0 1
xShearing:
An xdirection shear relative to the x axis is produced with the transformation matrix
x 0
xi
1sh
0 1 0
0 0 1
which transforms coordinate positions
as x’ = x + sh x . y , y’ = y
In the following diagram, shx =2, changes
the square into a parallelogram.
Negative values for shx shift coordinate positions to the left. We can generate xdirection shears
relative to other reference lines with
shx
1 shx yref
1 0
0
0 0 1
with coordinate positions transformed as
x’ = x + sh x ( y – y ref ) , y’ = y
yShearing:
A ydirection shear relative to the line x = xref is generated with the transformation matrix
1 0 0
sh
sh x
0
y 1 y ref
0 1
which generates transformed coordinate
positions
x’ = x , y’ = sh y ( x – x ref ) + y
This transformation shifts a coordinate
position vertically by an amount proportional
to its distance from the reference line x = xref.
The diagram shows the conversion of a
square into a parallelogram with shy = ½ and
xref = 1.
46
2D VIEWING AND CLIPPING
V IEWING :
THE VIEWING PIPELINE:
A worldcoordinate area selected for display is called a window. An area on a display device to
which a window is mapped is called a viewport.
The window defines what is to be viewed.
The viewport defines where it is to be displayed.
Often, windows and viewports are rectangles in standard position, with the rectangle edges parallel
to the coordinate axes.
In general, the mapping of a part of a worldcoordinate scene to device coordinates is referred to as
a viewing transformation.
Sometimes the twodimensional viewing transformation is simply referred to as the windowto
viewport transformation or the windowing transformation. The term window to refer to an area of a world
coordinate scene that has been selected for display
We carry out the viewing transformation in several steps, as indicated below.
1. First, we construct the scene in world coordinates using the output primitives and attributes.
2. Next, to obtain a particular orientation for the window, we can set up a twodimensional viewing
coordinate system in the worldcoordinate plane, and define a window in the viewingcoordinate system.
3. The viewing coordinate reference frame is used to provide a method for setting up arbitrary
orientations for rectangular windows. Once the viewing reference frame is established, we can
transform descriptions in world coordinates to viewing coordinates.
4. We then define a viewport in normalized coordinates (in the range from 0 to 1) and map the viewing
coordinate description of the scene to normalized coordinates.
5. At the final step, all parts of the picture that lie outside the viewport are clipped, and the contents of the
viewport are transferred to device coordinates.
The following diagram illustrates a rotated viewingcoordinate reference frame and the mapping to
normalized coordinates.
By changing the position of the viewport, we can view objects at different positions on the display
area of an output device. Also, by varying the size of viewports, we can change the size and proportions of
displayed objects. We achieve zooming effects by successively mapping differentsized windows on a
fixedsize viewport.
Panning effects are produced by moving a fixedsize window across the various objects in a scene.
When all coordinate transformations are completed, viewport clipping can be performed in normalized
coordinates or in device coordinates. This allows us to reduce computations by concatenating the various
transformation matrices.
VIEWING COORDINATE REFERENCE FRAME:
This coordinate system provides the reference frame for specifying the world coordinate window.
First, a viewingcoordinate origin is selected at some world position: Po = (x0, y0). Then we need to
establish the orientation, or rotation, of this reference frame. One way to do this is to specify a world
vector V that defines the viewing y0, direction. Vector V is called the view up vector.
Given V, we can calculate the components of unit vectors v = (vx, vy) and u = (ux, uy) for the
viewing yv and xv axes, respectively. These unit vectors are used to form the first and second rows of the
rotation matrix R that aligns the viewing xvy v axes with the world xwy w axes.
We obtain the matrix for converting world coordinate positions to viewing coordinates as a two
step composite transformation:
First, we translate the viewing origin to the world origin,
Then we rotate to align the two coordinate reference frames.
The composite 2D transformation to convert world coordinates to viewing coordinate is
where T is the translation matrix that takes the viewing origin point Po to the world origin, and R is the
rotation matrix that aligns the axes of the two reference frames.
A viewingcoordinate frame is moved into coincidence with the world frame in two steps:
(a) translate the viewing origin to the world origin, then (b) rotate to align the axes of the two systems.
WINDOWTOVIEWPORT COORDINATE TRANSFORMATION
A point at position (xw, yw) in a designated window is mapped to viewport coordinates (xv,
yv) so that relative positions in the two areas are the same.
48
Once object descriptions have been transferred to the viewing reference frame, we choose the
window extents in viewing coordinates and select the viewport limits in normalized coordinates. Object
descriptions are then transferred to normalized device coordinates. We do this using a transformation that
maintains the same relative placement of objects in normalized space as they had in viewing coordinates.
If a coordinate position is at the center of the viewing window, for instance, it will be displayed at the
center of the viewport.
The above diagram illustrates the windowtoviewport mapping. A point at position (xw, yw) in the
window is mapped into position (xv, yv) in the associated viewport. To maintain the same relative
placement in the viewport as in the window, we require that,
Solving these expressions for the viewport position (xv, yv), we have
where the scaling factors are
The Equations can also be derived with a set of transformations that converts the window area into
the viewport area.
This conversion is performed with the following sequence of transformations:
1. Perform a scaling transformation using a fixedpoint position of (xwmin, ywmin) that scales the
window area to the size of the viewport.
2. Translate the scaled window area to the position of the viewport.
Relative proportions of objects are maintained if the scaling factors are the same (sx = sy).
Otherwise, world objects will be stretched or contracted in either the x or y direction when displayed on
the output device.
The mapping, called the workstation transformation, is accomplished by selecting a window area in
normalized space and a viewport area in the coordinates of the display device.
49
Mapping selected parts of a scene in normalized coordinates to
different video monitors with workstation transformations.
2D C LIPPING :
CLIPPING OPERATIONS
Generally, any procedure that identifies those portions of a picture that are either inside or outside
of a specified region of space is referred to as a clipping algorithm, or simply clipping. The region against
which an object is to clip is called a clip window.
Applications of clipping include extracting part of a defined scene for viewing; identifying visible
surfaces in threedimensiona1 views; antialiasing line segments or object boundaries; creating objects
using solidmodeling procedures; displaying a multiwindow environment; and drawing and painting
operations that allow parts of a picture to be selected for copying, moving, erasing, or duplicating.
Clipping algorithms can be applied in world coordinates, so that only the contents of the window
interior are mapped to device coordinates.
Worldcoordinate clipping removes those primitives outside the window from further consideration,
thus eliminating the processing necessary to transform those primitives to device space.
Viewport clipping, can reduce calculations by allowing concatenation of viewing and geometric
transformation matrices.
We consider algorithms for clipping the following primitive types
Point Clipping Curve Clipping
Line Clipping (straightline segments) Text Clipping
Area Clipping (polygons)
POINT CLIPPING
Assuming that the clip window is a rectangle in standard position, we save a point P = (x, y) for
display if the following inequalities are satisfied:
where the edges of the clip window (xwmin, xwmax, ywmin, ywmax) can be either
the worldcoordinate window boundaries or viewport boundaries. If any one of
these four inequalities is not satisfied, the point is clipped (not saved for
display).
L INE C LIPPING :
Explain the steps to perform Line Clipping. (Or) (5, 10 Marks)
Describe CohenSutherland Line Clipping algorithm in detail.
50
Explain LiangBarsky Line Clipping algorithm.
The following diagram illustrates the possible relationships between line positions and a
standard rectangular clipping region.
P9
P4 Window Window
P10
P2 P2
P8
P
P3 P1 6 P1 P6 P 8
P5 P 5
P 7
P7
(a) Before clipping (b) After clipping
A line clipping procedure involves several parts.
First, we can test a given line segment to determine whether it lies completely inside the clipping
window.
If it does not, we try to determine whether it lies completely outside the window.
Finally, if we cannot identify a line as completely inside or completely outside, we must perform
intersection calculations with one or more clipping boundaries.
We process lines through the "insideoutside'' test by checking the line endpoints.
A line with both endpoints inside all clipping boundaries, such as the line from P1 to P2 is saved.
A line with both endpoints outside any one of the clip boundaries (line P3P4 in the diagram) is
outside the window.
All other lines cross one or more clipping boundaries, and may require calculation of multiple
intersection points.
For a line segment with endpoints (x1, yl) and (x2. y2) and one or both endpoints outside the clipping
rectangle, the parametric representation
x = x1 + u (x2 – x 1)
y = y1 + u (y2 – y 1), 0 u 1
could be used to determine values of parameter u for intersections with the clipping boundary coordinates.
If the value of u for an intersection with a rectangle boundary edge is outside the range 0 to 1, the
line does not enter the interior of the window at that boundary.
If the value of u is within the range from 0 to 1, the line segment does indeed cross into the
clipping area. This method can be applied to each clipping boundary edge in turn to determine whether
any part of the line segment is to be displayed.
CohenSutherland Line Clipping:
This is one of the oldest and most popular lineclipping procedures. Generally, the method speeds
up the processing of line segments by performing initial tests that reduce the number of intersections that
must he calculated.
Every line endpoint in a picture is assigned a fourdigit binary code, called a region code that
identifies the location of the point relative to the boundaries of the clipping rectangle. Regions are set up in
reference to the boundaries as shown below:.
51
Each bit position in the region code is used to indicate one of the four relative coordinate positions
of the point with respect to the clip window: to the left, right, top, or bottom. By numbering the bit
positions in the region code as 1 through 4 from right to left, the coordinate regions can be correlated with
the bit positions as
bit 1: left
1001 1000 1010
bit 2: right
bit 3: below
bit 4: above
A value of 1 in any bit position
indicates that the point is in that relative 0001 0000 0010
position; otherwise, the bit position is set to
0. If a point is within the clipping rectangle, Window
the region code is 0000. A point that is
below and to the left of the rectangle has a
region code of 0101. 0101 0100 0110
The regioncode bit values can be
determined with the following two steps:
(1) Calculate differences between endpoint coordinates and clipping boundaries.
(2) Use the resultant sign bit of each difference calculation to set the corresponding value in the region code.
o Any lines that are completely contained within the window boundaries have a region code of 0000
for both endpoints, and we trivially accept these lines.
o Any lines that have a 1 in the same bit position in the region codes for each endpoint are
completely outside the clipping rectangle, and we trivially reject these lines.
o A method that can be used to test lines for total clipping is to perform the logical and operation
with both region codes. If the result is not 0000, the line is completely outside the clipping region.
.
To illustrate the specific steps in clipping lines
against rectangular boundaries using the CohenSutherland
algorithm, we show how the lines in the above diagram
could be processed.
Starting with the bottom endpoint of the line from
P1 to P2, we check P1, against the left, right, and bottom
boundaries in turn and find that this point is below the
clipping rectangle. We then find the intersection point P 1
with the bottom boundary and discard the line section from
P1 to P 1. The line now has been reduced to the section from
P 1 to P2. Since P2 is outside the clip window, we check this
endpoint against the boundaries and find that it is to the left
of the window. Intersection point P 2 is calculated, but this
point is above the window. So the final intersection
calculation yields P 2, and the line from P 1 to P 2 is saved. This completes processing for this line, so we
save this part and go on to the next line.
Intersection points with a clipping boundary can be calculated using the slopeintercept form of the
line equation. For a line with endpoint coordinates (x1 ,y1) and (x2 , y2), the y coordinate of the intersection
point with a vertical boundary can be obtained with the calculation
y = y1 + m (x – x 1)
where the x value is set either to xwmin or to xwmax and the slope of the line is calculated
as m = ( y2 – y1 ) / ( x1 – x2 ).
Similarly, if we are looking for the intersection with a horizontal boundary, the x coordinate can be
calculated as
with y set either to ywmin or to ywmax .
52
LiangBarsky Line Clipping:
Faster line clippers have been developed that are based on analysis of the parametric equation of a
line segment, which we can write in the form
x = x1 + u x
y = y1 + u y , 0 u
1 where x = x2 – x 1 , and y = y2 – y 1 .
Liang and Barsky independently devised an even faster parametric lineclipping algorithm. In this
approach, we first write the pointclipping conditions in the parametric form:
xwmin x1 + u x xwmax
ywmin y1 + u y ywmax
Each of these four inequalities can be expressed as
u pk qk , k = 1, 2, 3, 4
where parameters p and q are defined as
p1 = – x, q1 = x1 – xw min
p
k
For each line, we can calculate values fur parameters u1 and u2 that define that part of the line that
lies within the clip rectangle. The value of u1 is determined by looking at the rectangle edges for which the
line proceeds from the outside to the inside (p < 0). For these edges, we calculate rk = qk, / pk, . The value
of u1 is taken as the largest of the set consisting of 0 and the various values of r. Conversely, the value of u2 is
determined by examining the boundaries for which the line proceeds from inside to outside ( p > 0).
A value of rk is calculated for each of these boundaries, and the value of u, is the minimum of the
set consisting of 1 and the calculated r values. If u1 > u2, the line is completely outside the clip window
and it can be rejected. Otherwise, the endpoints of the clipped line are calculated from the two values of
parameter u.
P OLYGON C LIPPING :
A polygon boundary processed with a line clipper may be displayed as a series of unconnected line
segments (fig. (a)) depending on the orientation of the polygon to the clipping window. But we want to
display a bounded area after clipping (fig. (b)).
For polygon clipping, we require an algorithm that will generate one or more closed areas that are
then scan converted for the appropriate area fill. The output of a polygon clipper should be a sequence of
vertices that defines the clipped polygon boundaries.
53
Before Clipping After Clipping Before Clipping After Clipping
Fig. (a) Fig. (b)
SutherlandHodgeman Polygon Clipping:
We can correctly clip a polygon by processing the polygon boundary as a whole against each
window edge. This could be accomplished by processing all polygon vertices against each clip rectangle
boundary in turn.
Beginning with the initial set of polygon vertices, we could first clip the polygon against the left
rectangle boundary to produce a new sequence of vertices. The new set of vertices could then k
successively passed to a right boundary clipper, a bottom boundary clipper, and a top boundary clipper, as
shown in the diagram below. At each step, a new sequence of output vertices is generated and passed to
the next window boundary clipper.
Cli
Original Clip Clip Clip p
Polygon Left Right Bottom Top
There are four possible cases when processing vertices in sequence around the perimeter of a
polygon. As each pair of adjacent polygon vertices is passed to a window boundary clipper, we make the
following tests:
(1) If the first vertex is outside the window boundary and the second vertex is inside, both the
intersection point of the polygon edge with the window boundary and the second vertex are added
to the output vertex list.
(2) If both input vertices are inside the window boundary, only the second vertex is added to the
output vertex list.
(3) If the first vertex is inside the window boundary and the second vertex is outside, only the edge
intersection with the window boundary is added to the output vertex list.
(4) If both input vertices are outside the window boundary, nothing is added to the output list.
These four cases are illustrated in the following diagram for successive pairs of polygon vertices.
54
Once all vertices have been processed for one clip
window boundary, the output list of vertices is clipped against
the next window boundary.
Convex polygons are correctly clipped by this algorithm,
but concave polygons may be displayed with extraneous lines as
shown below. This occurs when the clipped polygon should
have two or more separate sections.
WeilerAtherton Polygon Clipping:
Here, the vertexprocessing procedures for window
boundaries are modified so that concave polygons are displayed correctly. This clipping procedure was
developed as a method for identifying visible surfaces, and so it can be applied with arbitrary polygon
clipping regions.
The basic idea in this algorithm is
that instead of always proceeding around
the polygon edges as vertices are processed,
we sometimes want to follow the window
boundaries.
For clockwise processing of polygon
vertices, we use the following rules:
For an outsidetoinside pair of vertices,
follow the polygon boundary.
For an insidetooutside pair of vertices,
follow the window boundary in a
clockwise direction.
In the figure, the processing direction in the WeilerAtherton algorithm and the resulting clipped
polygon is shown for a rectangular clipping window.
An improvement on the WeilerAtherton
algorithm is the Weiler algorithm, which applies
constructive solid geometry ideas to clip an arbitrary
polygon against any polygon clipping region. The
following diagram illustrates the general idea in this
approach.
For the two polygons, the correctly clipped
polygon is calculated as the intersection of the clipping
polygon and the polygon object.
C URVE C LIPPING :
Curveclipping procedures will involve nonlinear equations,
however, and this requires more processing than for objects with linear
boundaries.
The bounding rectangle for a circle or other curved object can be
used first to test for overlap with a rectangular clip window. If the
bounding rectangle for the object is completely inside the window, we
save the object. If the rectangle is determined to be completely outside the
window, we discard the object. In either case, there is no further
computation necessary. But if the bounding rectangle test fails, we can
look for other computationsaving approaches.
Similar procedures can be applied when clipping a curved object
against a general polygon clip region. On the first pass, we can clip the
55
bounding rectangle of the object against the bounding rectangle of the clip region. If the two regions
overlap, we will need to solve the simultaneous linecurve equations to obtain the clipping intersection
points.
T EXT C LIPPING :
There are several techniques that can be used to provide text clipping in a graphics package. The
clipping technique used will depend on the methods used to generate characters and the requirements of a
particular application.
STRING 1
STRING 2
Before Clipping
STRING 2
After Clipping
fig. (1)
fig. (2) fig. (3)
The simplest method for processing character strings relative to a window boundary is to use the
allornone stringclipping strategy shown in the diagram (fig. (1)). If all of the string is inside a clip window,
we keep it. Otherwise, the string is discarded.
An alternative to rejecting an entire character string that overlaps a window boundary is to use the
allornone characterclipping strategy. Here we discard only those characters that are not completely inside
the window shown in fig. (2).
A final method for handling text clipping is to clip the components of individual characters. We
now treat characters in much the same way that we treated lines. If an individual character overlaps a clip
window boundary, we clip off the parts of the character that are outside the window as in fig. (3).
E XTERIOR C LIPPING :
There are procedures to clip inside the region, to save the parts if the picture that are outside the
region exterior clipping.
A typical example of the application of exterior clipping is in multiplewindow systems. To
correctly display the screen windows, we often need to apply both internal and external clipping.
Objects within a window are clipped to the interior of that window. When other higherpriority
windows overlap these objects, the objects are also clipped to the exterior of the overlapping windows.
Exterior clipping is used also in other applications that require overlapping pictures. Examples here
include the design of page layouts in advertising or publishing applications or for adding labels or design
patterns to a picture. The technique can also be used for combining graphs, maps, or schematics. For these
applications, we can use exterior clipping to provide a space for an insert into a larger picture.
Procedures for clipping objects to the interior of concave polygon windows can also make use of
external clipping.
End of Unit – IV
56
UNIT – V
G RAPHICAL U SER I NTERFACES AND I NTERACTIVE I NPUT M ETHODS
U SER D IALOGUE :
For a particular application, the user’s model serves as the basis for the design for the dialogue. The
user’s model describes what the system is designed to accomplish and what graphics operations are
available. It states the type of objects that can be displayed and how the objects can be manipulated.
For example, if the graphics system is to be used as a tool for architectural design, the model
describes how the package can be used to construct and display views of buildings by positioning walls,
doors, windows, and other building components.
All information in the user dialogue is then presented in the language of the application. In an
architectural design package, this means that all interactions are described only in architectural terms,
without reference to particular data structures or other concepts that may be unfamiliar to an architect.
Windows and Icons:
Visual representations are used both for objects to be manipulated in an application and for the actions
to be performed on the application objects.
A window system provides a windowmanager interface for the user and functions for handling the
display and manipulation of the windows.
Common functions for the window system are opening and closing windows, repositioning windows,
resizing windows, and display routines that provide interior and exterior clipping and other graphics
functions.
Typically, windows are displayed with sliders, buttons, and menu icons for selecting various window
options.
Some general systems, such as X Windows and NeWS, are capable of supporting multiple window
managers so that different window styles can be accommodated, each with its own window manager.
The window managers can then be designed for particular applications.
Icons representing objects such as furniture items and circuit elements are often referred to as
application icons.
The icons representing actions, such as rotate, magnify, scale, clip, and paste, are called control icons,
or command icons.
Accommodating Multiple Skill Levels:
Usually, interactive graphical interfaces provide several methods for selecting actions.
For example, options could be selected by pointing at an icon and clicking different mouse buttons,
or by accessing pulldown or popup menus, or by typing keyboard commands. This allows a
package to accommodate users that have different skill levels.
A simplified set of menus and options is easy to learn and remember, and the user can concentrate on
the application instead of on the details of the interface.
Interfaces typically provide a means for masking the complexity of a package, so that beginners can
use the system without being overwhelmed with too much detail.
Experienced users typically want speed. This means fewer prompts more input from the keyboard or
with multiple mousebutton clicks.
Actions are selected with function keys or with simultaneous combinations of keyboard keys, since
experienced users will remember these shortcuts for commonly used actions.
Consistency:
An important design consideration in an Interface is Consistency.
For example, a particular icon shape should always have a single meaning, rather than serving to
represent different actions or objects depending on the context.
Generally, a complicated, inconsistent model is difficult for a user to understand and to work with in
an effective way.
The objects and operations provided should be designed to form a minimum and consistent set so that
the system is easy to learn, but not oversimplified to the point where it is difficult to apply.
Minimizing Memorization:
Operations in an interface should also be structured so that they are easy to understand and to remember.
- 57
Obscure, complicated and inconsistent and abbreviated command formats lead to confusion and
reduction in the effectiveness of the use of the package.
One key or button used for all delete operations.
For example, is easier to remember than a number of different keys for different types of delete
operations.
Icons and window systems also aid in minimizing memorization.
Icons are used to reduce memorizing by displaying easily recognizable shapes for various objects and
actions. To select a particular action, we simply select the icon that resembles that action.
Backup and Error Handling:
A mechanism for backing up, or aborting, during a sequence of operations is another common feature
of an interface. Often an operation can be canceled before execution is completed, with the system
restored to the state it was in before the operation was started.
With the ability to back up; it any point, we can confidently explore the capabilities of the system,
knowing that the effects of a mistake can be erased.
Backup can be provided in many forms.
A standard undo key or command is used to cancel a single operation.
Sometimes a system can be backed up through several operations, allowing us to reset the system
to some specified point.
In a system with extensive backup capabilities, all inputs could be saved so that we can back up and
“replay” any part of a session.
Good diagnostics and error messages are designed to help determine the cause of an error.
Additionally, interfaces attempt to minimize error possibilities by anticipating certain actions that
could lead to an error.
Feedback:
Interfaces are designed to carry on a continual interactive dialogue so that we are informed of actions
in progress at each step. This is particularly important when the response time is high.
Without feedback, we might begin to wonder what the system is doing and whether the input should be
given again.
As each input is received, the system normally provides some type of response. An object is
highlighted, an icon appears, or a message is displayed. This not only informs us that the input has
been received, but it also tells us what the system is doing.
If processing cannot be completed within a few seconds, several feedback messages might be
displayed to keep us informed of the progress of the system.
To speed system response, feedback techniques can be chosen to take advantage of the operating
characteristics of the type of devices in use.
Other feedback methods include highlighting, blinking, and color
changes. Special symbols are designed for different types of feedback.
For example, a cross, a frowning face, or a thumbsdown symbol is often used to indicate an error;
and a blinking “at work” sign is used to indicate t hat processing is in progress.
With some types of input, echo feedback is desirable. Typed characters can be displayed on the screen
as they are input so that we can detect and correct errors immediately.
I NPUT OF G RAPHICAL D ATA :
Graphics programs use several kinds of input data. Picture specifications need values for
coordinate positions, values for the characterstring parameters, scalar values for the transformation
parameters, values specifying menu options, and values for identification of picture parts.
To make graphics packages independent of the particular hardware devices used, input functions
can he structured according to the data description to be handled by each function. This approach provides
a logical inputdevice classification in terms of the kind of data to be input by the device.
Logical Classification of Input Devices:
The various kinds of input data are summarized in the following six logical device
classifications used by PHIGS and GKS:
LOCATOR – a device for specifying a coordinate position (x, y)
STROKE – a device for specifying a series of coordinate po sitions
58
STRING – a device for specifying text input
VALUATOR – a device for specifying scalar values
CHOICE – a device for selecting menu options
PICK – a device for selecting picture components
Locator Devices:
A standard method for interactive selection of a coordinate point is by positioning the screen cursor.
We can do this with a mouse, joystick, trackball, spaceball, thumbwheels, dials, a digitizer stylus or
hand cursor, or some other cursorpositioning device. When the screen cursor is at the desired location,
a button is activated to store the coordinates of that screen point.
Keyboards can be used for locator input in several ways. A generalpurpose keyboard usually has four
cursorcontrol keys that move the screen cursor up, down, left, and right.
Alternatively, a joystick, joydisk, trackball, or thumbwheels can be mounted on the keyboard for
relative cursor movement.
Light pens have also been used to input coordinate positions, but some special implementation
considerations are necessary. Since light pens operate by detecting light emitted from the screen
phosphors, some nonzero intensity level must be present at the coordinate position to be selected.
Stroke Devices:
This class of logical devices is used to input a sequence of coordinate positions.
Strokedevice input is equivalent to multiple calls to a locator device. The set of input points is often
used to display line sections.
Continuous movement of a mouse, trackball, joystick, or tablet hand cursor is translated into a series of
input coordinate values.
The graphics tablet is one of the more common stroke devices. Button activation can be used to place
the tablet into “continuous” mode. As the cursor is moved across the tablet surface, a stream of
coordinate values is generated. This process is used in paintbrush systems that allow artists to draw
scenes on the screen and in engineering systems where layouts can be traced and digitized for storage.
String Devices:
The primary physical device used for string input is the keyboard. Input character strings are typically
used for picture or graph labels.
Other physical devices can be used for generating character patterns in a “textwriting” mode. For thi s
input, individual characters are drawn on the screen with a stroke or locatortype device. A pattern
recognition program then interprets the characters using a stored dictionary of predefined patterns.
Valuator Devices:
These devices are employed in graphic systems to input scalar values. Valuators are used for setting various
graphics parameters, such as rotation angle and scale factors, and for setting physical parameters associated
with a particular application (temperature settings, voltage levels, stress factors, etc.).
A typical physical device used to provide valuator input is a set of control dials. Floatingpoint
numbers within any predefined range are input by rotating the dials.
Dial rotations in one direction increase the numeric input value, and opposite rotations decrease the
numeric value. Rotary potentiometers convert dial rotation into a corresponding voltage. This voltage
is then translated into a real number within a defined scalar range, such as 10.5 to 25.5. Instead of
dials, slide Potentiometers are sometimes used to convert linear movements into scalar values.
Joystick, trackball, tablets, and other interactive devices can be adapted for valuator input by
interpreting pressure or movement of the device relative to a scalar range.
Another technique for providing valuator input is to display sliders, buttons, rotating scales, and menus
on the video monitor.
Choice Devices:
Graphics packages use menus to select programming options, parameter values, and object shapes to
be used in constructing a picture.
A choice device is defined as one that enters a selection from a list (menu) of alternatives. Commonly
used choice devices are a set of buttons; a cursor positioning device, such as a mouse, trackball, or
keyboard cursor keys; and a touch panel.
- 59
For screen selection of listed menu options, we can use cursorcontrol devices. When a coordinate
position (x, y) is selected, it is compared to the coordinate extents of each listed menu item. A menu
item with vertical and horizontal boundaries at the coordinate values xmin, xmax, ymin and ymax is
selected if the input coordinates (x, y) satisfy the inequalities
xmin, x xmax , ymin y ymax
For larger menus with a few options displayed at a time, a touch panel is commonly used.
Alternate methods for choice input include keyboard and voice entry. A standard keyboard can be used
to type in commands or menu options.
Similar coding can be used with voiceinput systems. Voice input is particularly useful when the
number of options is small (20 or less).
Pick Devices:
Pick devices are used to select parts of a scene that are to be transformed or edited in some way.
Typical devices used for object selection are the same as those for menu selection: the cursor
positioning devices.
With a mouse or joystick, we can position the cursor over the primitives in a displayed structure and
press the selection button. The position of the cursor is then recorded, and several levels of search may
be necessary to locate the particular object (if any) that is to be
selected.
First, the cursor position is compared to the coordinate extents
of the various structures in the scene. If the bounding
rectangle of a structure contains the cursor coordinates, the
picked structure has been identified.
One way to find the closest line to the cursor position is to
calculate the distance squared from the cursor coordinates (x,
y) to each line segment whose bounding rectangle contains
the cursor position as shown in the diagram.
For a line with endpoints (x1, y1) and (x2, y2), distance squared from (x, y) to the line is calculated as
where x = x2 – r and y = y2 – y .
Another method for finding the closest line to the cursor position is
to specify the size of a pick window.
The cursor coordinates are centered on this window and the
candidate lines are clipped to the window, as shown in the diagram.
By making the pick window small enough, we can ensure that a
single line will cross the window.
We could use a keyboard to type in structure names. Descriptive
names can be used to help the user in the pick process, but the
method has several drawbacks.
It is generally slower than interactive picking on the screen, and a
user will probably need prompts to remember the various structure
names.
In addition, picking structure subparts from the keyboard can be more difficult than picking the
subparts on the screen.
I NPUT F UNCTIONS
Graphical input functions can be set up to allow users to specify the following options:
Which physical devices are to provide input within a particular logical classification (for example, a
tablet used as a stroke device).
How the graphics program and devices are to interact (input mode). Either the program or the devices
can initiate data entry, or both can operate simultaneously.
When the data are to be input and which device is to be used at that time to deliver a particular input
type to the specified data variables.
- 60
Input Modes:
Functions to provide input can be structured to operate in various input modes, which specify how
the program and input devices interact. Input could be initiated by the program, or the program and input
devices both could be operating simultaneously, or data input could be initiated by the devices. These
three input modes are referred to as request mode, sample mode, and event mode.
¥ In request mode, the application program initiates data entry. Input values are requested and
processing is suspended until the required values are received.
¥ In sample mode, the application program and input devices operate independently. Input devices
may be operating at the same time that the program is processing other data.
¥ In event mode, the input devices initiate data input to the application program. The program and the
input devices again operate concurrently, but now the input devices deliver data to an input queue.
All input data are saved. When the program requires new data, it goes to the data queue.
An input mode within a logical class for a particular physical device operating on a specified
workstation is declared with one of six inputclass functions of the form
set . . . Mode (ws, deviceCode, inputMode, echoFlag)
where devicecode is a positive integer; inputMode is assigned
one of the values: request, sample, or event; and parameter
echoFlag is assigned either the value echo or the value noecho.
Request Mode:
Input commands used in this mode correspond to standard
input functions in a highlevel programming language. When we ask
for an input in request mode, other processing is suspended until the
input is received. input requests can be made to that device using one
of the six logicalclass functions represented by the following:
request . . . (ws, devicecode, status, . . . . )
Values input with this function are the workstation code and the device code. Returned values are
assigned to parameter status and to the data parameters corresponding to the requested logical class.
A value of ok or nonc is returned in parameter status, according to the validity of the input data. A
value of none indicates that the input device was activated so as to produce invalid data.
A returned value of none can be used as an endofdata signal to terminate a programming sequence.
Locator and Stroke Input in Request Mode
The request functions for these two logical input classes art.
requestLocator (ws, devcode, status , viewIndex, pt)
requestStroke (ws, devCode, nNax, status , viewIndex, n , pts)
For locator input, pt is the worldcoordinate position selected. For stroke input, pts is a list of n
coordinate positions, where parameter nMax gives the maximum number of points that can go in the input
list. Parameter viewIndex is assigned the twodimensional view index number.
Determination of a worldcoordinate position is a twostep process: (1) The physical device selects
a point in device coordinates (usually from the videodisplay screen) and the inverse of the workstation
transformation is performed to obtain the corresponding point in normalized device coordinates. (2) Then,
the inverse of the windowtoviewport mapping is carried out to get to viewing coordinates, then to world
coordinates.
Since two or more views may overlap on a device, the correct viewing transformation is identified
according to the viewtransformation input priority number. View index 0 has the highest priority. We can
change the view priority relative to another (reference) viewing transformation with
setViewTransformationInputPriority (ws, viewIndex, refViewIndex, priority)
61
String Input in Request Mode:
Here, the request input function is
requestString (ws, devcode, status, nChars, str)
Parameter str in this function is assigned an input string. The number of characters in the string is
given in parameter nChars.
Valuator Input in Request Mode:
A numerical value is input in request mode with
requestvaluator (ws, devcode, status, value)
Parameter value cal be assigned any realnumber value.
Choice lnput in Request Mode
We make a menu selection with the following request function:
requestchoice (ws, devCode, status, itemNum)
Parameter itemNum is assigned a positive integer value corresponding to the menu item selected.
Pick lnput in Request Mode
For this mode, we obtain a structure identifier number with the function
requestpick (ws, devCode, maxPathDepth, status, pathDepth, pickpath)
Parameter pickpath is a list of information identifying the primitive selected. This list contains
the structure name, pick identifier for the primitive, and the element sequence number. Parameter
pickDepth is the number of levels returned in pickpath, and maxPathDepth is the specified
maximum path depth that can be included in pickpath.
Sample Mode:
Once sample mode has been set for one or more physical devices, data input begins without
waiting for program direction. Sampling of the current values from a physical device in this mode begins
when a sample command is encountered in the application program. A locator device is sampled with one
of the six logicalclass functions represented by the following:
sample . . . (ws, deviceCode, . . .)
A final translation position for the object can be obtained with a locator, and the rotation angle can
be supplied by a valuator device, as demonstrated in the following statements.
sampleLocator (wsl, devl, viewIndex, pt)
sampleValuator (ws2, dev2, angle)
Event Mode:
When an input device is placed in event mode, the program and device operate simultaneously.
Data input from the device is accumulated in an event queue, or input queue. All input devices active in
event mode can enter data (referred to as "events") into this singleevent queue, with each device entering
data values as they are generated.
An application program can be directed to check the event queue for any input with the
function awaitEvent (time, ws, deviceClass, deviceCode)
62
Some additional housekeeping functions can be used in event mode. Functions for clearing the event
queue are useful when a process is terminated and a new application is to begin. These functions can be set to
clear the entire queue or to clear only data associated with specified input devices and workstations.
Concurrent Use of Input Modes:
An object is dragged around the screen with a mouse. When a final position has been selected, a
button is pressed to terminate any further movement of the object. The mouse positions are obtained in
sample mode, and the button input is sent to the event queue.
I NTERACTIVE P ICTURE C ONSTRUCTION T ECHNIQUES
There are several techniques that are incorporated into graphics packages to aid the interactive
construction of pictures. Input coordinates can establish the position or boundaries for objects to be drawn,
or they can be used to rearrange previously displayed objects.
Basic Positioning Methods:
Coordinate values supplied by locator input are often used with positioning methods to specify a
location for displaying an object or a character string. We interactively select coordinate positions with a
pointing device, usually by positioning the screen cursor.
For lines, straight line segments can be displayed between two selected screen positions. As an aid
in positioning objects, numeric values for selected positions can be echoed on the screen. Using the echoed
coordinate values as a guide, we can make adjustments in the selected location to obtain accurate
positioning.
Constraints:
With some applications, certain types of prescribed orientations or object alignments are useful. A
constraint is a rule for altering inputcoordinate values to produce a specified orientation or alignment of
the displayed coordinates. There are many kinds of constraint functions that can be specified, but the most
common constraint is a horizontal or vertical alignment of straight lines. This type of constraint, shown in
the following diagrams, is useful in forming network layouts.
With this constraint, we can create horizontal and vertical lines without worrying about precise
specification of endpoint coordinates.
The above diagram illustrates line drawing with a grid. Each of the two cursor positions is shifted
to the nearest grid intersection point, and the line is drawn between these grid points. Grids facilitate object
constructions, because a new line can be joined easily to a previously drawn line by selecting any position
near the endpoint grid intersection of one end of the displayed line.
Gravity Field:
In the construction of figures, we sometimes need to connect lines at positions between endpoints.
Since exact positioning of the screen cursor at the connecting point can be difficult, graphics packages can
be designed to convert any input position near a line to a position on the line.
This conversion of input position is accomplished by creating a
gravity field area around the line. Any selected position within the gravity
field of a line is moved ("gravitated") to the nearest position on the line.
A gravity field area around a line is illustrated with the shaded
boundary as shown in the diagram. Areas around the endpoints are enlarged to
make it easier for us to connect lines at their endpoints. Selected positions in
one of the circular areas of the gravity field are attracted to the
endpoint in that area. If many lines are displayed, gravity areas can overlap, and it may be difficult to
specify points correctly. Normally, the boundary for the gravity field is not displayed.
RubberBand Method:
Straight lines can be constructed and positioned using RubberBand methods, which stretch out a
line from a starting position as the screen cursor is moved. The following figure demonstrates the rubber
band method.
We first select a screen position for one endpoint of the line. Then, as the cursor moves around, the
line is displayed from the start position to the current position of the cursor. When we finally select a
second screen position, the other line endpoint is set. Rubberband methods are used to construct and
position other objects besides straight lines.
64
Figure (a) demonstrates rubberband construction of a rectangle, and Figure (b) shows a rubber
band circle construction.
Fig. (a) RubberBand method for constructing a Rectangle
Fig. (b) RubberBand method for constructing a Circle
Dragging:
A technique that is often used in interactive picture construction is to move objects into position by
dragging them with the screen cursor. We first select an object, and then move the cursor in the direction
we want the object to move, and the selected object follows the cursor path.
Painting and Drawing:
Options for sketching, drawing, and painting come in a variety of forms. Curvedrawing options
can be provided using standard curve shapes, such as circular arcs and splines, or with freehand sketching
procedures. Splines are interactively constructed by specifying a set of discrete screen points that give the
general shape of the curve. Then the system fits the set of points with a polynomial curve. In freehand
drawing, curves are generated by following the path of a stylus on a graphics tablet or the path of the
screen cursor on a video monitor. Once a curve is displayed, the designer can alter the curve shape by
adjusting the positions of selected points along the curve path.
End of Unit – V
- 65