+ All Categories
Home > Documents > Cgms Lecture Notes

Cgms Lecture Notes

Date post: 09-Apr-2018
Category:
Upload: chellam1kalai
View: 223 times
Download: 0 times
Share this document with a friend
24
1. Application of Computer Graphics  y Computer-Aided Design for engineering and architectural s ystems etc. Objects maybe displayed in a wireframe outline form. Multi-window environment is also favored for  producing various z ooming scales and views. Animations are useful for testing performance.  y Presentation Graphics  To produce illustrations which summarize various kinds of data. Except 2D, 3D graphics are good tools for reporting more complex data.  y Computer Art Painting packages are available. With cordless, pressure-sensitive stylus, artists can produce electronic  paintings which simulate different brush strokes, brush widths, and colors. Photorealistic techniques, morphing and a nimations are very us eful in commercial art. For films, 24 frames per second ar e required. For video monitor, 30 frames per second are required.  y Entertainment  Motion pictures, Music vid eos, and TV shows, Computer games  y Education and Training  Training with computer-generated models of specialized systems such as the training of ship captains and aircraft pilots. y Visualization  For analyzing scientific, engineering, medical and business data or behavior. Converting data to visual form can help to understand mass volume of data very efficiently.  y Image Processing Image processing is to apply techniques to modify or interpret existing pictures. It is widely used in medical applications.  y Graphical User Interface Multiple window, icons, menus allow a computer setup to be utiliz ed more efficiently.  2. Overview of Graphics Systems 2.1 Cathode-Ray Tubes (CRT) - still the most common video display device presently  Electrostatic deflection of the electron beam in a CRT  An electron gun emits a beam of electrons, which passes through focusing and deflection systems and hits on the phosphor-coated screen. The number of points displayed on a CRT is referred to as the  1 
Transcript
Page 1: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 1/24

1. Application of Computer Graphics  

y  Computer-Aided Design for engineering and architectural systems etc.

Objects maybe displayed in a wireframe outline form. Multi-window environment is also favored for  producing various zooming scales and views. Animations are useful for testing performance. 

y  Presentation Graphics To produce illustrations which summarize various kinds of data. Except 2D, 3D graphics are good

tools for reporting more complex data. 

y  Computer Art Painting packages are available. With cordless, pressure-sensitive stylus, artists can produce electronic

 paintings which simulate different brush strokes, brush widths, and colors. Photorealistic techniques,

morphing and animations are very useful in commercial art. For films, 24 frames per second arerequired. For video monitor, 30 frames per second are required. 

y  Entertainment Motion pictures, Music videos, and TV shows, Computer games 

y  Education and Training Training with computer-generated models of specialized systems such as the training of ship captains

and aircraft pilots. 

y  Visualization For analyzing scientific, engineering, medical and business data or behavior. Converting data to visual

form can help to understand mass volume of data very efficiently. 

y  Image Processing Image processing is to apply techniques to modify or interpret existing pictures. It is widely used inmedical applications. 

y  Graphical User Interface Multiple window, icons, menus allow a computer setup to be utilized more efficiently. 

2. Overview of Graphics Systems 

2.1 Cathode-Ray Tubes (CRT) - still the most common video display device presently 

Electrostatic deflection of the electron beam in a CRT 

An electron gun emits a beam of electrons, which passes through focusing and deflection systems and

hits on the phosphor-coated screen. The number of points displayed on a CRT is referred to as the 

Page 2: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 2/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

resolution (eg. 1024x768). Different phosphors emit small light spots of different colors, which can 

combine to form a range of colors. A common methodology for color CRT display is the Shadow-

mask method. 

Illustration of a shadow-mask CRT 

The light emitted by phosphor fades very rapidly, so it needs to redraw the picture repeatedly. There

are 2 kinds of redrawing mechanisms: Raster-Scan and Random-Scan 

Raster-Scan 

The electron beam is swept across the screen one row at a time from top to bottom. As it moves

across each row, the beam intensity is turned on and off to create a pattern of illuminated spots. This

scanning process is called refreshing. Each complete scanning of a screen is normally called a frame. 

The refreshing rate, called the frame rate, is normally 60 to 80 frames per second, or described as 60

Hz to 80 Hz. 

Picture definition is stored in a memory area called the frame buffer. This frame buffer stores the

intensity values for all the screen points. Each screen point is called a pixel ( picture element). 

On black and white systems, the frame buffer storing the values of the pixels is called a bitmap. Eachentry in the bitmap is a 1-bit data which determine the on (1) and off (0) of the intensity of the pixel. 

On color systems, the frame buffer storing the values of the pixels is called a pixmap  (Thoughnowadays many graphics libraries name it as bitmap too). Each entry in the pixmap occupies anumber of bits to represent the color of the pixel. For a true color display, the number of bits for each

