CG Study Material Graphics-40-65
CG Study Material Graphics-40-65
Using this equation we can perform integer evaluation of 𝑥 intercept by initializing a counter to 0, then
incrementing counter by the value of ∆𝑥 each time we move up to a new scan line.
When the counter value becomes equal to or greater than ∆𝑦, we increment the current 𝑥 intersection
value by 1 and decrease the counter by the value ∆𝑦.
This procedure is seen by following figure.
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.
20
Unit-2 – 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 .
.
Scan Line Ya D 1
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.
21
Unit-2 – Graphics Primitives
Fig. 2.21: - Identifying interior and exterior region for a self-intersecting polygon.
22
Unit-2 – Graphics Primitives
Boundary Fill Algorithm/ Edge Fill Algorithm
In this method, edges of the polygons are drawn. Then starting with some seed, any point inside the
polygon we examine the neighbouring pixels to check whether the boundary pixel is reached.
If boundary pixels are not reached, pixels are highlighted and the process is continued until boundary
pixels are reached.
Boundary defined regions may be either 4-cormected or 8-connected. as shown in the Figure below
Seed
23
Unit-2 – Graphics Primitives
boundary-fill4(x, y + 1, f-color, b-color);
boundary-fill4(x - 1, y, f-color, b-color);
boundary-fill4(x, y - l, f-color, b-color);
}
}
Note: 'getpixel' function gives the color of .specified pixel and 'putpixel' function draws the pixel with
specified color.
Same procedure can be modified according to 8 connected region algorithm by including four additional
statements to test diagonal positions, such as (𝑥 + 1, 𝑦 + 1).
This procedure requires considerable stacking of neighbouring points more, efficient methods are
generally employed.
This method fill horizontal pixel spans across scan lines, instead of proceeding to 4 connected or 8
connected neighbouring points.
Then we need only stack a beginning position for each horizontal pixel span, instead of stacking all
unprocessed neighbouring positions around the current position.
Starting from the initial interior point with this method, we first fill in the contiguous span of pixels on
this starting scan line.
Then we locate and stack starting positions for spans on the adjacent scan lines, where spans are defined
as the contiguous horizontal string of positions bounded by pixels displayed in the area border color.
At each subsequent step, we unstack the next start position and repeat the process.
An example of how pixel spans could be filled using this approach is illustrated for the 4-connected fill
region in Figure below.
2
(a)
1
2
3
(b)
1
3
5 6
6
4
(c) 5
1
4
24
Unit-2 – 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.
Character Generation
We can display letters and numbers in variety of size and style.
The overall design style for the set of character is called typeface.
Today large numbers of typefaces are available for computer application for example Helvetica, New
York platino etc.
Originally, the term font referred to a set of cast metal character forms in a particular size and format,
such as 10-point Courier Italic or 12- point Palatino Bold. Now, the terms font and typeface are often
used interchangeably, since printing is no longer done with cast metal forms.
Two different representations are used for storing computer fonts.
25
Unit-2 – Graphics Primitives
Bitmap Font/ Bitmapped Font
A simple method for representing the character shapes in a particular typeface is to use rectangular grid
patterns.
Figure below shows pattern for particular letter.
1 1 1 1 1 1 0
0 1 1 0 0 1 1
0 1 1 0 0 1 1
0 1 1 1 1 1 0
0 1 1 0 0 1 1
0 1 1 0 0 1 1
1 1 1 1 1 1 0
Outline Font
In this method character is generated using curve section and straight line as combine assembly.
Figure below shows how it is generated.
26
Unit-2 – Graphics Primitives
Stroke Method
Start
Starbust Method
03 04 03 04
13 14 13 14
02 23 05 02 23 05
17 18 17
18
01 06 01 06
21 21
12 22 07 12 22 07
20 20
24 19 24 19
11 08 11 08
16 15 16 15
10 09 10 09
(a) (b)
Fig. 2.28: - (a) Starbust Method. (b) Letter V using starbust method
In this method a fix pattern of line segments are used to generate characters.
As shown in figure 2.28 there are 24 line segments.
We highlight those lines which are necessary to draw a particular character.
Pattern for particular character is stored in the form of 24 bit code. In which each bit represents
corresponding line having that number.
That code contains 0 or 1 based on line segment need to highlight. We put bit value 1 for highlighted line
and 0 for other line.
Code for letter V is
110011100001001100000000
This technique is not used now a days because:
1. It requires more memory to store 24 bit code for single character.
27
Unit-2 – Graphics Primitives
2. It requires conversion from code to character.
3. It doesn’t provide curve shapes.
Line Attributes
Basic attributes of a straight line segment are its type, its dimension, and its color. In some graphics
packages, lines can also be displayed using selected pen or brush option.
Line Type
Possible selection for the line-type attribute includes solid lines, dashed lines, and dotted lines etc.
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 inter dash spacing that is equal to the length of the
solid sections. Both the length of the dashes and the inter dash spacing are often specified as user
options.
To set line type attributes in a PHIGS application program, a user invokes the function:
setLinetype(It)
Where parameter lt is assigned a positive integer value of 1, 2, 3, 4… etc. to generate lines that are,
respectively solid, dashed, dotted, or dash-dotted etc.
Other values for the line-type parameter It could be used to display variations in the dot-dash patterns.
Once the line-type parameter has been set in a PHIGS application program, all subsequent line-drawing
commands produce lines with this Line type.
Raster graphics generates these types by plotting some pixel and some pixel is off along the line path.
We can generate different patterns by specifying 1 for on pixel and 0 for off pixel then we can generate
1010101 patter as a dotted line.
It is used in many application for example comparing data in graphical form.
Line Width
Implementation of line-width options depends on the capabilities of the output device.
A heavy line on a video monitor could be displayed as adjacent parallel lines, while a pen plotter might
require pen changes.
To set line width attributes in a PHIGS application program, a user invokes the function:
setLinewidthScalFactor (lw)
Line-width parameter lw is assigned a positive number to indicate the relative width of the line to be
displayed.
Values greater than 1 produce lines thicker than the standard line width and values less than the 1
produce line thinner than the standard line width.
28
Unit-2 – Graphics Primitives
In raster graphics we generate thick line by plotting above and below pixel of line path when slope
|𝑚| < 1 and by plotting left and right pixel of line path when slope |𝑚| > 1 which is illustrated in below
figure.
Fig. 2.30: - Double-wide raster line with slope |𝑚| < 1 generated with vertical pixel spans.
Fig. 2.31: - Raster line with slope |𝑚| > 1 and line-width parameter 𝑙𝑤 = 4 plotted with horizontal pixel
spans.
As we change width of the line we can also change line end which are shown below which illustrate all
three types of ends.
Fig. 2.32: - Thick lines drew with (a) butt caps, (b) projecting square caps, and (c) round caps.
Similarly we generates join of two lines of modified width are shown in figure below which illustrate all
three type of joins.
Fig. 2.33: - Thick lines segments connected with (a) miter join, (b) round join, and (c) bevel join.
Line Color
The name itself suggests that it is defining color of line displayed on the screen.
By default system produce line with current color but we can change this color by following function in
PHIGS package as follows:
setPolylineColorIndex (lc)
In this lc is constant specifying particular color to be set.
29
Unit-2 – Graphics Primitives
Pen and Brush Options
In some graphics packages line is displayed with pen and brush selections.
Options in this category include shape, size, and pattern.
Some possible pen or brush are shown in below figure.
30
Unit-2 – Graphics Primitives
Color Lookup Table
Color values of 24 bit is stored in lookup table and in frame buffer we store only 8 bit index which gives
index of required color stored into lookup table. So that size of frame buffer is reduced and we can
display more color.
When we display picture using this technique on output screen we look into frame buffer where index of
the color is stored and take 24 bit color value from look up table corresponding to frame buffer index
value and display that color on particular pixel.
Color
Lookup
Frame Buffer Table
0 To Red Gun
To Green Gun
To Blue Gun
255
Greyscale
With monitors that have no color capability, color function can be used in an application program to set
the shades of grey, or greyscale for display primitives.
Numeric values between 0-to-1 can be used to specify greyscale levels.
This numeric values is converted in binary code for store in raster system.
Table below shows specification for intensity codes for a four level greyscale system.
Area-Fill Attributes
For filling any area we have choice between solid colors or pattern to fill all these are include in area fill
attributes.
Area can be painted by various burses and style.
31
Unit-2 – Graphics Primitives
Fill Styles
Area are generally displayed with three basic style hollow with color border, filled with solid color, or
filled with some design.
In PHIGS package fill style is selected by following function.
setInteriorStyle (fs)
Value of fs include hollow, solid, pattern etc.
Another values for fill style is hatch, which is patterns of line like parallel line or crossed line.
Figure bellow shows different style of filling area.
Pattern Fill
We select the pattern with
setInteriorStyleIndex (pi)
Where pattern index parameter pi specifies position in pattern table entry.
Figure below shows pattern table.
Index(pi) Pattern(cp)
1 4 0
[ ]
0 4
2 2 1 2
[1 2 1]
2 1 2
Table 2.2: - Pattern table.
For example, the following set of statements would fill the area defined in the fillArea command with
the second pattern type stored in the pattern table:
SetInteriorStyle( pattern ) ;
setInteriorStyleIndex ( 2 ) ;
fillArea (n, points);
Separate table can be maintain for hatch pattern and we can generate our own table with required
pattern.
Other function used for setting other style as follows
setpatternsize (dx, dy)
setPaternReferencePoint (positicn)
We can create our own pattern by setting and resetting group of pixel and then map it into the color
matrix.
32
Unit-2 – Graphics Primitives
Soft Fill
Soft fill is modified boundary fill and flood fill algorithm in which we are fill layer of color on back ground
color so that we can obtain the combination of both color.
It is used to recolor or repaint so that we can obtain layer of multiple color and get new color
combination.
One use of this algorithm is soften the fill at boundary so that blurred effect will reduce the aliasing
effect.
For example if we fill t amount of foreground color then pixel color is obtain as:
𝑝 = 𝑡𝐹 + (1 − 𝑡)𝐵
Where F is foreground color and B is background color
If we see this color in RGB component then:
𝑝 = (𝑝𝑟, 𝑝𝑔, 𝑝𝑏) 𝑓 = (𝑓𝑟, 𝑓𝑔, 𝑓𝑏) 𝑏 = (𝑏𝑟, 𝑏𝑔, 𝑏𝑏)
Then we can calculate 𝑡 as follows:
𝑃𝑘 − 𝐵 𝑘
𝑡=
𝐹𝑘 − 𝐵𝑘
If we use more than two color say three at that time equation becomes as follow:
𝑝 = 𝑡0𝐹 + 𝑡1𝐵1 + (1 − 𝑡0 − 𝑡1)𝐵2
Where the sum of coefficient 𝑡0, 𝑡1, and (1 − 𝑡0 − 𝑡1) is 1.
Character Attributes
The appearance of displayed characters is controlled by attributes such as font, size, color, and
orientation.
Attributes can be set for entire string or may be individually.
Text Attributes
In text we are having so many style and design like italic fonts, bold fonts etc.
For setting the font style in PHIGS package we have one function which is:
setTextFont (tf)
Where tf is used to specify text font
It will set specified font as a current character.
For setting color of character in PHIGS we have function:
setTextColorIndex (tc)
Where text color parameter tc specifies an allowable color code.
For setting the size of the text we use function.
setCharacterheight (ch)
For scaling the character we use function.
setCharacterExpansionFacter (cw)
Where character width parameter cw is set to a positive real number that scale the character body
width.
Spacing between character is controlled by function
setCharacterSpacing (cs)
Where character spacing parameter cs can be assigned any real value.
The orientation for a displayed character string is set according to the direction of the character up
vector:
setCharacterUpVector (upvect)
Parameter upvect in this function is assigned two values that specify the 𝑥 and 𝑦 vector components.
33
Unit-2 – Graphics Primitives
Text is then displayed so that the orientation of characters from baseline to cap line is in the direction of
the up vector.
For setting the path of the character we use function:
setTextPath (tp)
Where the text path parameter tp can be assigned the value: right, left, up, or down.
It will set the direction in which we are writing.
For setting the alignment of the text we use function.
setTextAlignment (h, v)
Where parameter h and v control horizontal and vertical alignment respectively.
For specifying precision for text display is given with function.
setTextPrecision (tpr)
Where text precision parameter tpr is assigned one of the values: string, char, or stroke.
The highest-quality text is produced when the parameter is set to the value stroke.
Marker Attributes
A marker symbol display single character in different color and in different sizes.
For marker attributes implementation by procedure that load the chosen character into the raster at
defined position with the specified color and size.
We select marker type using function.
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 centred on the
marker coordinates.
We set the marker size with function.
SetMarkerSizeScaleFactor (ms)
Where parameter marker size ms assigned a positive number according to need for scaling.
For setting marker color we use function.
setPolymarkerColorIndex (mc)
Where parameter mc specify the color of the marker symbol.
34
Unit-3 – 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
(𝒙′, 𝒚′)
𝒕𝒚
(𝒙, 𝒚)
𝒕𝒙
1
Unit-3 – 2D Transformation & Viewing
For point (10, 10)
10 2
𝐴′ = [ ] + [ ]
10 1
12
𝐴 =[ ]
′
11
For point (15, 15)
15 2
𝐵′ = [ ] + [ ]
15 1
17
𝐵 =[ ]
′
16
For point (10, 10)
20 2
𝐶′ = [ ] + [ ]
10 1
22
𝐶′ = [ ]
11
Final coordinates after translation are [A’ (12, 11), B’ (17, 16), C’ (22, 11)].
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(𝟎, 𝟎).
(𝒙′, 𝒚′)
(𝒙, 𝒚)
𝜽
2
Unit-3 – 2D Transformation & Viewing
𝒙′ 𝒙
= 𝐜𝐨𝐬 𝜽 − 𝐬𝐢𝐧 𝜽 ∙
[ ′] [ ] [ 𝒚]
𝒚 𝐬𝐢𝐧 𝜽 𝐜𝐨𝐬 𝜽
Rotation about arbitrary point is illustrated in below figure.
(𝒙′, 𝒚′)
(𝒙, 𝒚)
𝜽
∅
(𝒙𝒓, 𝒚𝒓)
Scaling
Fixed Point
4
Unit-3 – 2D Transformation & Viewing
𝑠𝑥 0 2 6 6 2
𝑃′ = [ ][ ]
0 𝑠𝑦 2 2 6 6
𝑃′ = [0.5 0 ] [2 6 6 2]
0 0.5 2 2 6 6
′
𝑃 =[ 1 3 3 1]
1 1 3 3
Final coordinate after scaling are [A’ (1, 1), B’ (3, 1), C’ (3, 3), D’ (1, 3)].
𝑷′ = 𝑻(𝒕 𝒙,𝒕 𝒚) ∙ 𝑷
𝒙′ 𝟏 𝟎 𝒕𝒙 𝒙
[𝒚′] = [𝟎 𝟏 𝒕𝒚] [𝒚]
𝟏 𝟎 𝟎 𝟏 𝟏
NOTE: - Inverse of translation matrix is obtain by putting −𝒕𝒙 & − 𝒕𝒚 instead of 𝒕𝒙 & 𝒕𝒚.
Rotation
𝑷′ = 𝑹(𝜽) ∙ 𝑷
𝒙′ 𝐜𝐨𝐬 𝜽 − 𝐬𝐢𝐧 𝜽 𝟎 𝒙
[𝒚 ] = [𝐬𝐢𝐧 𝜽
′ 𝐜𝐨𝐬 𝜽 𝟎] [𝒚]
𝟏 𝟎 𝟎 𝟏 𝟏
NOTE: - Inverse of rotation matrix is obtained by replacing 𝜽 by −𝜽.
Scaling
𝑷′ = 𝑺(𝒔𝒙,𝒔𝒚) ∙ 𝑷
5
Unit-3 – 2D Transformation & Viewing
𝒙′ 𝒔𝒙 𝟎 𝟎 𝒙
[𝒚′] = [ 𝟎 𝒔𝒚 𝟎] [𝒚]
𝟏 𝟎 𝟎 𝟏 𝟏
NOTE: - Inverse of scaling matrix is obtained by replacing 𝒔𝒙 & 𝒔𝒚 by 𝟏 & 𝟏 respectively.
𝒔𝒙 𝒔𝒚
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.
Rotations
Two successive Rotations are performed as:
𝑷′ = 𝑹(𝜽𝟐) ∙ {𝑹(𝜽𝟏) ∙ 𝑷}
𝑷′ = {𝑹(𝜽𝟐) ∙ 𝑹(𝜽𝟏)} ∙ 𝑷
𝐜𝐨𝐬 𝜽𝟐 − 𝐬𝐢𝐧 𝜽𝟐 𝟎 𝐜𝐨𝐬 𝜽𝟏 −𝐬𝐢𝐧 𝜽𝟏 𝟎
𝑷′ = [𝐬𝐢𝐧 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟐 𝟎] [𝐬𝐢𝐧 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟏 𝟎] ∙ 𝑷
𝟎 𝟎 𝟏 𝟎 𝟎 𝟏
𝐜𝐨𝐬 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 − 𝐬𝐢𝐧 𝜽𝟐 𝐬𝐢𝐧 𝜽𝟏 − 𝐬𝐢𝐧 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟐 − 𝐬𝐢𝐧 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 𝟎
𝑷′ = [𝐬𝐢𝐧 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟐 + 𝐬𝐢𝐧 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 𝐜𝐨𝐬 𝜽𝟐 𝐜𝐨𝐬 𝜽𝟏 − 𝐬𝐢𝐧 𝜽𝟐 𝐬𝐢𝐧 𝜽𝟏 𝟎] ∙ 𝑷
𝟎 𝟎 𝟏
6
Unit-3 – 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.
Final Coordinates after rotations are 𝑝,(12, 12) and 𝑞,(48, 48).
7
Unit-3 – 2D Transformation & Viewing
8
Unit-3 – 2D Transformation & Viewing
11 13 18
𝑃′ = [ 7 4 4]
1 1 1
Final coordinates after rotation are [A’ (11, 7), B’ (13, 4), C’ (18, 4)].
(c) (d)
(a) (b)
Scale Object with Translate Object so that
Original Position Translate Object so
Respect to Origin Fixed Point is Return to
of Object and that Fixed Point
Position (𝒙𝒇, 𝒚𝒇) .
Fixed Point (𝒙𝒇, 𝒚𝒇) is at Origin
Here 𝑷′ and 𝑷 are column vector of final and initial point coordinate respectively and (𝒙𝒇, 𝒚𝒇) are the
coordinates of fixed-point.
Example: - Consider square with left-bottom corner at (2, 2) and right-top corner at (6, 6) apply the
transformation which makes its size half such that its center remains same.
Fixed point is center of square so:
6−2
𝑥 = 2+ , 𝑦 6−2
𝑓 𝑓 =2+
2 2
As we want size half so value of scale factor are 𝑠𝑥 = 0.5, 𝑠𝑦 = 0.5 and Coordinates of square are [A (2,
2), B (6, 2), C (6, 6), D (2, 6)].
𝑃′ = 𝑆(𝑥𝑓, 𝑦𝑓, 𝑠𝑥, 𝑠𝑦) ∙ 𝑃
𝑠𝑥 0 𝑥𝑓(1 − 𝑠𝑥) 2 6 6 2
𝑃′ = [ 0 𝑠𝑦 𝑦𝑓(1 − 𝑠𝑦)] [2 2 6 6]
0 0 1 1 1 1 1
9
Unit-3 – 2D Transformation & Viewing
0.5 0 4(1 − 0.5) 2 6 6 2
𝑃′ = [ 0 0.5 4(1 − 0.5)] [2 2 6 6]
0 0 1 1 1 1 1
0.5 0 2 2 6 6 2
𝑃′ = [ 0 0.5 2] [2 2 6 6]
0 0 1 1 1 1 1
3 5 5 3
𝑃′ = [3 3 5 5]
1 1 1 1
Final coordinate after scaling are [A’ (3, 3), B’ (5, 3), C’ (5, 5), D’ (3, 5)]
𝒔𝟏
Reflection
10
Unit-3 – 2D Transformation & Viewing
The mirror image for a two –dimensional reflection is generated relative to an axis of reflection by
rotating the object 180o about the reflection axis.
Reflection gives image based on position of axis of reflection. Transformation matrix for few positions
are discussed here.
y
1 Original
Position
2 3
x
2’ 3’
Reflected
1 ’ Position
1 0 0
[0 −1 0]
0 0 1
y
1’ 1 Original
Reflected
Position Position
3’ 2’ 2 3
−1 0 0
[ 0 1 0]
0 0 1
11