Basics of Computer Graphics Explained
Basics of Computer Graphics Explained
Introduction
Computer is information processing machine. User needs to communicate with computer and the
computer graphics is one of the most effective and commonly used ways of communication with the user.
It displays the information in the form of graphical objects such as pictures, charts, diagram and graphs.
Graphical objects convey more information in less time and easily understandable formats for example
statically graph shown in stock exchange.
In computer graphics picture or graphics objects are presented as a collection of discrete pixels.
We can control intensity and color of pixel which decide how picture look like.
The special procedure determines which pixel will provide the best approximation to the desired picture or
graphics object this process is known as Rasterization.
The process of representing continuous picture or graphics object as a collection of discrete pixels is called
Scan Conversion.
Display devices
Display devices are also known as output devices.
Most commonly used output device in a graphics system is a video monitor.
Cathode-ray-tubes
CPU
I/O Port
Display
buffer (Interaction (Display
memory data) command)
Keyboard Mouse
Vector scan display directly traces out only the desired lines on CRT.
If we want line between point p1 & p2 then we directly drive the beam deflection circuitry which focus
beam directly from point p1 to p2.
If we do not want to display line from p1 to p2 and just move then we can blank the beam as we move it.
To move the beam across the CRT, the information about both magnitude and direction is required. This
information is generated with the help of vector graphics generator.
Fig. 1.2 shows architecture of vector display. It consists of display controller, CPU, display buffer
memoryand CRT.
Display controller is connected as an I/O peripheral to the CPU.
Display buffer stores computer produced display list or display program.
The Program contains point & line plotting commands with end point co-ordinates as well as character
plotting commands.
Display controller interprets command and sends digital and point co-ordinates to a vector generator.
Vector generator then converts the digital co-ordinate value to analog voltages for beam deflection circuits
that displace an electron beam which points on the CRT’s screen.
In this technique beam is deflected from end point to end point hence this techniques is also called random
scan.
We know as beam strikes phosphors coated screen it emits light but that light decays after few
milliseconds and therefore it is necessary to repeat through the display list to refresh the screen at least 30
times per second to avoid flicker.
As display buffer is used to store display list and used to refreshing, it is also called refresh buffer.
Unit-1&2
– Basics of Computer Graphics
Raster scan display
CPU
I/O Port
(Interaction (Display
data) command
Keyboard
Display controller
Mouse
00000000000000000
00000111111100000 CRT
00000000100000000 Video controller T
00000000100000000
00000000100000000
Refresh buffer
Fig. 1.3 shows the architecture of Raster display. It consists of display controller, CPU, video controller,
refresh buffer, keyboard, mouse and CRT.
The display image is stored in the form of 1’s and 0’s in the refresh buffer.
The video controller reads this refresh buffer and produces the actual image on screen.
It will scan one line at a time from top to bottom & then back to the top.
Horizonta
Vertical
OFF l Retrace
Retrace ON
In this method the horizontal and vertical deflection signals are generated to move the beam all over the
screen in a pattern shown in fig. 1.4.
Here beam is swept back & forth from left to the right.
When beam is moved from left to right it is ON.
Unit-1&2
– Basics of Computer Graphics
When beam is moved from right to left it is OFF and process of moving beam from right to left after
completion of row is known as Horizontal Retrace.
When beam is reach at the bottom of the screen. It is made OFF and rapidly retraced back to the top left to
start again and process of moving back to top is known as Vertical Retrace.
The screen image is maintained by repeatedly scanning the same image. This process is known as
Refreshing of Screen.
In raster scan displays a special area of memory is dedicated to graphics only. This memory is called
Frame Buffer.
Frame buffer holds set of intensity values for all the screen points.
That intensity is retrieved from frame buffer and display on screen one row at a time.
Each screen point referred as pixel or Pel (Picture Element).
Each pixel can be specified by its row and column numbers.
It can be simply black and white system or color system.
In simple black and white system each pixel is either ON or OFF, so only one bit per pixel is needed.
Additional bits are required when color and intensity variations can be displayed up to 24-bits per pixel
are included in high quality display systems.
On a black and white system with one bit per pixel the frame buffer is commonly called a Bitmap. And
for systems with multiple bits per pixel, the frame buffer is often referred as a Pixmap.
Electron Beam The electron beam is swept across the The electron beam is directed only to the
screen, one row at a time, from top to parts of screen where a picture is to be
bottom. drawn.
Resolution Its resolution is poor because raster Its resolution is good because this system
system in contrast produces zigzag produces smooth lines drawings because
lines that are plotted as discrete point CRT beam directly follows the line path.
sets.
Picture Definition Picture definition is stored as a set of Picture definition is stored as a set of line
intensity values for all screen points, drawing instructions in a display file.
called pixels in a refresh buffer area.
Realistic Display The capability of this system to store These systems are designed for line-
intensity values for pixel makes it well drawing and can’t display realistic shaded
suited for the realistic display of scenes scenes.
contain shadow and color pattern.
Draw an Image Screen points/pixels are used to draw Mathematical functions are used to draw an
an image. image.
Unit-1&2
– Basics of Computer Graphics
Color CRT monitors
A CRT monitors displays color pictures by using a combination of phosphors that emit different colored
light.
It produces range of colors by combining the light emitted by different phosphors.
There are two basic techniques for color display:
1. Beam-penetration technique
2. Shadow-mask technique
Beam-penetration technique
Shadow-mask technique
Advantage of DVST
Refreshing of CRT is not required.
Very complex pictures can be displayed at very high resolution without flicker.
Flat screen.
Disadvantage of DVST
They do not display color and are available with single level of line intensity.
For erasing it is necessary to removal of charge on the storage grid so erasing and redrawing process
take several second.
Erasing selective part of the screen cannot be possible.
Cannot used for dynamic graphics application as on erasing it produce unpleasant flash over entire
screen.
It has poor contrast as a result of the comparatively low accelerating potential applied to the flood
electrons.
The performance of DVST is somewhat inferior to the refresh CRT.
It is similar to plasma panel display but region between the glass plates is filled with phosphors such as
zinksulphide doped with magnesium instead of gas.
When sufficient voltage is applied the phosphors becomes a conductor in area of intersection of the two
electrodes.
Electrical energy is then absorbed by the manganese atoms which then release the energy as a spot of
light similar to the glowing plasma effect in plasma panel.
It requires more power than plasma panel.
In this good color and gray scale difficult to achieve.
Fig. 1.10: - Light twisting shutter effect used in design of most LCD.
It is generally used in small system such as calculator and portable laptop.
This non emissive device produce picture by passing polarized light from the surrounding or from an
internal light source through liquid crystal material that can be aligned to either block or transmit the light.
The liquid crystal refreshes to fact that these compounds have crystalline arrangement of molecules then
also flows like liquid.
It consists of two glass plates each with light polarizer at right angles to each other sandwich the liquid
crystal material between the plates.
Rows of horizontal transparent conductors are built into one glass plate, and column of vertical
conductors are put into the other plates.
The intersection of two conductors defines a pixel position.
In the ON state polarized light passing through material is twisted so that it will pass through the opposite
polarizer.
In the OFF state it will reflect back towards source.
We applied a voltage to the two intersecting conductor to align the molecules so that the light is not
twisted.
This type of flat panel device is referred to as a passive matrix LCD.
In active matrix LCD transistors are used at each (x, y) grid point.
Unit-1&2
– Basics of Computer Graphics
Transistor cause crystal to change their state quickly and also to control degree to which the state has
been changed.
Transistor can also serve as a memory for the state until it is changed.
So transistor make cell ON for all time giving brighter display then it would be if it had to be refresh
periodically
CRT
Viewer
Vibrating mirror changes its focal length due to vibration which is synchronized with the display of an
object on CRT.
The each point on the object is reflected from the mirror into spatial position corresponding to distance of
that point from a viewing position.
Very good example of this system is GENISCO SPACE GRAPH system, which use vibrating mirror to
project 3D objects into a 25 cm by 25 cm by 25 cm volume. This system is also capable to show 2D cross
section at different depth.
Stereoscopic views does not produce three dimensional images, but it produce 3D effects by presenting
different view to each eye of an observer so that it appears to have depth.
To obtain this we first need to obtain two views of object generated from viewing direction
corresponding to each eye.
We can construct the two views as computer generated scenes with different viewing positions or we
can use stereo camera pair to photograph some object or scene.
When we see simultaneously both the view as left view with left eye and right view with right eye then
two views is merge and produce image which appears to have depth.
One way to produce stereoscopic effect is to display each of the two views with raster system on
alternate refresh cycles.
The screen is viewed through glasses with each lance design such a way that it act as a rapidly alternating
shutter that is synchronized to block out one of the views.
Virtual-reality
Virtual reality is the system which produce images in such a way that we feel that our surrounding is
what we are set in display devices but in actually it does not.
In virtual reality user can step into a scene and interact with the environment.
Unit-1&2
– Basics of Computer Graphics
A head set containing an optical system to generate the stereoscopic views is commonly used in
conjunction with interactive input devices to locate and manipulate objects in the scene.
Sensor in the head set keeps track of the viewer’s position so that the front and back of objects can be
seen as the viewer “walks through” and interacts with the display.
Virtual reality can also be produce with stereoscopic glass and video monitor instead of head set. This
provides low cost virtual reality system.
Sensor on display screen track head position and accordingly adjust image depth.
System Bus
I/O Devices
Raster graphics systems having additional processing unit like video controller or display controller.
Here frame buffer can be anywhere in the system memory and video controller access this for refresh
the screen.
In addition to video controller more processors are used as co-processors to accelerate the system in
sophisticated raster system.
Raster graphics system with a fixed portion of the system memory reserved for the
frame buffer
System bus
I/O Devices
Fig. 1.15: - Architecture of a raster graphics system with a fixed portion of the system memory reserved for
the frame buffer.
Unit-1&2
– Basics of Computer Graphics
A fixed area of the system memory is reserved for the frame buffer and the video controller can directly
access that frame buffer memory.
Frame buffer location and the screen position are referred in Cartesian coordinates.
For many graphics monitors the coordinate origin is defined at the lower left screen corner.
Screen surface is then represented as the first quadrant of the two dimensional systems with positive X-
value increases as left to right and positive Y-value increases bottom to top.
System Bus
I/O Devices
System Bus
I/O Devices
An application program is input & 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 used by display processor to refresh the screen.
Display process goes through each command in display file. Once during every refresh cycle.
Sometimes the display processor in random scan system is also known as display processing unit or a
graphics controller.
In this system graphics platform are drawn on random scan system by directing the electron beam along
the component times of the picture.
Lines are defined by coordinate end points.
This input coordinate values are converts to X and Y deflection voltages.
A scene is then drawn one line at a time.
Mouse
Mouse is small size hand-held box used to position screen cursor.
Wheel or roller or optical sensor is directing pointer on the according to movement of mouse.
Three buttons are placed on the top of the mouse for signaling the execution of some operation.
Now a day’s more advance mouse is available which are very useful in graphics application for example Z
mouse.
Joysticks
A joy stick consists of small vertical lever mounted on a base that is used to steer the screen cursor
around.
Most joy sticks selects screen positioning according to actual movement of stick (lever).
Some joy sticks are works on pressure applied on sticks.
Sometimes joy stick mounted on keyboard or sometimes used alone.
Movement of the stick defines the movement of the cursor.
In pressure sensitive stick pressure applied on stick decides movement of the cursor. This pressure is
measured using strain gauge.
This pressure sensitive joy sticks also called as isometric joy sticks and they are non movable sticks.
Data glove
Data glove is used to grasp virtual objects.
The glow is constructed with series of sensors that detect hand and figure motions.
Electromagnetic coupling is used between transmitter and receiver antennas which used to provide
position and orientation of the hand.
Transmitter & receiver Antenna can be structured as a set of three mutually perpendicular coils forming
3D Cartesian coordinates system.
Input from the glove can be used to position or manipulate object in a virtual scene.
Digitizer
Digitizer is common device for drawing painting or interactively selecting coordinates position on an
object.
One type of digitizers is graphics tablet which input two dimensional coordinates by activating hand
cursor or stylus at selected position on a flat surface.
Stylus is flat pencil shaped device that is pointed at the position on the tablet.
Image Scanner
Image Scanner scan drawing, graph, color, & black and white photos or text and can stored for computer
processing by passing an optical scanning mechanism over the information to be stored.
Once we have internal representation of a picture we can apply transformation.
We can also apply various image processing methods to modify the picture.
For scanned text we can apply modification operation.
Touch Panels
As name suggest Touch Panels allow displaying objects or screen-position to be selected with the touch
or finger.
A typical application is selecting processing option shown in graphical icons.
Unit-1&2
– Basics of Computer Graphics
Some system such as a plasma panel are designed with touch screen
Other system can be adapted for touch input by fitting transparent touch sensing mechanism over a
screen.
Touch input can be recorded with following methods.
1. Optical methods
2. Electrical methods
3. Acoustical methods
Optical method
Optical touch panel employ a line of infrared LEDs along one vertical and one horizontal edge.
The opposite edges of the edges containing LEDs are contain light detectors.
When we touch at a particular position the line of light path breaks and according to that breaking line
coordinate values are measured.
In case two line cuts it will take average of both pixel positions.
LEDs operate at infrared frequency so it cannot be visible to user.
Electrical method
An electrical touch panel is constructed with two transparent plates separated by small distance.
One is coated with conducting material and other is coated with resistive material.
When outer plate is touch it will come into contact with internal plate.
When both plates touch it creates voltage drop across the resistive plate that is converted into coordinate
values of the selected position.
Acoustical method
In acoustical touch panel high frequency sound waves are generated in horizontal and vertical direction
across a glass plates.
When we touch the screen the waves from that line are reflected from finger.
These reflected waves reach again at transmitter position and time difference between sending and
receiving is measure and converted into coordinate values.
Light pens
Light pens are pencil-shaped device used to select positions by detecting light coming from points on the
CRT screen.
Activated light pens pointed at a spot on the screen as the electron beam lights up that spot and
generate electronic pulse that causes the coordinate position of the electron beam to be recorded.
Voice systems
It is used to accept voice command in some graphics workstations.
It is used to initiate graphics operations.
It will match input against predefined directory of words and phrases.
Dictionary is setup for a particular operator by recording his voice.
Each word is speak several times and then analyze the word and establishes a frequency pattern for that
word along with corresponding function need to be performed.
When operator speaks command it will match with predefine dictionary and perform desired action.
Unit-1&2
– Basics of Computer Graphics
Graphics software and standard
There are mainly two types of graphics software:
1. General programming package
2. Special-purpose application package
A general programming package provides an extensive set of graphics function that can be used in high
level programming language such as C or FORTRAN.
It includes basic drawing element shape like line, curves, polygon, color of element transformation etc.
Example: - GL (Graphics Library).
Special-purpose application package are customize for particular application which implement required
facility and provides interface so that user need not to vory about how it will work (programming). User
can simply use it by interfacing with application.
Example: - CAD, medical and business systems.
Coordinate representations
Except few all other general packages are designed to be used with Cartesian coordinate specifications.
If coordinate values for a picture are specified is some other reference frame they must be converted to
Cartesian coordinate before giving input to graphics package.
Special-purpose package may allow use of other coordinates which suits application.
In general several different Cartesian reference frames are used to construct and display scene.
We can construct shape of object with separate coordinate system called modeling coordinates or
sometimes local coordinates or master coordinates.
Once individual object shapes have been specified we can place the objects into appropriate positions
called world coordinates.
Finally the World-coordinates description of the scene is transferred to one or more output device
reference frame for display. These display coordinates system are referred to as “Device Coordinates” or
“Screen Coordinates”.
Generally a graphic system first converts the world-coordinates position to normalized device coordinates.
In the range from 0 to 1 before final conversion to specific device coordinates.
An initial modeling coordinates position ( Xmc,Ymc) in this illustration is transferred to a device
coordinates position(Xdc,Ydc) with the sequence ( Xmc,Ymc) ( Xwc,Ywc) ( Xnc,Ync) ( Xdc,Ydc).
Graphic Function
A general purpose graphics package provides user with Varity of function for creating and manipulating
pictures.
The basic building blocks for pictures are referred to as output primitives. They includes character,
string, and geometry entities such as point, straight lines, curved lines, filled areas and shapes defined with
arrays of color points.
Input functions are used for control & process the various input device such as mouse, tablet, etc.
Control operations are used to controlling and housekeeping tasks such as clearing display screen etc.
All such inbuilt function which we can use for our purpose are known as graphics function
Unit-1&2
– Basics of Computer Graphics
Software Standard
Primary goal of standardize graphics software is portability so that it can be used in any hardware
systems & avoid rewriting of software program for different system
Some of these standards are discuss below
This system was adopted as a first graphics software standard by the international standard organization
(ISO) and various national standard organizations including ANSI.
GKS was originally designed as the two dimensional graphics package and then later extension was
developed for three dimensions.
PHIGS is extension of GKS. Increased capability for object modeling, color specifications, surface
rendering, and picture manipulation are provided in PHIGS.
Extension of PHIGS called “PHIGS+” was developed to provide three dimensional surface shading
capabilities not available in PHIGS.
Unit-3 – Graphics Primitives
Fig. 2.1: - Stair step effect produced when line is generated as a series of pixel positions.
The stair step shape is noticeable in low resolution system, and we can improve their appearance
somewhat by displaying them on high resolution system.
More effective techniques for smoothing raster lines are based on adjusting pixel intensities along the
line paths.
For raster graphics device-level algorithms discuss here, object positions are specified directly in integer
device coordinates.
Pixel position will referenced according to scan-line number and column number which is illustrated by
following figure.
6
5
4
3
2
1
0
0 1 2 3 4 5 6
Fig. 2.2: - Pixel positions referenced by scan-line number and column number.
To load the specified color into the frame buffer at a particular position, we will assume we have
available low-level procedure of the form 𝑠𝑒𝑡𝑝𝑖𝑥𝑒𝑙(𝑥, 𝑦).
Unit-3 – Graphics Primitives
Similarly for retrieve the current frame buffer intensity we assume to have procedure 𝑔𝑒𝑡𝑝𝑖𝑥𝑒𝑙(𝑥, 𝑦).
Y2
y1
X1 X2
DDA Algorithm
Digital differential analyzer (DDA) is scan conversion line drawing algorithm based on calculating either
∆𝑦 or ∆𝑥 using above equation.
We sample the line at unit intervals in one coordinate and find corresponding integer values nearest the
line path for the other coordinate.
Consider first a line with positive slope and slope is less than or equal to 1:
We sample at unit x interval (∆𝑥 = 1) and calculate each successive y value as follow:
𝑦= 𝑚 ∗ 𝑥 + 𝑏
𝑦𝑘 = 𝑚 ∗ (𝑥 + 1) + 𝑏
In general 𝑦𝑘 = 𝑚 ∗ (𝑥 + 𝑘) + 𝑏 , &
𝑦𝑘+1 = 𝑚 ∗ (𝑥 + 𝑘 + 1) + 𝑏
Now write this equation in form:
𝑦𝑘+1 − 𝑦𝑘 = (𝑚 ∗ (𝑥 + 𝑘 + 1) + 𝑏) – (𝑚 ∗ (𝑥 + 𝑘) + 𝑏)
𝑦𝑘+1 = 𝑦𝑘 + 𝑚
So that it is computed fast in computer as addition is fast compare to multiplication.
Unit-3 – Graphics Primitives
In above equation 𝑘 takes integer values starting from 1 and increase by 1 until the final endpoint is
reached.
As 𝑚 can be any real number between 0 and 1, the calculated 𝑦 values must be rounded to the nearest
integer.
Consider a case for a line with a positive slope greater than 1:
We change the role of 𝑥 and 𝑦 that is sample at unit 𝑦 intervals (∆𝑦 = 1) and calculate each succeeding
𝑥 value as:
𝑥 = (𝑦 − 𝑏)/𝑚
𝑥1 = ((𝑦 + 1) − 𝑏)/𝑚
In general 𝑥𝑘 = ((𝑦 + 𝑘) − 𝑏)/𝑚, &
𝑥𝑘+1 = ((𝑦 + 𝑘 + 1) − 𝑏)/𝑚
Now write this equation in form:
𝑥𝑘+1 − 𝑥𝑘 = (((𝑦 + 𝑘 + 1) − 𝑏)/𝑚) – (((𝑦 + 𝑘) − 𝑏)/𝑚)
𝑥𝑘+1 = 𝑥𝑘 + 1/𝑚
Above both equations are based on the assumption that lines are to be processed from left endpoint to the
right endpoint.
If we processed line from right endpoint to left endpoint than:
If ∆𝑥 = −1 equation become:
𝑦𝑘+1 = 𝑦𝑘 – 𝑚
If ∆𝑦 = −1 equation become:
𝑥𝑘+1 = 𝑥𝑘 − 1/𝑚
Above calculated equations also used to calculate pixel position along a line with negative slope.
Procedure for DDA line algorithm.
Void lineDDA (int xa, int ya, int xb, int yb)
{
int dx = xb – xa, dy = yb – ya, steps, k;
float xincrement, yincrement, x = xa, y =
ya; if (abs(dx)>abs(dy))
{
Steps = abs (dx);
}
else
{
Steps = abs (dy);
}
xincrement = dx/(float) steps;
yincrement = dy/(float) steps;
Specified
13
line path 50
1 Specified
2 49
line path
1
1 48
1
0 47
10 11 12 13 14 15 50 51 52 53 54 55
Fig. 2.4: - Section of a display screen where a Fig. 2.5: - Section of a display screen where a
straight line segment is to be plotted, starting negative slope line segment is to be plotted,
from the pixel at column 10 on scan line 11. starting from the pixel at column 50 on scan
line 50.
The vertical axes show scan-line positions and the horizontal axes identify pixel column.
Sampling at unit 𝑥 intervals in these examples, we need to decide which of two possible pixel position is
closer to the line path at each sample step.
To illustrate bresenham’s approach, we first consider the scan-conversion process for lines with positive
slope less than 1.
Pixel positions along a line path are then determined by sampling at unit 𝑥 intervals.
Starting from left endpoint (𝑥0, 𝑦0) of a given line, we step to each successive column and plot the pixel
whose scan-line 𝑦 values is closest to the line path.
Assuming we have determined that the pixel at (𝑥𝑘, 𝑦𝑘) is to be displayed, we next need to decide which
pixel to plot in column 𝑥𝑘 + 1.
Our choices are the pixels at positions (𝑥𝑘 + 1, 𝑦𝑘) and (𝑥𝑘 + 1, 𝑦𝑘 + 1).
Let’s see mathematical calculation used to decide which pixel position is light up.
We know that equation of line is:
𝑦 = 𝑚𝑥 + 𝑏
Now for position 𝑥𝑘 + 1.
𝑦 = 𝑚(𝑥𝑘 + 1) + 𝑏
Now calculate distance bet actual line’s 𝑦 value and lower pixel as 𝑑1 and distance bet actual line’s 𝑦
value and upper pixel as 𝑑2.
𝑑1 = 𝑦 − 𝑦 𝑘
Unit-3 – Graphics Primitives
d1 = m(xk + 1) + b − yk ......................................................................................................................... (1)
𝑑2 = (𝑦𝑘 + 1) − 𝑦
𝑑2 = (𝑦𝑘 + 1) − 𝑚(𝑥𝑘 + 1) −
𝑏..…………………………………………………………………………………………………………(2)
Now calculate 𝑑1 − 𝑑2 from equation (1) and (2).
𝑑1 − 𝑑2 = (𝑦 – 𝑦𝑘) – ((𝑦𝑘 + 1) – 𝑦)
𝑑1 − 𝑑2 = {𝑚(𝑥𝑘 + 1) + 𝑏 − 𝑦𝑘} − {(𝑦𝑘 + 1) − 𝑚(𝑥𝑘 + 1) − 𝑏}
𝑑1 − 𝑑2 = {𝑚𝑥𝑘 + 𝑚 + 𝑏 − 𝑦𝑘} − {𝑦𝑘 + 1 − 𝑚𝑥𝑘 − 𝑚 − 𝑏}
𝑑1 − 𝑑2 = 2𝑚(𝑥𝑘 + 1) − 2𝑦𝑘 + 2𝑏 −
1……………………………………………………………………………….……………..(3)
Now substitute 𝑚 = ∆𝑦/∆𝑥 in equation (3)
𝑑1 − 𝑑2 = 2 (∆𝑦) (𝑥𝑘 + 1) − 2𝑦𝑘 + 2𝑏 − 1
∆𝑥
….………………………………….………………………………………………….(4)
Now we have decision parameter 𝑝𝑘 for 𝑘𝑡ℎ step in the line algorithm is given by:
𝑝𝑘 = ∆𝑥(𝑑1 − 𝑑2)
𝑝𝑘 = ∆𝑥(2∆𝑦/∆𝑥(𝑥𝑘 + 1) – 2𝑦𝑘 + 2𝑏 – 1)
𝑝𝑘 = 2∆𝑦𝑥𝑘 + 2∆𝑦 − 2∆𝑥𝑦𝑘 + 2∆𝑥𝑏 − ∆𝑥
𝑝𝑘 = 2∆𝑦𝑥𝑘 − 2∆𝑥𝑦𝑘 + 2∆𝑦 + 2∆𝑥𝑏 − ∆𝑥
……………………………………………………….………………………(5)
𝑝𝑘 = 2∆𝑦𝑥𝑘 − 2∆𝑥𝑦𝑘 + 𝐶 (𝑊ℎ𝑒𝑟𝑒 𝐶𝑜𝑛𝑠𝑡𝑎𝑛𝑡 𝐶 = 2∆𝑦 + 2∆𝑥𝑏 − ∆𝑥) ........................................... (6)
The sign of 𝑝𝑘 is the same as the sign of 𝑑1 − 𝑑2, since ∆𝑥 > 0 for our example.
Parameter 𝑐 is constant which is independent of pixel position and will eliminate in the recursive
calculation for 𝑝𝑘.
Now if 𝑝𝑘 is negative then we plot the lower pixel otherwise we plot the upper pixel.
So successive decision parameters using incremental integer calculation as:
𝑝𝑘+1 = 2∆𝑦𝑥𝑘+1 − 2∆𝑥𝑦𝑘+1 + C
Now Subtract 𝑝𝑘 from 𝑝𝑘+1
𝑝𝑘+1 − 𝑝𝑘 = 2∆𝑦(𝑥𝑘+1 − 𝑥𝑘) -2∆𝑥(𝑦𝑘+1 − 𝑦𝑘)
𝑝𝑘+1 − 𝑝𝑘 = 2∆𝑦𝑥𝑘+1 − 2∆𝑥𝑦𝑘+1 + 𝐶 − 2∆𝑦𝑥𝑘 + 2∆𝑥𝑦𝑘 − 𝐶
But 𝑥𝑘+1 = 𝑥𝑘 + 1, so that (𝑥𝑘+1 − 𝑥𝑘) = 1
𝑝𝑘+1 = 𝑝𝑘 + 2∆𝑦 − 2∆𝑥(𝑦𝑘+1 − 𝑦𝑘)
Where the terms 𝑦𝑘+1 − 𝑦𝑘 is either 0 or 1, depends on the sign of parameter 𝑝𝑘.
This recursive calculation of decision parameters is performed at each integer 𝑥 position starting at the
left coordinate endpoint of the line.
The first decision parameter 𝑝0 is calculated using equation (5) as first time we need to take constant
part into account so:
𝑝𝑘 = 2∆𝑦𝑥𝑘 − 2∆𝑥𝑦𝑘 + 2∆𝑦 + 2∆𝑥𝑏 − ∆𝑥
𝑝0 = 2∆𝑦𝑥0 − 2∆𝑥𝑦0 + 2∆𝑦 + 2∆𝑥𝑏 − ∆𝑥
Now 𝑆𝑢𝑏𝑠𝑡𝑖𝑡𝑢𝑡𝑒 𝑏 = 𝑦0 – 𝑚𝑥0
𝑝0 = 2∆𝑦𝑥0 − 2∆𝑥𝑦0 + 2∆𝑦 + 2∆𝑥(𝑦0 − 𝑚𝑥0) − ∆𝑥
Now Substitute 𝑚 = ∆𝑦/𝛥𝑥
𝑝0 = 2∆𝑦𝑥0 − 2∆𝑥𝑦0 + 2∆𝑦 + 2∆𝑥(𝑦0 − (∆𝑦/∆𝑥)𝑥0) − ∆x
𝑝0 = 2∆𝑦𝑥0 − 2∆𝑥𝑦0 + 2∆𝑦 + 2∆𝑥𝑦0 − 2∆𝑦𝑥0 − ∆𝑥
𝑝0 = 2∆𝑦 − ∆𝑥
Let’s see Bresenham’s line drawing algorithm for |𝑚| < 1
1. Input the two line endpoints and store the left endpoint in (𝑥0, 𝑦0).
2. Load (𝑥0, 𝑦0) into the frame buffer; that is, plot the first point.
3. Calculate constants ∆𝑥, ∆𝑦, 2∆𝑦, and 2∆𝑦 − 2∆𝑥, and obtain the starting value for the decision
Unit-3 – Graphics Primitives
parameter as
𝑝0 = 2∆𝑦 − ∆𝑥
4. At each 𝑥𝑘 along the line, starting at 𝑘 = 0, perform the following test: If
𝑝𝑘 < 0, the next point to plot is (𝑥𝑘 + 1, 𝑦𝑘) and
𝑝𝑘+1 = 𝑝𝑘 + 2∆𝑦
Otherwise, the next point to plot is (𝑥𝑘 + 1, 𝑦𝑘 + 1) and
𝑝𝑘+1 = 𝑝𝑘 + 2∆𝑦 − 2∆𝑥
5. Repeat step-4 ∆𝑥 times.
Bresenham’s algorithm is generalized to lines with arbitrary slope by considering symmetry between the
various octants and quadrants of the 𝑥𝑦 plane.
For lines with positive slope greater than 1 we interchange the roles of the 𝑥 and 𝑦 directions.
Also we can revise algorithm to draw line from right endpoint to left endpoint, both 𝑥 and 𝑦 decrease as
we step from right to left.
When 𝑑1 − 𝑑2 = 0 we choose either lower or upper pixel but once we choose lower than for all such case
for that line choose lower and if we choose upper the for all such case choose upper.
For the negative slope the procedure are similar except that now one coordinate decreases as the other
increases.
The special case handle separately. Horizontal line (∆𝑦 = 0), vertical line (∆𝑥 = 0) and diagonal line with
|∆𝑥| = |∆𝑦| each can be loaded directly into the frame buffer without processing them through the line
plotting algorithm.
Circle
Yc
Xc
Fig. 2.7: - Circle with center coordinates (𝑥𝑐, 𝑦𝑐) and radius 𝑟.
A circle is defined as the set of points that are all at a given distance r from a center position say (𝑥𝑐, 𝑦𝑐).
Properties of Circle
The distance relationship is expressed by the Pythagorean theorem in Cartesian coordinates as:
(𝑥 − 𝑥𝑐)2 + (𝑦 − 𝑦𝑐)2 = 𝑟2
We could use this equation to calculate circular boundary points by incrementing 1 in 𝑥 direction in
every steps from 𝑥𝑐 – 𝑟 to 𝑥𝑐 + 𝑟 and calculate corresponding 𝑦 values at each position as:
(𝑥 − 𝑥𝑐)2 + (𝑦 − 𝑦𝑐)2 = 𝑟2
(𝑦 − 𝑦𝑐)2 = 𝑟2 − (𝑥 − 𝑥𝑐)2
(𝑦 − 𝑦𝑐) = ±√𝑟2 − (𝑥𝑐 − 𝑥)2
Fig. 2.8: - Positive half of circle showing non uniform spacing bet calculated pixel positions.
We can adjust spacing by stepping through 𝑦 values and calculating 𝑥 values whenever the absolute
value of the slop of the circle is greater than 1. But it will increases computation processing requirement.
Another way to eliminate the non-uniform spacing is to draw circle using polar coordinates ‘𝑟’ and ‘ ’.
Calculating circle boundary using polar equation is given by pair of equations which is as follows.
𝑥 = 𝑥𝑐 + 𝑟 cos
𝑦 = 𝑦𝑐 + 𝑟 sin
When display is produce using these equations using fixed angular step size circle is plotted with uniform
spacing.
The step size ‘ ’ is chosen according to application and display device.
For a more continuous boundary on a raster display we can set the step size at 1/𝑟. This plot pixel position
that are approximately one unit apart.
Computation can be reduced by considering symmetry city property of circles. The shape of circle is
similar in each quadrant.
We can obtain pixel position in second quadrant from first quadrant using reflection about 𝑦 axis and
similarly for third and fourth quadrant from second and first respectively using reflection about 𝑥 axis.
We can take one step further and note that there is also symmetry between octants. Circle sections in
adjacent octant within one quadrant are symmetric with respect to the 450 line dividing the two octants.
This symmetry condition is shown in figure below where point (𝑥, 𝑦) on one circle sector is mapped in
other seven sector of circle.
(-Y, X) (Y, X)
45O
(-X, Y)
(X, Y)
Fig. 2.17: - Interior pixels along a scan line passing through a polygon area.
For each scan-line crossing a polygon, the algorithm locates the intersection points are of scan line with
the polygon edges.
This intersection points are stored from left to right.
Frame buffer positions between each pair of intersection point are set to specified fill color.
Some scan line intersects at vertex position they are required special handling.
For vertex we must look at the other endpoints of the two line segments of the polygon which meet at
this vertex.
If these points lie on the same (up or down) side of the scan line, then that point is counts as two
intersection points.
If they lie on opposite sides of the scan line, then the point is counted as single intersection.
This is illustrated in figure below
Fig. 2.18: - Intersection points along the scan line that intersect polygon vertices.
As shown in the Fig. 2.18, each scan line intersects the vertex or vertices of the polygon. For scan line 1,
the other end points (B and D) of the two line segments of the polygon lie on the same side of the scan
Unit-3 – Graphics Primitives
line, hence there are two intersections resulting two pairs: 1 -2 and 3 - 4. Intersections points 2 and 3 are
actually same Points. For scan line 2 the other endpoints (D and F) of the two line segments of the
Polygon lie on the opposite sides of the scan line, hence there is a single intersection resulting two pairs: l
- 2 and 3 - 4. For scan line 3, two vertices are the intersection points"
For vertex F the other end points E and G of the two line segments of the polygon lie on the same side of
the scan line whereas for vertex H, the other endpoints G and I of the two line segments of the polygon lie
on the opposite side of the scan line. Therefore, at vertex F there are two intersections and at vertex H
there is only one intersection. This results two pairs: 1 - 2 and 3 - 4 and points 2 and 3 are actually same
points.
Coherence methods often involve 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.
Figure below shows three successive scan-lines crossing the left edge of polygon.
Decerement 0
4
Decerement 1
5
Decerement 2
6
3
Y0 0 Y0
X0 X0
∆𝑥
Fig. 2.19: - line with slope 7/3 and its integer calculation using equation 𝑥𝑘+1 = 𝑥𝑘 + ∆𝑦.
Steps for above procedure
1. Suppose m = 7/3
2. Initially, set counter to 0, and increment to 3 (which is 𝛥𝑥).
3. When move to next scan line, increment counter by adding ∆𝑥
4. When counter is equal or greater than 7 (which is 𝛥𝑦), increment the x-intercept (in other words, the 𝑥-
intercept for this scan line is one more than the previous scan line), and decrement counter by 7(which is
∆𝑦).
To efficiently perform a polygon fill, we can first store the polygon boundary in a sorted edge table that
contains all the information necessary to process the scan lines efficiently.
We use bucket sort to store the edge sorted on the smallest 𝑦 value of each edge in the correct scan line
positions.
Only the non-horizontal edges are entered into the sorted edge table.
Figure below shows one example of storing edge table.
Unit-3 – Graphics Primitives
Scan-
Line
Number
Yc Yb Xc 1/mcb
B
Yd Yc Xd 1/mdb Ye Xd 1/mde
C Scan Line Yc
Ya Yb Xc 1/mcb Yb Xa 1/mab
C’ E .
Scan Line .
Yd
.
1
Scan Line Ya D
0
A
Inside-Outside Tests
In area filling and other graphics operation often required to find particular point is inside or outside the
polygon.
For finding which region is inside or which region is outside most graphics package use either odd even
rule or the nonzero winding number rule.
Fig. 2.21: - Identifying interior and exterior region for a self-intersecting polygon.
Seed
(a) 2
1
2
1
3
(b)
1
3
5 6 6
4 5
(c)
1
4
1
Unit-3 – Graphics Primitives
4
(d) 5
1
4
Fig. 2.24: - Boundary fill across pixel spans for a 4-connected area.
Flood-Fill Algorithm
Sometimes it is required to fill in an area that is not defined within a single color boundary.
In such cases we can fill areas by replacing a specified interior color instead of searching for a boundary
color.
This approach is called a flood-fill algorithm. Like boundary fill algorithm, here we start with some seed
and examine the neighbouring pixels.
However, here pixels are checked for a specified interior color instead of boundary color and they are
replaced by new color.
Using either a 4-connected or 8-connected approach, we can step through pixel positions until all interior
point have been filled.
The following procedure illustrates the recursive method for filling 4-connected region using flood-fill
algorithm.
Procedure :
flood-fill4(x, y, new-color, old-color)
{
if(getpixel (x,y) = = old-color)
{
putpixel (x, y, new-color)
flood-fill4 (x + 1, y, new-color, old -
color); flood-fill4 (x, y + 1, new -color,
old -color); flood-fill4 (x - 1, y, new -
color, old -color); flood-fill4 (x, y - l, new
-color, old-color);
}
}
Note: 'getpixel' function gives the color of .specified pixel and 'putpixel' function draws the pixel with
specified color.
Unit-4 – 2D Transformation & Viewing
Transformation
Changing Position, shape, size, or orientation of an object on display is known as transformation.
Basic Transformation
Basic transformation includes three transformations Translation, Rotation, and Scaling.
These three transformations are known as basic transformation because with combination of these
three transformations we can obtain any transformation.
Translation
(𝒙′, 𝒚′)
𝒕𝒚
(𝒙, 𝒚)
𝒕𝒙
Rotation
It is a transformation that used to reposition the object along the circular path in the XY - plane.
To generate a rotation we specify a rotation angle 𝜽 and the position of the Rotation Point (Pivot
Point) (𝒙𝒓,𝒚𝒓) about which the object is to be rotated.
Positive value of rotation angle defines counter clockwise rotation and negative value of rotation angle
defines clockwise rotation.
We first find the equation of rotation when pivot point is at coordinate origin(𝟎, 𝟎).
(𝒙′, 𝒚′)
(𝒙, 𝒚)
𝜽
(𝒙′, 𝒚′)
(𝒙, 𝒚)
𝜽
∅
(𝒙𝒓, 𝒚𝒓)
Scaling
Fixed Point
𝑷′ = 𝑻(𝒕 𝑷
,𝒕
𝒙 𝒚)∙
𝒙′ 𝟏 𝟎 𝒕𝒙 𝒙
[𝒚′] = [𝟎 𝟏 𝒕𝒚] [𝒚]
𝟏 𝟎 𝟎 𝟏 𝟏
NOTE: - Inverse of translation matrix is obtain by putting −𝒕𝒙 & − 𝒕𝒚 instead of 𝒕𝒙 & 𝒕𝒚.
Rotation
𝑷 ′ = 𝑹 (𝜽 ) ∙ 𝑷
𝒙′ 𝐜𝐨𝐬 𝜽 − 𝐬𝐢𝐧 𝜽 𝟎 𝒙
′
[𝒚 ] = [𝐬𝐢𝐧 𝜽 𝐜𝐨𝐬 𝜽 𝟎] [𝒚]
𝟏 𝟎 𝟎 𝟏 𝟏
NOTE: - Inverse of rotation matrix is obtained by replacing 𝜽 by −𝜽.
Scaling
𝑷′ = 𝑺(𝒔𝒙,𝒔𝒚) ∙ 𝑷
Unit-4 – 2D Transformation & Viewing
𝒙′ 𝒔𝒙 𝟎 𝟎 𝒙
[𝒚′] = [ 𝟎 𝒔𝒚 𝟎] [𝒚]
𝟏 𝟎 𝟎 𝟏 𝟏
& 𝟏 respectively.
NOTE: - Inverse of scaling matrix is obtained by replacing 𝒔𝒙 & 𝒔𝒚 by 𝟏
𝒙 𝒔 𝒔𝒚
Composite Transformation
We can set up a matrix for any sequence of transformations as a composite transformation matrix by
calculating the matrix product of individual transformation.
For column matrix representation of coordinate positions, we form composite transformations by
multiplying matrices in order from right to left.
Translations
Two successive translations are performed as:
𝑷′ = 𝑻(𝒕𝒙𝟐, 𝒕𝒚𝟐) ∙ {𝑻(𝒕𝒙𝟏, 𝒕𝒚𝟏) ∙ 𝑷}
𝑷′ = {𝑻(𝒕𝒙𝟐, 𝒕𝒚𝟐) ∙ 𝑻(𝒕𝒙𝟏, 𝒕𝒚𝟏)} ∙ 𝑷
𝟏 𝟎 𝒕𝒙𝟐 𝟏 𝟎 𝒕𝒙𝟏
𝑷′ = [𝟎 𝟏 𝒕𝒚𝟐] [𝟎 𝟏 𝒕𝒚𝟏] ∙ 𝑷
𝟎 𝟎 𝟏 𝟎 𝟎 𝟏
𝟏 𝟎 𝒕𝒙𝟏 + 𝒕𝒙𝟐
𝑷′ = [𝟎 𝟏 𝒕𝒚𝟏 + 𝒕𝒚𝟐] ∙ 𝑷
𝟎 𝟎 𝟏
𝑷′ = 𝑻(𝒕𝒙𝟏 + 𝒕𝒙𝟐, 𝒕𝒚𝟏 + 𝒕𝒚𝟐) ∙ 𝑷}
Here 𝑷′ and 𝑷 are column vector of final and initial point coordinate respectively.
This concept can be extended for any number of successive translations.
Example: Obtain the final coordinates after two translations on point 𝑝(2,3) with translation vector
(4, 3) and (−1, 2) respectively.
1 0 𝑡𝑥1 + 𝑡𝑥 2 1 0 4 + (−1) 2
𝑃′ = [0 1 𝑡𝑦1 + 𝑡𝑦2] ∙ 𝑃 = [0 1 3 + 2 ] ∙ [3]
0 0 1 0 0 1 1
1 0 3 2 5
′
𝑃 = [0 1 5] ∙ [3] = [8]
0 0 1 1 1
Rotations
Two successive Rotations are performed as:
𝑷′ = 𝑹(𝜽𝟐) ∙ {𝑹(𝜽𝟏) ∙ 𝑷}
𝑷′ = {𝑹(𝜽𝟐) ∙ 𝑹(𝜽𝟏)} ∙ 𝑷
𝐜𝐨𝐬 𝜽𝟐 − 𝐬𝐢𝐧 𝜽𝟐 𝟎 𝐜𝐨𝐬 𝜽𝟏 −𝐬𝐢𝐧 𝜽𝟏 𝟎
𝑷′ = [𝐬𝐢𝐧 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟐 𝟎] [𝐬𝐢𝐧 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟏 𝟎] ∙ 𝑷
𝟎 𝟎 𝟏 𝟎 𝟎 𝟏
𝐜𝐨𝐬 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 − 𝐬𝐢𝐧 𝜽𝟐 𝐬𝐢𝐧 𝜽𝟏 − 𝐬𝐢𝐧 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟐 − 𝐬𝐢𝐧 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 𝟎
𝑷′ = [𝐬𝐢𝐧 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟐 + 𝐬𝐢𝐧 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 − 𝐬𝐢𝐧 𝜽𝟐 𝐬𝐢𝐧 𝜽𝟏 𝟎] ∙ 𝑷
𝟎 𝟎 𝟏
Unit-4 – 2D Transformation & Viewing
𝐜𝐨𝐬(𝜽𝟏 + 𝜽𝟐) −𝐬𝐢𝐧(𝜽𝟏 + 𝜽𝟐) 𝟎
𝑷′ = [𝐬𝐢𝐧(𝜽𝟏 + 𝜽𝟐) 𝐜𝐨𝐬(𝜽𝟏 + 𝜽𝟐) 𝟎] ∙ 𝑷
𝟎 𝟎 𝟏
𝑷′ = 𝑹(𝜽𝟏 + 𝜽𝟐) ∙ 𝑷
Here 𝑷′ and 𝑷 are column vector of final and initial point coordinate respectively.
This concept can be extended for any number of successive rotations.
Example: Obtain the final coordinates after two rotations on point 𝑝(6,9) with rotation angles are 30𝑜 and
60𝑜 respectively.
𝑃′ = 𝑅(𝜃1 + 𝜃2) ∙ 𝑃
𝑐𝑜𝑠(𝜃1 + 𝜃2) −𝑠𝑖𝑛(𝜃1 + 𝜃2) 0
𝑃′ = [𝑠𝑖𝑛(𝜃1 + 𝜃2) 𝑐𝑜𝑠(𝜃1 + 𝜃2) 0] ∙ 𝑃
0
0 1
𝑐𝑜𝑠(30 + 60) −𝑠𝑖𝑛(30 + 60) 0
𝑃′ = [𝑠𝑖𝑛(30 + 60) 𝑐𝑜𝑠(30 + 60) 0] ∙ 𝑃
0
0 1
0 −1 0 6 −9
𝑃′ = [1 0 0] ∙ [9] = [ 6 ]
0 0 1 1 1
Final Coordinates after rotations are 𝑝,(−9, 6).
Scaling
Two successive scaling are performed as:
𝑷′ = 𝑺(𝒔𝒙𝟐, 𝒔𝒚𝟐) ∙ {𝑺(𝒔𝒙𝟏, 𝒔𝒚𝟏) ∙ 𝑷}
𝑷′ = {𝑺(𝒔𝒙𝟐, 𝒔𝒚𝟐) ∙ 𝑺(𝒔𝒙𝟏, 𝒔𝒚𝟏)} ∙ 𝑷
𝒔𝒙𝟐 𝟎 𝟎 𝒔𝒙𝟏 𝟎 𝟎
′
𝑷 =[ 𝟎 𝒔𝒚𝟐 𝟎] [ 𝟎 𝒔𝒚𝟏 𝟎] ∙ 𝑷
𝟎 𝟎 𝟏 𝟎 𝟎 𝟏
𝒔𝒙𝟏 ∙ 𝒔𝒙𝟐 𝟎 𝟎
𝑷′ = [ 𝟎 𝒔𝒚𝟏 ∙ 𝒔𝒚𝟐 𝟎] ∙ 𝑷
𝟎 𝟎 𝟏
′
𝑷 = 𝑺(𝒔𝒙𝟏 ∙ 𝒔𝒙𝟐, 𝒔𝒚𝟏 ∙ 𝒔𝒚𝟐) ∙ 𝑷
Here 𝑷′ and 𝑷 are column vector of final and initial point coordinate respectively.
This concept can be extended for any number of successive scaling.
Example: Obtain the final coordinates after two scaling on line 𝑝𝑞 [𝑝(2,2), 𝑞(8, 8)] with scaling factors are
(2, 2) and (3, 3) respectively.
𝑠 𝑥1 ∙ 𝑠 𝑥 2 0 0 2∙3 0 0
′
𝑃 =[ 0 𝑠𝑦1 ∙ 𝑠𝑦2 0] ∙ 𝑃 = [ 0 2∙3 0] ∙ 𝑃
0 0 1 0 0 1
6 0 0 2 8 12 48
′
𝑃 = [0 6 0] ∙ [2 8] = [12 48]
0 0 1 1 1 1 1
Final Coordinates after rotations are 𝑝,(12, 12) and 𝑞,(48, 48).
(c) (d)
(a) (b) Scale Object Translate Object so that
Original Translate Object so with Respect to Fixed Point is Return to
Position of that Fixed Point Origin Position (𝒙𝒇, 𝒚𝒇) .
Object and (𝒙𝒇, 𝒚𝒇) is at Origin
Fixed Point
𝒔𝟏
Fig. 3.1: - A viewing transformation using standard rectangles for the window and viewport.
Now we see steps involved in viewing pipeline.
Fig. 3.3: - A viewing-coordinate frame is moved into coincidence with the world frame in two steps: (a)
translate the viewing origin to the world origin, and then (b) rotate to align the axes of the two systems.
We can obtain reference frame in any direction and at any position.
For handling such condition first of all we translate reference frame origin to standard reference frame
origin and then we rotate it to align it to standard axis.
In this way we can adjust window in any reference frame.
this is illustrate by following transformation matrix:
Unit-4 – 2D Transformation & Viewing
𝐌𝐰𝐜,𝐯𝐜 = 𝐑𝐓
Where T is translation matrix and R is rotation matrix.
Window-To-Viewport Coordinate Transformation
Mapping of window coordinate to viewport is called window to viewport transformation.
We do this using transformation that maintains relative position of window coordinate into viewport.
That means center coordinates in window must be remains at center position in viewport.
We find relative position by equation as follow:
𝐱𝐯 − 𝐱𝐯𝐦𝐢𝐧 𝐱 − 𝐱𝐰𝐦𝐢𝐧
= 𝐰
𝐱𝐯𝐦𝐚𝐱 − 𝐱𝐯𝐦𝐢𝐧 𝐱𝐰𝐦𝐚𝐱 − 𝐱𝐰𝐦𝐢𝐧
𝐲𝐯 − 𝐲𝐯𝐦𝐢𝐧 𝐲 − 𝐲𝐰𝐦𝐢𝐧
= 𝐰
𝐲𝐯𝐦𝐚𝐱 − 𝐲𝐯𝐦𝐢𝐧 𝐲𝐰𝐦𝐚𝐱 − 𝐲𝐰𝐦𝐢𝐧
Solving by making viewport position as subject we obtain:
𝐱𝐯 = 𝐱𝐯𝐦𝐢𝐧 + (𝐱𝐰 − 𝐱𝐰𝐦𝐢𝐧)𝐬𝐱
𝐲𝐯 = 𝐲𝐯𝐦𝐢𝐧 + (𝐲𝐰 − 𝐲𝐰𝐦𝐢𝐧)𝐬𝐲
Where scaling factor are :
𝐱 −𝐱
𝐬𝐱 = 𝐱 𝐯𝐦𝐚𝐱 − 𝐱𝐯𝐦𝐢𝐧
𝐰𝐦𝐚𝐱 𝐰𝐦𝐢𝐧
𝐲𝐯𝐦𝐚𝐱 − 𝐲𝐯𝐦𝐢𝐧
𝐬𝐲 =
𝐲𝐰𝐦𝐚𝐱 − 𝐲𝐰𝐦𝐢𝐧
We can also map window to viewport with the set of transformation, which include following sequence of
transformations:
1. Perform a scaling transformation using a fixed-point 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.
For maintaining relative proportions we take (sx = sy). in case if both are not equal then we get stretched or
contracted in either the x or y direction when displayed on the output device.
Characters are handle in two different way one way is simply maintain relative position like other
primitive and other is to maintain standard character size even though viewport size is enlarged or reduce.
Number of display device can be used in application and for each we can use different window-to-
viewport transformation. This mapping is called the workstation transformation.
P9
Window Window
P4 P10
P2 P2
P8
P1 P1
P5 P5 P8
P3 P6 P6
P7
P7
Before After
Clipping Clipping (b)
(a)
Fig. 3.5: - Line clipping against a rectangular window.
Unit-4 – 2D Transformation & Viewing
Line which is completely inside is display completely. Line which is completely outside is eliminated
from display. And for partially inside line we need to calculate intersection with window boundary and
find which part is inside the clipping boundary and which part is eliminated.
For line clipping several scientists tried different methods to solve this clipping procedure. Some of them
are discuss below.
Cohen-Sutherland Line Clipping
This is one of the oldest and most popular line-clipping procedures.
Algorithm
Step-1:
Assign region code to both endpoint of a line depending on the position where the line endpoint is located.
Step-2:
If both endpoint have code ‘0000’
Then line is completely inside.
Otherwise
Perform logical ending between this two codes.
Step-3:
Draw line segment which are completely inside and eliminate other line segment which found completely
outside.
Algorithm
1. Read two end points of line 𝑃1(𝑥1, 𝑦1) and 𝑃2(𝑥2, 𝑦2)
2. Read two corner vertices, left top and right bottom of window: (𝑥𝑤𝑚𝑖𝑛, 𝑦𝑤𝑚𝑎𝑥) and (𝑥𝑤𝑚𝑎𝑥, 𝑦𝑤𝑚𝑖𝑛)
3. Calculate values of parameters 𝑝𝑘 and 𝑞𝑘 for 𝑘 = 1, 2, 3, 4 such that,
𝑝1 = −∆𝑥, 𝑞1 = 𝑥1 − 𝑥𝑤𝑚𝑖𝑛
𝑝2 = ∆𝑥, 𝑞2 = 𝑥𝑤𝑚𝑎𝑥 − 𝑥1
𝑝3 = −∆𝑦, 𝑞3 = 𝑦1 − 𝑦𝑤𝑚𝑖𝑛
𝑝4 = ∆𝑦, 𝑞4 = 𝑦𝑤𝑚𝑎𝑥 − 𝑦1
4. If 𝑝𝑘 = 0 for any value of 𝑘 = 1, 2, 3, 4 then,
Line is parallel to 𝑘𝑡ℎ boundary.
Advantages
1. More efficient.
2. Only requires one division to update 𝑢1 and 𝑢2.
3. Window intersections of line are calculated just once.
Nicholl-Lee-Nicholl Line Clipping
By creating more regions around the clip window the NLN algorithm avoids multiple clipping of
an individual line segment.
In Cohen-Sutherlan line clipping sometimes multiple calculation of intersection point of a line is done
before actual window boundary intersection or line is completely rejected.
These multiple intersection calculation is avoided in NLN line clipping procedure.
NLN line clipping perform the fewer comparisons and divisions so it is more efficient.
But NLN line clipping cannot be extended for three dimensions while Cohen-Sutherland and Liang-
Barskyalgorithm can be easily extended for three dimensions.
For given line we find first point falls in which region out of nine region shown in figure below but three
region shown in figure by putting point are only considered and if point falls in other region than we
transfer that point in one of the three region.
P1
P
P1 1
P1 in P1 in Edge P1 in Corner
Window Region (b) Region (c)
(a)
Fig. 3.7: - Three possible position for a line endpoint p1 in the NLN line-clipping algorithm.
We can also extend this procedure for all nine regions.
Now for p1 is inside the window we divide whole area in following region:
Unit-4 – 2D Transformation & Viewing
Fig. 3.10: - Two possible sets of clipping region when p1 is in corner region.
Regions are name in such a way that name in which region p2 falls is gives the window edge which
intersects the line.
For example region LT says that line need to clip at left and top boundary.
For finding that in which region line 𝒑𝟏𝒑𝟐 falls we compare the slope of the line to the slope of the
boundaries:
𝒔𝒍𝒐𝒑𝒆 𝒑𝟏𝒑𝑩𝟏 < 𝒔𝒍𝒐𝒑𝒆 𝒑𝟏𝒑𝟐 < 𝑠𝑙𝑜𝑝𝑒 𝒑𝟏𝒑𝑩𝟐
Where 𝒑𝟏𝒑𝑩𝟏 and 𝒑𝟏𝒑𝑩𝟐 are boundary lines.
For example p1 is in edge region and for checking whether p2 is in region LT we use following equation.
3D Translation
Similar to 2D translation, which used 3x3 matrices, 3D translation use 4X4 matrices (X, Y, Z, h).
In 3D translation point (X, Y, Z) is to be translated by amount tx, ty and tz to location (X', Y', Z').
𝒙, = 𝒙 + 𝒕𝒙
𝒚, = 𝒚 + 𝒕𝒚
𝒛, = 𝒛 + 𝒕𝒛
Let’s see matrix equation
𝑷′ = 𝑻 ∙ 𝑷
𝒙, 𝟏 𝟎 𝟎 𝒕𝒙 𝒙
𝒚′ 𝟎 𝟏 𝟎 𝒕𝒚 𝒚
[𝒛 , ] = [ ]∙
𝟎 𝟎 𝟏 𝒕𝒛 [𝒛]
𝟏 𝟎 𝟎 𝟎 𝟏 𝟏
Example : - Translate the given point P (10,10,10) into 3D space with translation factor T (10,20,5).
𝑃′ = 𝑇 ∙ 𝑃
𝑥, 1 0 0 𝑡𝑥 𝑥
𝑦′ 0 1 0 𝑡𝑦 𝑦
[𝑧, ] = [ ]∙
0 0 1 𝑡𝑧 [𝑧]
1 0 0 0 1 1
𝑥 ,
𝑦 ′ 1 0 0
0 1 0 20 10 10 10
[ ]=[ ]∙[ ]
𝑧, 0 0 1 5 10
1 0 0 0 1 1
𝑥, 20
𝑦′ 30
[𝑧, ] = [ ]
15
1 1
Final coordinate after translation is P, (20, 30, 15).
Rotation
For 3D rotation we need to pick an axis to rotate about.
The most common choices are the X-axis, the Y-axis, and the Z-axis
Unit-5 – 3D Transformation and Viewing
Coordinate-Axes Rotations
Y Y Y
X X X
Z Z Z
Z-Axis Rotation
Two dimension rotation equations can be easily convert into 3D Z-axis rotation equations.
Rotation about z axis we leave z coordinate unchanged.
𝒙, = 𝒙 𝐜𝐨𝐬 𝜽 − 𝒚 𝐬𝐢𝐧 𝜽
𝒚, = 𝒙 𝐬𝐢𝐧 𝜽 + 𝒚 𝐜𝐨𝐬 𝜽
𝒛, = 𝒛
Where Parameter 𝜽 specify rotation angle.
Matrix equation is written as:
𝑷′ = 𝑹𝒛(𝜽) ∙ 𝑷
𝒙, 𝐜𝐨𝐬 𝜽 − 𝐬𝐢𝐧 𝜽 𝟎 𝟎 𝒙
𝒚′ 𝐬𝐢𝐧 𝜽 𝐜𝐨𝐬 𝜽 𝟎 𝟎 𝒚
= ] ∙
𝒛, [ ] [ [𝒛]
𝟎 𝟎𝟏 𝟎
𝟏 𝟎 𝟎 𝟎 𝟏 𝟏
X-Axis Rotation
Transformation equation for x-axis is obtain from equation of z-axis rotation by replacing cyclically as
shown here
𝒙→𝒚→𝒛→𝒙
Rotation about x axis we leave x coordinate unchanged.
𝒚, = 𝒚 𝐜𝐨𝐬 𝜽 − 𝒛 𝐬𝐢𝐧 𝜽
𝒛, = 𝒚 𝐬𝐢𝐧 𝜽 + 𝒛 𝐜𝐨𝐬 𝜽
𝒙, = 𝒙
Where Parameter 𝜽 specify rotation angle.
Matrix equation is written as:
𝑷′ = 𝑹𝒙(𝜽) ∙ 𝑷
𝒙,′ 𝟏 𝟎 𝟎 𝟎 𝒙
𝒚 𝟎 𝐜𝐨𝐬 𝜽 − 𝐬𝐢𝐧 𝜽 𝟎 𝒚
, [ ]
=
[ ] ∙[ ]
𝒛 𝟎 𝐬𝐢𝐧 𝜽 𝐜𝐨𝐬 𝜽 𝟎 𝒛
𝟏 𝟎 𝟎 𝟎 𝟏 𝟏
General 3D Rotations when rotation axis is parallel to one of the standard axis
Three steps require to complete such rotation
1. Translate the object so that the rotation axis coincides with the parallel coordinate axis.
2. Perform the specified rotation about that axis.
3. Translate the object so that the rotation axis is moved back to its original position.
This can be represented in equation form as:
𝑷′ = 𝑻−𝟏 ∙ 𝑹(𝜽) ∙ 𝑻 ∙ 𝑷
Y
P2
P1
u’ u
α
X
uz
X
uz β u’’
Scaling
It is used to resize the object in 3D space.
We can apply uniform as well as non uniform scaling by selecting proper scaling factor.
Scaling in 3D is similar to scaling in 2D. Only one extra coordinate need to consider into it.
Scaling
X
Fixed Point
Other Transformations
Reflections
Reflection means mirror image produced when mirror is placed at require position.
When mirror is placed in XY-plane we obtain coordinates of image by just changing the sign of z
coordinate.
Transformation matrix for reflection about XY-plane is given below.
𝟏 𝟎 𝟎 𝟎
𝟎 𝟏 𝟎 𝟎
𝑹𝑭 = [ ]
𝒛
𝟎 𝟎 −𝟏 𝟎
𝟎 𝟎 𝟎 𝟏
Similarly Transformation matrix for reflection about YZ-plane is.
−𝟏 𝟎 𝟎 𝟎
𝟎 𝟏 𝟎 𝟎
𝑹𝑭 = [ ]
𝒙
𝟎 𝟎 𝟏 𝟎
𝟎 𝟎 𝟎 𝟏
Similarly Transformation matrix for reflection about XZ-plane is.
𝟏 𝟎 𝟎 𝟎
𝑹𝑭𝒚 = [ 𝟎 −𝟏 𝟎 𝟎]
𝟎 𝟎 𝟏 𝟎
𝟎 𝟎 𝟎 𝟏
Shears
Shearing transformation can be used to modify object shapes.
They are also useful in 3D viewing for obtaining general projection transformations.
Here we use shear parameter ‘a’ and ‘b’
Shear matrix for Z-axis is given below
𝟏 𝟎 𝒂 𝟎
𝟎 𝟏 𝒃 𝟎
𝑺𝑯 = [ ]
𝒛
𝟎 𝟎 𝟏 𝟎
𝟎 𝟎 𝟎 𝟏
Similarly Shear matrix for X-axis is.
𝟏 𝟎 𝟎 𝟎
𝒂 𝟏 𝟎 𝟎
𝑺𝑯 = [ ]
𝒙
𝒃 𝟎 𝟏 𝟎
𝟎 𝟎 𝟎 𝟏
Similarly Shear matrix for X-axis is.
𝟏 𝒂 𝟎 𝟎
𝟎 𝟏 𝟎 𝟎
𝑺𝑯 = [ ]
𝒚
𝟎 𝒃 𝟏 𝟎
𝟎 𝟎 𝟎 𝟏
Unit-5 – 3D Transformation and Viewing
Viewing Pipeline
Viewing Co-ordinates.
Generating a view of an object is similar to photographing the object.
We can take photograph from any side with any angle & orientation of camera.
Similarly we can specify viewing coordinate in ordinary direction.
Fig. 5.9: -A right handed viewing coordinate system, with axes Xv, Yv, and Zv, relative to a
world-coordinate scene.
Fig. 5.10: -Viewing scene from different direction with a fixed view-reference point.
Fig. 5.11: - Aligning a viewing system with the world-coordinate axes using a sequence of translate-rotate
transformations.
As shown in figure the steps of transformation
Unit-5 – 3D Transformation and Viewing
Consider view reference point in world coordinate system is at position (𝑥0, 𝑦0, 𝑧0)than for align view
reference point to world origin we perform translation with matrix:
1 0 0 −𝑥0
𝑇=[ 0 1 0 −𝑦0]
0 0 1 −𝑧0
0 0 0 1
Now we require rotation sequence up-to three coordinate axis rotations depending upon direction we
choose for N.
In general case N is at arbitrary direction then we can align it with word coordinate axes by rotation
sequence 𝑅𝑧 ∙ 𝑅𝑦 ∙ 𝑅𝑥.
Another method for generating the rotation transformation matrix is to calculate unit uvn vectors and
from the composite rotation matrix directly.
Here
𝑁
𝑛= = (𝑛1, 𝑛2 , 𝑛3)
|𝑁|
𝑉×𝑁
𝑢= = (𝑢1, 𝑢2 , 𝑢3)
|𝑉 × 𝑁|
𝑣 = 𝑛 × 𝑢 = (𝑣1, 𝑣2, 𝑣3)
This method also automatically adjusts the direction for u so that v is perpendicular to n.
Than composite rotation matrix for the viewing transformation is then:
𝑢1 𝑢2 𝑢3 0
𝑅 = [𝑣1 𝑣2 𝑣3 0]
𝑛1 𝑛2 𝑛3 0
0 0 0 1
This aligns u to Xw axis, v to Yw axis and n to Zw axis.
Finally composite matrix for world to viewing coordinate transformation is given by:
𝑀𝑤𝑐,𝑣𝑐 = 𝑅 ∙ 𝑇
This transformation is applied to object’s coordinate to transfer them to the viewing reference frame.
Projections
Once world-coordinate descriptions of the objects in a scene are converted to viewing coordinates, we
can project the three-dimensional objects onto the two-dimensional view plane.
Process of converting three-dimensional coordinates into two-dimensional scene is known as projection.
There are two projection methods namely.
1. Parallel Projection.
2. Perspective Projection.
Lets discuss each one.
Parallel Projections
View
Plane
P1
P1’
P2
P2’
View Plane
Projection Line
(X,Y,Z) Yv
(X,Y)
Xv
Zv
View Plane
Projection Line
(Xp, Yp)
(X,Y,Z)
αL
Φ
Xv
(X,Y)
Zv
Perspective Projection
View
Plane
P1
P1
’
Projection
P2 Reference
P2’
point
P=(x,y,z)
(xp,yp,zvp)
zvp zprp zv
View
Plan
e
𝒛𝒗𝒑(𝒛𝒑𝒓𝒑⁄𝒅𝒑) ∙ [𝒛]
[𝒛 ] = I𝟎 𝟎 − 𝒛𝒗𝒑⁄𝒅𝒑 l
𝒉 I l
𝒉 [𝟎 𝟎 − 𝟏⁄𝒅𝒑 𝒛𝒑𝒓𝒑⁄𝒅𝒑 ] 𝟏
In this representation, the homogeneous factor is.
𝒛𝒑𝒓𝒑 − 𝒛
𝒉= 𝒂𝒏𝒅
𝒅𝒑
𝒙𝒑 = 𝒙𝒉⁄𝒉 𝒂𝒏𝒅 𝒚𝒑 = 𝒚𝒉⁄𝒉
There are number of special cases for the perspective transformation equations.
If view plane is taken to be uv plane, then 𝒛𝒗𝒑 = 𝟎 and the projection coordinates are.
𝒛𝒑𝒓𝒑 𝟏
𝒙 = 𝒙( ) = 𝒙( )
𝒑 𝒛𝒑𝒓𝒑 − 𝒛 𝟏 − 𝒛⁄𝒛𝒑𝒓𝒑
𝒛𝒑𝒓𝒑 𝟏
𝒚 = 𝒚( ) = 𝒚( )
𝒑 𝒛𝒑𝒓𝒑 − 𝒛 𝟏 − 𝒛⁄𝒛𝒑𝒓𝒑
If we take projection reference point at origin than 𝒛𝒑𝒓𝒑 = 𝟎 and the projection coordinates are.
𝒛𝒗𝒑 𝟏
𝒙𝒑 = 𝒙 ( ) = 𝒙 ( )
𝒛 𝒛⁄𝒛𝒗𝒑
𝒛𝒗𝒑 𝟏
𝒚𝒑 = 𝒚 ( ) = 𝒚 ( )
𝒛 𝒛⁄𝒛𝒗𝒑
The vanishing point for any set of lines that are parallel to one of the principal axes of an object is referred
to as a principal vanishing point
We control the number of principal vanishing points (one, two, or three) with the orientation of the
projection plane, and perspective projections are accordingly classified as one-point, two-point, or three-
point projections.
The number of principal vanishing points in a projection is determined by the number of principal axes
intersecting the view plane.
Unit-5 – 3D Transformation and Viewing