entry is 24 (8 bits per red/green/blue channel, each channel 28=256 levels of intensity value, ie. 256

voltage settings for each of the red/green/blue electron guns). 

Page 3: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 3/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

Random-Scan (Vector Display) 

The CRT's electron beam is directed only to the parts of the screen where a picture is to be drawn. The

 picture definition is stored as a set of line-drawing commands in a refresh display file or a refresh

 buffer in memory. 

Random-scan generally have higher resolution than raster systems and can produce smooth line

drawings, however it cannot display realistic shaded scenes. 

2.2 Flat-Panel Displays - will be the most common video display device very soon. 

R educed thickness, volumn, weight, and power requirements compared to CRT. 

Liquid-Crystal Displays (LCDs) 

-  Liquid crystal refers to compounds which are in crystalline arrangement, but can flow like liquid.

-  The light source passes through a liquid-crystal material that can be aligned to either block or 

transmit the light.

-  2 glass plates, each containing a light polarizer at right angles to the other, sandwich a liquid

crystal material.

-  Rows of horizontal transparent conductors are built into one glass page. Columns of vertical

conductors are put into the other plate. The intersection of 2 conductors defines a pixel position. -- Passive-matrix LCD

-  In the "on" state, polarized light passing through the material is twisted so that it will pass through

the opposite polarizer.

-  Different materials can display different colors.

-  By placing thin-film transistors at pixel locations, voltage at each pixel can be controlled. --

Active-matrix LCD.

Page 4: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 4/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

2.3. Graphics Systems 

Block diagram of a CRT graphics system 

In this context we discuss the graphics systems of raster-scan devices. A graphics processor accepts

graphics commands from the CPU and executes the graphics commands which may involve drawinginto the frame buffer. The frame buffer acts as a temporary store of the image and also as a decoupler 

to allow the graphics processor and the display controller to operate at different speeds. The display

controller reads the frame buffer line by line and generates the control signals for the screen. 

Graphics commands: -  Draw point

-  Draw polygon

-  Draw text

-  Clear frame buffer 

-  Change drawing color 

2 kinds of graphics processors: 

2D graphics processors execute commands in 2D coordinates. When objects overlap, the one being 

drawn will obscure objects drawn previously in the region. BitBlt operations (Bit Block Transfer) are

usually provided for moving/copying one rectangular region of frame buffer contents to another 

region. 

3D graphics processors execute commands in 3D coordinates. When objects overlap, it is required to

determine the visibility of the objects according to the z values. 

Display Controller for a raster display device reads the frame buffer and generates the control signals for the screen, ie. the signals for horizontal scanning and vertical scanning. Most display controllers

include a colormap  (or video look-up table). The major function of a colormap is to provide a

mapping between the input pixel value to the output color. 

2.4. Input Devices 

Common devices: keyboard, mouse, trackball and joystick  

Specialized devices: 

Data gloves are electronic gloves for detecting fingers' movement. In some applications, a sensor is 

also attached to the glove to detect the hand movement as a whole in 3D space. 

Page 5: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 5/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

A tablet contains a stylus and a drawing surface and it is mainly used for the input of drawings. A

tablet is usually more accurate than a mouse, and is commonly used for large drawings. 

Scanners are used to convert drawings or pictures in hardcopy format into digital signal for computer  

 processing. 

Touch panels allow displayed objects or screen positions to be selected with the touch of a finger. In 

these devices a touch-sensing mechanism is fitted over the video monitor screen. Touch input can be

recorded using optical, electrical, or acoustical methods. 

2.5 Hard-Copy Devices 

Directing pictures to a printer or plotter to produce hard-copy output on 35-mm slides, overhead

transparencies, or plain paper. The quality of the pictures depend on dot size and number of dots per 

inch (DPI). 

Types of printers: line printers, laserjet, ink-jet, dot-matrix 

Laserjet   printers use a laser beam to create a charge distribution on a rotating drum coated with a

  photoelectric material. Toner is applied to the drum and then transferred to the paper. To produce

color outputs, the 3 color pigments (cyan, magenta, and yellow) are deposited on separate passes. 

Inkjet printers produce output by squirting ink in horizontal rows across a roll of paper wrapped on a  

drum. To produce color outputs, the 3 color pigments are shot simultaneously on a single pass along

each print line on the paper. 

Inkjet or pen plotters are used to generate drafting layouts and other drawings of normally larger  

sizes. A pen plotter has one or more pens of different colors and widths mounted on a carriage which

spans a sheet of paper. 

2.6 Coordinate Representations in Graphics 

General graphics packages are designed to be used with Cartesian coordinate representations (x,y,z).

Usually several different Cartesian reference frames are used to construct and display a scene: 

Modeling coordinates are used to construct individual object shapes. 

World coordinates are computed for specifying the placement of individual objects in appropriate 

 positions. 

Normalized coordinates are converted from world coordinates, such that x,y values are ranged from 

0 to 1. 

Device coordinates are the final locations on the output devices. 

Page 6: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 6/24

CS3162 Introduction to Computer Graphics  Helena Wong, 2000  

3. Output Primitives 

Shapes and colors of objects can be described internally with pixel arrays or sets of basic geometric

structures such as straight line segments and polygon color areas. The functions provided by graphics

 programming packages to deal with these basic geometric structures are called output primitives. 

For example: 

Drawing a point:  SetPixel(100,200,RGB(255,255,0)); 

Drawing a line:  MoveTo(100,100); LineTo(100,200); 

Drawing some text: SetText(100,200,"Hello"); 

Drawing an ellipse: Ellipse(100,100,200,200); 

Painting a picture: BitBlt(100,100,50,50,srcImage,0,0,SRCCOPY); 

3.1 Drawing a Thin Line in Raster Devices 

This is to compute intermediate discrete coordinates along the line path between 2 specified endpoint

 positions. The corresponding entry of these discrete coordinates in the frame buffer is then markedwith the line color wanted. 

The basic concept is: 

- A line can be specified in the form: y

= mx + c 

- Let m be between 0 to 1, then the slope of the line is between 0 and 45 degrees. 

-  For the x-coordinate of the left end point of the line, compute the corresponding y value according

to the line equation. Thus we get the left end point as (x1,y1), where y1 may not be an integer.

-  Calculate the distance of (x1,y1) from the center of the pixel immediately above it and call it D1

Calculate the distance of (x1,y1) from the center of the pixel immediately below it and call it D2-  If D1 is smaller than D2, it means that the line is closer to the upper pixel than the lower pixel,

then, we set the upper pixel to on; otherwise we set the lower pixel to on.

-  Then increatement x by 1 and repeat the same process until x reaches the right end point of the

line.

-  This method assumes the width of the line to be zero

Page 7: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 7/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

Bresenham's Line Algorithm 

This algorithm is very efficient since it use only incremental integer calculations. Instead of 

calculating the non-integral values of D1 and D2 for decision of pixel location, it computes a value,

 p, which is defined as: 

 p = (D2-D1)* horizontal length of the line if p>0, it means D1 is smaller than D2, and we can determine the pixel location accordingly 

However, the computation of p is very easy: The initial value of p is 2 * vertical height of the line - horizontal length of the line. At succeeding x locations, if p has been smaller than 0, then, we increment p by 2 * vertical height of the line, otherwise we increment p by 2 * (vertical height of the line - horizontal length of the line) 

All the computations are on integers. The incremental method is applied to 

void BresenhamLine(int x1, int y1, int x2, int y2)  

{ int x, y, p, const1, const2;/* initialize variables */

 p=2*(y2-y1)-(x2-x1);const1=2*(y2-y1);const2=2*((y2-y1)-(x2-x1));

x=x1;

y=y1;

SetPixel(x,y);  while (x<xend){ x++;

if (p<0){ p=p+const1;  } else { y++; p=p+const2;  

} SetPixel(x,y);  

} } 

Page 8: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 8/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

3.2 Drawing a Circle in Raster Devices 

A circle can be specified in the form:

(x-xc)2

+ (y-yc)2

= r 2 

where (xc,yc) is the center of the circle. 

To save time in drawing a circle, we can make use of the symmetrical property of a circle which is to

draw the segment of the circle between 0 and 45 degrees and repeat the segment 8 times as shown in

the diagram to produce a circle. Ths algorithm also employs the incremental method which further 

improves the efficiency. 

void PlotCirclePoints(int centerx, int centery, int x, int y)  { SetPixel(centerx+x,centery+y);

SetPixel(centerx-x,centery+y);SetPixel(centerx+x,centery-y);SetPixel(centerx-x,centery-y);SetPixel(centerx+y,centery+x);SetPixel(centerx-y,centery+x);SetPixel(centerx+y,centery -x); SetPixel(centerx-y,centery-x);  

} void BresenhamCircle(int centerx, int centery, int radius)  { int x=0;

int y=radius; int p=3-2*radius; while (x<y){ PlotCirclePoints(centerx,centery,x,y);

if (p<0){ p=p+4*x+6;} else { p=p+4*(x-y)+10;

y=y-1; } x=x+1; 

} PlotCirclePoints(centerx,centery,x,y);  

Page 9: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 9/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

3.3 Scan-Line Polygon Fill Algorithm 

-  Basic idea: For each scan line crossing a polygon, this algorithm locates the intersection points of 

the scan line with the polygon edges. These intersection points are shorted from left to right.

Then, we fill the pixels between each intersection pair.

-  Some scan-line intersection at polygon vertices require special handling. A scan line passing

through a vertex as intersecting the polygon twice. In this case we may or may not add 2 points to

the list of intersections, instead of adding 1 points. This decision depends on whether the 2 edges

at both sides of the vertex are both above, both below, or one is above and one is below the scan

line. Only for the case if both are above or both are below the scan line, then we will add 2 points.

- Inside-Outside Tests: The above algorithm only works for standard polygon shapes. However, for the cases which the edges of the polygon intersects, we need to identify whether a point is an

interior or exterior point. Students may find interesting descriptions of 2 methods to solve this

 problem in many text books: odd-even rule and nonzero winding number rule. 

Page 10: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 10/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

3.4 Boundary-Fill Algorithm 

- This algorithm starts at a point inside a region and paint the interior outward towards the boundary. 

-  This is a simple method but not efficient: 1. It is recursive method which may occupy a large

stack size in the main memory.

void BoundaryFill(int x, int y, COLOR fill, COLOR boundary)  { COLOR current;

current=GetPixel(x,y);

if (current<>boundary) and (current<>fill) then{ SetPixel(x,y,fill);

BoundaryFill(x+1,y,fill,boundary);BoundaryFill(x-1,y,fill,boundary);  BoundaryFill(x,y+1,fill,boundary);  BoundaryFill(x,y-1,fill,boundary);  

} } 

-  More efficient methods fill horizontal pixel spands across scan lines, instead of proceeding to

neighboring points.

3.5 Flood-Fill Algorithm 

-  Flood-Fill is similar to Boundary-Fill. The difference is that Flood-Fill is to fill an area which I 

not defined by a single boundary color.

void BoundaryFill(int x, int y, COLOR fill, COLOR old_color)  

{ if (GetPixel(x,y)== old_color){ SetPixel(x,y,fill);

BoundaryFill(x+1,y,fill,boundary);BoundaryFill(x-1,y,fill,boundary);BoundaryFill(x,y+1,fill,boundary);

BoundaryFill(x,y-1,fill,boundary);} 

10 

Page 11: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 11/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

3.6 Drawing Text 

- A character is defined by its outline which is usually comoposed of lines and curves. 

-  We can use a method similar the one for rendering polygon to render a character 

-  However, because text is used very oftenly, we usually convert them into bitmaps in advance to

improve the drawing efficiency.

-  To draw a character on the screen, all we need to do is to copy the corresponding bitmap to

the specified coordinate.-  The problem with this method is that scaling a character with a bitmap to produce different

character sizes would result in a block-like structures (stair-case, aliasing). Hence we normally

render a few bitmaps for a single character to represent different sizes of the same character.

3.7 Bitmap 

-  A graphics pattern suh as an icon or a character may be needed frequently, or may need to be

re-used.

-  Generating the pattern every time when needed may waste a lot of processing time.

-  A bitmap can be used to store a pattern and duplicate it to many places on the image or on

the screen with simple copying operations.

11 

Page 12: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 12/24

CS3162 Introduction to Computer Graphics Helena Wong, 2000  

3.8 Properties 

- In graphical output primitives, objects are normally associated with propertiesEg. Point:  color  Line: width, style, color 

Polygon: edge color, filling color  Text:  font size, color, bold or not bold, italic or not, underlined or not, etc. 

In graphical packages, we can specify such properties, eg. In Powerpoint, we can modify

the properties of objects by a format command. 

In programming tools, we may pass the properties as arguments when we call the functions of these

 primitives, or we may pre-select the properties before calling the functions. 

Two Dimensional Transformations 

In many applications, changes in orientations, size, and shape are accomplished with geometric transformations

that alter the coordinate descriptions of objects. 

Basic geometric transformations are: Translation Rotation Scaling 

Other transformations: Reflection Shear  

Basic Transformations 

Translation 

We translate a 2D point by adding translation distances, tx and ty, to the original coordinate position

(x,y): x' = x + tx, y' = y + ty 

Alternatively, translation can also be specified by the following transformation matrix: 

«1  0 t x » 

0  1 t¬  y ¼ 

¬-0  0 1 ¼½ 

Then we can rewrite the formula as: 

«x'»«1 0 t x »«x» y'  = 0  1  t  y ¬  ¼  ¬  y ¼  ¬  ¼ 

¬-1¼½  ¬-0  0  1 ¼½ ¬-1¼½ For example, to translate a triangle with vertices at original coordinates (10,20), (10,10), (20,10) by

tx=5, ty=10, we compute as followings: 

Translation of vertex (10,20): 

«x'»«1 0 5 »«10»« 1*10 0 * 20 5 *1 »«15» ¬¬y'

¼¼ =

¬¬0 1 10

¼¼ ¬¬20

¼¼ =

¬¬0 *10 1* 20 10 *1

¼¼ =

¬¬30

¼¼ 

¬-1 ¼½ ¬-0 0 1 ¼½ ¬- 1 ¼½ ¬- 0 *10 0 * 20 1*1 ¼½ ¬- 1 ¼½ 

Page 13: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 13/24

Translation of vertex (10,10): 

«x'»«1 0 5 »«10»« 1*10 0 *10 5 *1 »«15» ¬¬y'

¼¼ =

¬¬0 1 10

¼¼ ¬¬10

¼¼ =

¬¬0 *10 1*10 10 *1

¼¼ =

¬¬20

¼¼ 

¬-1 ¼½ ¬-0 0 1 ¼½ ¬- 1 ¼½ ¬- 0 *10 0 *10 1*1 ¼½ ¬- 1 ¼½ 

Translation of vertex (20,10): 

«x'»«1 0 5 »«20»« 1* 20 0 *10 5 *1 »«25» ¬¬y'

¼¼ =

¬¬0 1 10

¼¼ ¬¬10

¼¼ =

¬¬0 * 20 1*10 10 *1

¼¼ =

¬¬20

¼¼ 

¬-1 ¼½ ¬-0 0 1 ¼½ ¬- 1 ¼½ ¬- 0 * 20 0 *10 1*1 ¼½ ¬- 1 ¼½ 

The resultant coordinates of the triangle vertices are (15,30), (15,20), and (25,20) respectively. 

Exercise: translate a triangle with vertices at original coordinates (10,25), (5,10), (20,10) by tx=15,

ty=5. Roughly plot the original and resultant triangles. 

Rotation About the Origin 

To rotate an object about the origin (0,0), we specify the rotation angle ?. Positive and negative values

for the rotation angle define counterclockwise and clockwise rotations respectively. The followings is

the computation of this rotation for a point: 

x' = x cos ? - y sin ?

y' = x sin ? + y cos ? 

Alternatively, this rotation can also be specified by the following transformation matrix: 

«cos U  sinU  0» 

¬sin U  cos U  0 ¼ 

¬- 0  0  1¼½ 

Then we can rewrite the formula as: 

«x'»  «cos U  sin U  0»«x» 

¬y' ¼= ¬sinU  cos U  0 ¼ ¬¬y¼¼ 

¬-1¼½  ¬- 0  0  1¼½ ¬-1¼½ For example, to rotate a triange about the origin with vertices at original coordinates (10,20), (10,10),

(20,10) by 30 degrees, we compute as followings: 

«cos U  sinU  0»  «cos 30  sin 30  0»  «0.866  0.5  0» 

¬sin U  cos U  0 ¼= ¬sin 30  cos 30  0 ¼= ¬  0.5  0.866  0 ¼ 

¬- 0  0  1¼½  ¬-  0  0  1¼½  ¬-  0  0  1¼½ Rotation of vertex (10,20): 

«x'»  «0.866  0.5  0» «10»  «0.866 *10  (0.5) * 20 0 *1»  «1.34» 

¬y' ¼= ¬  0.5  0.866  0 ¼  ¬20 ¼= ¬ 0.5 *10 0.866 * 20 0 *1  ¼= ¬22.32 ¼ ¬1 ¼  ¬  0  0  1¼ ¬ 1 ¼  ¬  0 *10 0 * 20 1*1  ¼  ¬  1  ¼ 

-  ½  -  ½ -  ½  -  ½  -  ½ 

Page 14: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 14/24

Page 15: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 15/24

«x'»«2  0  0»«20»« 2 * 20 0 *10 0 *1 »«40» 

¬y' ¼= ¬0  1.5  0 ¼  ¬10 ¼= ¬0 * 201.5 *100 *1 ¼= ¬15 ¼ 

¬-1¼½  ¬-0  0  1¼½ ¬- 1¼½  ¬-0 * 20 0 *101*1 ¼½  ¬-1¼½ The resultant coordinates of the triangle vertices are (20,30), (20,15), and (40,15) respectively. 

Exercise: Scale a triange with vertices at original coordinates (10,25), (5,10), (20,10) by sx=1.5,

sy=2, with respect to the origin. Roughly plot the original and resultant triangles. 

Concatenation Properties of Composite Matrix 

I. Matrix multiplication is associative: 

A·B·C = (A·B) ·C = A·(B·C)  

Therefore, we can evaluate matrix products using these associative grouping. For example, we have a triangle, we want to rotate it with the matrix B, then we translate it withmatrix A. Then, for a vertex of that triangle represented as C, we compute its transformation as: 

C'=A·(B·C) 

But we can also change the computation method as: 

C' = (A·B)·C 

The advantage of computing it using C' = (A·B)·C instead of C'=A·(B·C) is that, for computing

the 3 vertices of the triangle, C1, C2, C 3, the computation time is shortened: 

Using C'=A·(B·C): 

-  compute B · C1 and put the result into I1 

-  compute A · I1 and put the result into C1' 

-  compute B · C2 and put the result into I2 -  compute A · I2 and put the result into C2

-  compute B · C3 and put the result into I3 

-  compute A · I3 and put the result into C3' 

Using C' = (A·B)·C: -  compute A · B and put the result into M

-  compute M · C1 and put the result into C1' 

-  compute M · C2 and put the result into C2' 

-  compute M · C3 and put the result into C3' 

Page 16: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 16/24

  CS3162 Introduction to Computer Graphics Helena Wong, 2000  

Example: Rotate a triangle with vertices (10,20), (10,10), (20,10) about the origin by 30 degrees 

and then translate it by tx=5, ty=10, 

We compute the rotation matrix: 

«cos 30  sin 30 0»  «0.866  0.5  0» 

B = ¬sin 30  cos 30  0 ¼= ¬  0.5  0.866  0 ¼ ¬-  0  0  1¼½  ¬- 0  0  1¼½ 

And we compute the translation matrix: 

«1  0  5 » 

A= ¬0  1 10 ¼ 

¬-0  0  1¼½ Then, we compute M=A·B 

«1  0  5 »«0.866  0.5  0» M= ¬0  1 10 ¼· ¬  0.5  0.866 0 ¼ 

¬-0 0 1 ¼½  ¬-  0  0  1¼½ 

« 1* 0.866 0 * 0.5 5 * 0  1*0.5 0 * 0.866 5 * 0  1* 0 0 * 0 5 *1 » 

M= ¬0 * 0.866 1* 0.5 10 * 0  0 * 0.5 1* 0.866 10 * 0  0 * 0 1* 0 10 *1 ¼ 

¬- 0 * 0.866 0 * 0.5 1* 0  0 * 0.5 0 * 0.866 1* 0  0 * 0 0 * 0 1*1 ¼½ 

«0.866  0.5  5 » 

M= ¬ 0.5  0.866  10 ¼ 

-  0  0  1 ¼½ 

Then, we compute the transformations of the 3 vertices: Transformation of vertex (10,20): 

«x'»  «0.866  0.5  5 »«10»  «0.866 *10  (0.5) * 20 5 *1»  « 3.66 » 

¬y' ¼= ¬ 0.5  0.866  10 ¼  ¬20 ¼= ¬0.5 *100.866 * 2010 *1 ¼= ¬32.32 ¼ 1 0  0  1 1 0 *10 0 * 20 1*1  1

-  ½  -  ½-  ½  -  ½  -  ½ 

Transformation of vertex (10,10): 

«x'»  «0.866  0.5  5 »«10»  «0.866 *10  (0.5) *10 5 *1»  « 8.66 » 

¬y' ¼= ¬ 0.5  0.866  10 ¼  ¬10 ¼= ¬ 0.5 *100.866 *1010 *1 ¼= ¬23.66 ¼ ¬1 ¼  ¬  0  0  1 ¼¬ 1 ¼  ¬  0 *10 0 *10 1*1  ¼¬ 1 ¼ 

-  ½  -  ½-  ½  -  ½  -  ½ 

Page 17: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 17/24

Transformation of vertex (20,10): 

«x'»  «0.866  0.5  5  »«20»  «0.866 * 20  (0.5) *10 5 *1»  «17.32» 

¬y' ¼= ¬  0.5  0.866 10 ¼  ¬10  ¼= ¬0.5 * 200.866 *1010 *1 ¼= ¬28.66 ¼ ¬1 ¼  ¬  0  0  1 ¼ ¬ 1  ¼  ¬  0 * 20 0 *10 1*1  ¼  ¬  1  ¼ 

-  ½  -  ½ -  ½  -  ½  -  ½ 

The resultant coordinates of the triangle vertices are (3.66,32.32), (8.66,23.66), and (17.32,28.66)

respectively. 

II. Matrix multiplication may not be commutative: 

A·B may not equal to B·A This means that if we want to translate and rotate an object, we must be careful about the order in whichthe composite matrix is evaluated. Using the previous example, if you compute C' = (A·B)·C, you are

rotating the triangle with B first, then translate it with A, but if you compute C' = (B·A)·C, you are

translating it with A first, then rotate it with B. The result is different.  

Exercise: Translate a triangle with vertices (10,20), (10,10), (20,10) by tx=5, ty=10 and then rotate it about

the origin by 30 degrees. Compare the result with the one obtained previously: (3.66,32.32),(8.66,23.66), and (17.32,28.66) by plotting the original triangle together with these 2 results. 

4.3 Composite Transformation Matrix 

Translations 

By common sense, if we translate a shape with 2 successive translation vectors: (tx1, ty1) and (tx2, ty2), it is

equal to a single translation of (tx1+ tx2, ty1+ t y2). This additive property can be demonstrated by composite transformation matrix: 

«1  0 t x1 »  «1  0  t x2 »  «1*1 0 * 0 t x1 * 0 1* 0 0 *1 t x1 * 0 1* t x 2  0 * t y 2  t x1 *1» 

0  1 t · 0  1  t  = 0 *1 1* 0 t * 0 0 * 01*1 t * 0 0* t 1* t t *1 ¬  y1 ¼ ¬  y2 ¼  ¬  y1  y1  x 2  y 2  y1 

¬-0  0 1 ¼½ ¬-0  0  1 ¼½  ¬- 0 *1 0 * 0 1* 0  0 * 0 0 *1 1* 0  0 * t x 2  0 * tu 2  1*1 ¼½ 

«1  0  t x1  t x 2 » = 0  1  t  t  ¼ 

¬  y1  y 2 ¼ ¬0  0  1  ¼ -  ½ 

This demonstrates that 2 successive translations are additive. 

Rotations 

By common sense, if we rotate a shape with 2 successive rotation angles: ? and a, about the origin, it

is equal to rotating the shape once by an angle ? + a about the origin. Similarly, this additive property can be demonstrated by composite transformation matrix: 

«cos U  sin U  0»«cos E  sin E  0» 

¬sin U  cos U  0 ¼ · ¬sinE  cos E  0 ¼ 

-  0  0  1¼½  ¬-  0  0  1¼½ 

«cos Ucos E ( sin U) * sin E 0 * 0  cos U * ( sin E)  ( sinU) * cos E 0 * 0  cos U * 0  ( sin U) * 0 0 *1» 

Page 18: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 18/24

= ¬ sin U cos E cos U * sin E 0 * 0  sin U * ( sin E) cos U * cos E 0 * 0  sinU * 0 cos U * 0 0 *1  ¼¼ ¬  0 * cos E 0 * sin E 1* 0  0 * ( sin E) 0 * cos E 1* 0  0 * 0 0 * 0 1 *1  ¼ -  ½ 

«cos Ucos

=¬¬sin U cos ¬ - 

E sin Usin E   (cos Usin E sin U cos E)  0» 

E cos Usin E  sin Usin E cos Ucos E  0 ¼ 

0  0  1¼½ 

Page 19: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 19/24

 «cos(UE)  sin(UE)  0» 

= ¬sin(UE)  cos(UE)  0 ¼ ¬  0  0  1¼ -  ½ 

This demonstrates that 2 successive rotations are additive. 

Scalings With Respect to the Origin 

By common sense, if we scale a shape with 2 successive scaling factor: (sx1, sy1) and (sx2, sy2), withrespect to the origin, it is equal to a single scaling of (sx1* sx2, sy1* sy2) with respect to the origin. This

multiplicative property can be demonstrated by composite transformation matrix: 

«s x1  0  0»«s x 2  0  0» 

¬ 0  y1  0 ¼ · ¬0 s y 2  0 ¼ 

¬- 0  0  1¼½  ¬- 0  0  1¼½ 

«s x1 * s x 2  0 * 00 * 0 s x1 * 00 * s y 2  0 * 0 s x1 * 00 * 00 *1» 

= ¬  ¼ ¬0 * s x 2  s y1 * 0 0 * 0 0 * 0 s y1 * s y 2  0 * 0 0 * 0 s y1 * 0 0 *1¼ 

- 0 * s x 2  0 * 01* 0  0 * 0 0 * s y 2  1* 0  0 * 0 0 * 0 1*1 ½ 

«s x1 * s x 2  0  0» 

=  ¬  0  y1  y 2  0  ¬  ¼ 

0  0  1  -  ½ 

This demonstrates that 2 successive scalings with respect to the origin are multiplicative. 

General Pivot-Point Rotation 

Rotation about an arbitrary pivot point is not as simple as rotation about the origin. The procedure of 

rotation about an arbitrary pivot point is: 

-  Translate the object so that the pivot-point position is moved to the origin.

-  Rotate the object about the origin.

-  Translate the object so that the pivot point is returned to its original position.

The corresponding composite transformation matrix is: 

«1  0  x r   »«cos U  sinU  0»«1  0 x r   » 0  1  y

sin U  cosU  0

0  1  y

¬  r  ¬  ¼¬  r  ¼ 

¬-0  0 1 ¼½ ¬- 0  0  1¼½ ¬-0  0  1 ¼½ 

«cos U  sin U  x r   »«1  0  x r   » =  sin U  cos U  y  0 1  y  ¼ 

¬  r  ¼¬  r  ¼ 

Page 20: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 20/24

  - 0  0  1 ¼½ ¬-0 0  1 ¼½ 

«cos U  sin U  x r  cos U y r   sinU x r   » =  sin U  cos U  x  sin U y cos U y  ¼ 

¬  r   r   r  ¼ 0  0  1 

-  ½ General Fixed-Point Scaling 

Scaling with respect to an arbitrary fixed point is not as simple as scaling with respect to the

origin. The procedure of scaling with respect to an arbitrary fixed point is: 

1.  Translate the object so that the fixed point coincides with the origin.

2.  Scale the object with respect to the origin.

3.  Use the inverse translation of step 1 to return the object to its original position.

The corresponding composite transformation matrix is: 

«1  0 x f   » «sx  0  0» «1  0  x f   »  «s x  0  xf   (1 s x )» 

0  1  0  s  0   0  1  y  ¼  = 0  s  y  (1  s ¬  f  ¼ ¬  y  ¼ ¬  f  ¼  ¬  yf   y  ¼ 0  0  1 0  0  1   0  0  1  0  0  1 -  ½ -  ½ -  ½  -  ½ 

General Scaling Direction 

Scaling along an arbitrary direction is not as simple as scaling along the x-y axis. The procedure of 

scaling along and normal to an arbitrary direction (s1 and s2), with respect to the origin, is: 

1.  Rotate the object so that the directions for s1 and s2 coincide with the x and y axes respectively.

2.  Scale the object with respect to the origin using (s1, s2).

3.  Use an opposite rotation to return points to their original orientation.

The corresponding composite transformation matrix is: 

«cos(U)  sin(U)  0»«s1  0  0»«cos U  sinU  0» 

¬sin(U)  cos(U)  0 ¼  ¬0  s2  0 ¼  ¬sin U  cos U  0 ¼ ¬  0  0  1¼  ¬ 0  0  1¼ ¬ 0  0  1¼ 

Page 21: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 21/24

-  ½  -  ½ -  ½ 

4.4 Other Transformations 

Reflection 

Reflection about the x axis: «x'»«1  0  0»«x» 

¬y' ¼= ¬0  1  0 ¼  ¬y¼ 

¬-1 ¼½  ¬-0  0  1¼½ ¬-1¼½ ie. x'=x; y'=-y 

Reflection about the y axis: 

«x'»«1 0 0»«x» 

¬y' ¼= ¬  0  1  0 ¼  ¬y¼ 

¬-1 ¼½  ¬-  0  0  1¼½ ¬-1¼½ ie. x'=-x; y'=y 

Flipping both x and y coordinates of a point relative to the origin: 

«x'»« 1 0 0»«x» ¬y' ¼= ¬  0  1  0 ¼  ¬y ¼ 

¬-1 ¼½  ¬-  0  0  1¼½ ¬-1¼½ ie. x'=-x; y'=-y 

Reflection about the diagonal line y=x: 

«x'»«0 1 0»«x» ¬¬y'

¼¼ =

¬¬1 0 0

¼¼ ¬¬y¼¼  ¬-1 ¼½ 

¬-0 0 1¼½ ¬-1¼½ ie. x'=y; y'=x 

Reflection about the diagonal line y=-x: «x'»« 0 1 0»«x» 

¬y' ¼= ¬1 0 0 ¼  ¬y ¼ ¬-1 ¼½  ¬- 0  0 1¼½ ¬-1¼½ ie. x'=-y; y'=-x 

Shear  

X-direction shear, with a shearing parameter shx, relative 

to the x-axis: 

«x'»  «1  shx  0»«x» 

¬y' ¼ = ¬0  1  0 ¼  ¬y ¼ ¬-1¼½  ¬-001¼½ ¬-1¼½ 

ie. x'=x+y*shx; y'=-x 

Exercise: 

Think of a y-direction shear, with a shearing parameter shy, relative to the y-axis.

Transformation Between 2 Cartesian Systems 

For modelling and design applications, individual objects may be defined in their ownlocal Cartesian References. The local coordinates must then be transformed to position

the objects within the overall scene coordinate system. 

Suppose we want to transform object descriptions from the xy system to the x'y' system: 

Page 22: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 22/24

The composite transformation is: 

«cos(U)  sin(U)  x r  »«1  0  x 0 

sin(U)  cos(U)  y  0  1  y ¬  r  ¬ 

0  0  1  0  0  1 -  ½- 

Page 23: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 23/24

 

Page 24: Cgms Lecture Notes

8/8/2019 Cgms Lecture Notes

http://slidepdf.com/reader/full/cgms-lecture-notes 24/24

 


Recommended