CS3500 Computer Graphics Module: History, 2D Graphics

Similar documents
Development of Computer Graphics

Introduction to Computer Graphics. Knowledge basic concepts 2D and 3D computer graphics

Development of Computer Graphics. mid 1950s SAGE air defense system command & control CRT, light pens

Graphics Hardware and Display Devices

Computer Graphics. Chapter 1 (Related to Introduction to Computer Graphics Using Java 2D and 3D)

Computer Graphics Introduction. Taku Komura

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT

Graphics and Interaction Transformation geometry and homogeneous coordinates

COMP30019 Graphics and Interaction Transformation geometry and homogeneous coordinates

Course Title: Computer Graphics Course no: CSC209

SAZ4C COMPUTER GRAPHICS. Unit : 1-5. SAZ4C Computer Graphics

Computer Graphics. Instructor: Oren Kapah. Office Hours: T.B.A.

Graphics Pipeline 2D Geometric Transformations

CSE528 Computer Graphics: Theory, Algorithms, and Applications

Institutionen för systemteknik

CS 130 Final. Fall 2015

The Rendering Pipeline (1)

UNIT 2 2D TRANSFORMATIONS

Computer Graphics. Bing-Yu Chen National Taiwan University

1. (10 pts) Order the following three images by how much memory they occupy:

Computer Graphics 1 Instructor Information. Books. Graphics? Course Goals and Outcomes. Where are computer graphics? Where are computer graphics?

Last week. Machiraju/Zhang/Möller/Fuhrmann

MMGD0206 Computer Graphics. Chapter 1 Development of Computer Graphics : History

Binghamton University. EngiNet. Thomas J. Watson. School of Engineering and Applied Science. State University of New York. EngiNet WARNING CS 560

National Chiao Tung Univ, Taiwan By: I-Chen Lin, Assistant Professor

Computer Graphics Lecture 2

3D GRAPHICS. design. animate. render

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

OpenGL Graphics System. 2D Graphics Primitives. Drawing 2D Graphics Primitives. 2D Graphics Primitives. Mathematical 2D Primitives.

CHAPTER 1 Graphics Systems and Models 3

Game Engineering: 2D

Section III: TRANSFORMATIONS

Unit 3 Transformations and Clipping

CSE528 Computer Graphics: Theory, Algorithms, and Applications

window World space (Object space)

Computer Graphics. Apurva A. Desai

2D and 3D Transformations AUI Course Denbigh Starkey

2D/3D Geometric Transformations and Scene Graphs

Introduction to Computer Graphics. Overview. What is Computer Graphics?

CSE328 Fundamentals of Computer Graphics

03 Vector Graphics. Multimedia Systems. 2D and 3D Graphics, Transformations

CS130 : Computer Graphics Lecture 2: Graphics Pipeline. Tamar Shinar Computer Science & Engineering UC Riverside

Chapter 5. Projections and Rendering

Graphics Systems and Models

(a) rotating 45 0 about the origin and then translating in the direction of vector I by 4 units and (b) translating and then rotation.

Computer Graphics and Visualization. Graphics Systems and Models

Books: 1) Computer Graphics, Principles & Practice, Second Edition in C JamesD. Foley, Andriesvan Dam, StevenK. Feiner, John F.

S U N G - E U I YO O N, K A I S T R E N D E R I N G F R E E LY A VA I L A B L E O N T H E I N T E R N E T

Welcome to CS 4/57101 Computer Graphics

CS 4300 Computer Graphics. Prof. Harriet Fell Fall 2012 Lecture 5 September 13, 2012

Today. Parity. General Polygons? Non-Zero Winding Rule. Winding Numbers. CS559 Lecture 11 Polygons, Transformations

COMP3421 Computer Graphics

Notes on Assignment. Notes on Assignment. Notes on Assignment. Notes on Assignment

QUESTION BANK 10CS65 : COMPUTER GRAPHICS AND VISUALIZATION

U.C. Berkeley, EECS, Computer Science TAKE HOME EXAM. Your Class Computer Account: DO NOT OPEN THIS INSIDE SODA HALL -- WAIT UNTIL YOU ARE ALONE!

R asterisation. Part I: Simple Lines. Affine transformation. Transform Render. Rasterisation Line Rasterisation 2/16

Line Drawing. Foundations of Computer Graphics Torsten Möller

CMSC427 Final Practice v2 Fall 2017

2D Object Definition (1/3)

Game Architecture. 2/19/16: Rasterization

The Graphics Pipeline and OpenGL I: Transformations!

Lecture 4. Viewing, Projection and Viewport Transformations

CS 464 Review. Review of Computer Graphics for Final Exam

CSE 167: Lecture #5: Rasterization. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

3D computer graphics: geometric modeling of objects in the computer and rendering them

Lecturer Athanasios Nikolaidis

Rasterization and Graphics Hardware. Not just about fancy 3D! Rendering/Rasterization. The simplest case: Points. When do we care?

UNIT 2. Translation/ Scaling/ Rotation. Unit-02/Lecture-01

Image Formation. Introduction to Computer Graphics. Machiraju/Zhang/Möller/Klaffenböck

CSE4030 Introduction to Computer Graphics

End-Term Examination

SRM INSTITUTE OF SCIENCE AND TECHNOLOGY

CS451Real-time Rendering Pipeline

Image Formation. Introduction to Computer Graphics Torsten Möller. Machiraju/Zhang/Möller

INTRODUCTION. Slides modified from Angel book 6e

SRM ARTS AND SCIENCE COLLEGE SRM NAGAR, KATTANKULATHUR

Midterm Exam Fundamentals of Computer Graphics (COMP 557) Thurs. Feb. 19, 2015 Professor Michael Langer

Homework Graphics Input Devices Graphics Output Devices. Computer Graphics. Spring CS4815

3D Mathematics. Co-ordinate systems, 3D primitives and affine transformations

0. Introduction: What is Computer Graphics? 1. Basics of scan conversion (line drawing) 2. Representing 2D curves

CS602 Midterm Subjective Solved with Reference By WELL WISHER (Aqua Leo)

COMP30019 Graphics and Interaction Scan Converting Polygons and Lines

Computer Science 426 Midterm 3/11/04, 1:30PM-2:50PM

Course Title. Computer Graphics. Course Code CE313. Theory : 03. Practical : 01. Course Credit. Tutorial : 00. Credits : 04. Course Learning Outcomes

Computer Graphics Solved MCQs -Part 2 MCQs Questions

Overview. Affine Transformations (2D and 3D) Coordinate System Transformations Vectors Rays and Intersections

Drawing Fast The Graphics Pipeline

Overview of Computer Graphics

CS 4204 Computer Graphics

Computer graphic -- Programming with OpenGL I

Homework Graphics Input Devices Graphics Output Devices. Computer Graphics. Spring CS4815

Line Drawing. Introduction to Computer Graphics Torsten Möller / Mike Phillips. Machiraju/Zhang/Möller

Computer Graphics CS 543 Lecture 1 (Part I) Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

CSC 8470 Computer Graphics. What is Computer Graphics?

(Refer Slide Time: 00:02:00)

The Graphics Pipeline and OpenGL I: Transformations!

About Computer Graphics

Computer Graphics I Lecture 11

U.C. Berkeley, EECS, Computer Science TAKE HOME EXAM. Your Class Computer Account: Your student ID #:

Lecture 1. Computer Graphics and Systems. Tuesday, January 15, 13

Transcription:

Module: History, 2D Graphics P. J. Narayanan Spring 2009

Course Content 2D Graphics: Concepts, Mathematics, Algorithms. Practice in OpenGL. 3D Graphics: Concepts, Mathematics, Hierarchical Modelling. Practice in OpenGL. Representation: Lines & Curves, Surfaces, Solids. Direct, implicit, parametric. Visible Surface Determination. Lighting and Shading. Ray Tracing.

Good programming skills in C or C++/ Background Required Knowledge of geometry: Points, vectors, transformations, etc. Data structures. Good imagination and visualization.

Text Books and Reference : Principles & Practice by Foley, van Dam, Feiner, Hughes. Indian Edition available. by Hearn and Baker. Indian Edition available. OpenGL Programming Guide by Neider, et. al.

Course Management Homework assignments, Programming assignments, lab test, mid-term tests, final exam Weightages of different components: 25-35% for the two tests. 25-35% for the final exam. 20-30% for programming assignments, lab test 10% for the rest (Written assignments, etc.)

What is? Create drawings, pictures, and images by the computer. Generate and manipulate representations and models required for this. Create algorithms to produce ultra-realistic images. Do all these very fast.

Application Areas User interfaces Computer aided design (Civil/Mech/VLSI) Visualization of scientific & engineering data Art Virtual Reality Entertainment: Great computer games!

Quick History Whirlwind Computer (1950) from MIT had computer driven CRTs for output. SAGE air-defense system (mid 50s) had CRT, lightpen for target identification. Ivan Sutherland s Sketchpad (1963): graphics system. Early interactive CAD/CAM industry saw the potential of computer graphics in drafting and drawing.

GE s DAC system (1964), Digitek system, etc. Systems were prohibitively expensive and difficult to use. Special display processors or image generators were used for high-end graphics. Graphics workstations by Silicon Graphics came out in early eighties.

Popular Graphics Graphics became popular only after mass-produced personal computers became a reality in mid to late eighties. Graphics Accelerators: on board hardware to speed up graphics computations. Accelerators were expensive until mid nineties! Very high end performance is available economically today.

Graphics Programming Device dependent graphics in early days. 3D Core Graphics system was specified in SIGGRAPH 77. (Special Interest Group on Graphics) GKS (Graphics Kernel System): 2D standard. ANSI standard in 1985. GKS-3D: 1988. PHIGS: Programmer s Hierarchical Interactive Graphics System. (ANSI 1988)

Open GL: current ANSI standard. Evolved from SGI s GL (graphics library). Window system independent programming. GLUT (utility toolkit) for the rest. Popular. Many accelerators support it. DirectDraw/Direct3D: Microsoft s attempt at it! Java3D: Java-based toolkit. Desirable: High level toolkits.

Graphics Output Devices Printers: character, line, page, dot-matrix, ink-jet, laser. Monochrome or Colour. Plotters: Single pen, multipen. CRT (Cathode Ray Tube): Colour/mono. LCD displays: Colour/mono. Projectors: CRT/LCD etc. Colour/mono. Film: Photographic film recorders.

Keyboard, mouse: To control display. Joystick: Position control. Pad: Line/curve/position input. Scanner: Pictures to digital images. Camera: World to digital images. Graphics Input Devices

How can a computer draw pictures? How graphics? How do we draw pictures? Using a number of strokes of a brush/pencil. This was the early model for graphics: Graphics. called Vector Intuitive. Maps directly to plotters, CRT.

Raster Graphics CRT became the most popular graphics device. CRTs are best used in raster scanning mode. A 2D image can be displayed directly.

Vector and Raster Graphics Vector graphics: Like how we draw. strokes. Think in terms of Raster graphics: Discretize the image to a grid and fine which pixels are to be coloured with what.

Comparison: Vector Graphics Intuitive as we think in terms of strokes. Accurate: No approximations involved. Refresh Speed: Depends on scene complexity Shading is difficult to achieve Expensive.

Comparison: Raster Graphics Refresh Speed: Independent of scene complexity Shading is not difficult Inexpensive Additional step of rasterization to convert from strokes to pixels. Aliasing effects: Only a discrete approximation

Raster Graphics Process Primitives are rasterized to the framebuffer. Framebuffer is raster scanned continuously and automatically to the output device.

System Architecture Graphics Primitives Rasterization (Scan conversion) Frame Buffer

Compose out of basic shapes How to Draw A House? drawrectangle(v1, v2, v3, v4); drawtriangle(v2, v3, v5); drawrectangle(... ); drawrectangle(... ); drawrectangle(... ); drawcircle(... ); // Main part // Roof // Door // Window // Chimney // Sun As simple as that! Now you know everything!

Resulting House

2D Graphics Primitives Point. Line, Line strip, Line loop. Triangle, Triangle strip, Triangle Fan, Quad, Quad strip, Polygon. Why not circles, ellipses, hyperbolas?

Graphics Attributes Colour, Point width. Line width, Line style. Fill, Fill Pattern.

Points Specified by coordinates (x, y). Respectively the projections onto the X and Y axes. Axes need not be orthogonal, common. though that is more

Points in OpenGL glbegin(gl POINTS); glvertex2i(10, 20); glvertex2f(30.0, 40.0); glvertex2u(5, 7); glvertex2d(-15.0, 17.0); glend();

Lines Specified by the end points. glbegin(gl LINES); glvertex2i(10, 20); glvertex2f(30.0, 40.0); glvertex2u(5, 7); glvertex2d(-15.0, 17.0); glend(); GL LINE STRIP and GL LINE LOOP.

Triangles Three vertices make a triangle glbegin(gl TRIANGLES); glvertex2i(10, 20); glvertex2f(30.0, 40.0); glvertex2u(5, 7); glend();

Triangle Strips Three vertices make a triangle glbegin(gl TRIANGLE STRIP); glvertex2i(10, 20); glvertex2f(30.0, 40.0); glvertex2u(5, 7); glvertex2d(-15.0, 17.0); glend(); N 2 polygons from N vertices.

A polygon is made up of a number of vertices! glbegin(gl POLYGON); glvertex2i(10, 20); glvertex2f(30.0, 40.0); glvertex2u(5, 7); glvertex2d(-15.0, 17.0); glend(); Polygons

Specifying Colours Done using Red, Green, and Blue values. Each from 0.0 (none) to 1.0 (full). R-G-B form the additive primary colours. Mix them in different proportions to get other colours. OpenGL remembers a current colour with which everything is painted.

A Yellow Polygon In OpenGL, glcolor3f(r, g, b); glcolor3f(1.0, 1.0, 0.0); glbegin(gl POLYGON); glvertex2i(10, 20); glvertex2f(30.0, 40.0); glvertex2u(5, 7); glvertex2d(-15.0, 17.0); glend();

A Multicolour Line glbegin(gl LINES); glcolor3f(1.0, 0.0, 0.0); glvertex2d(13.0, 15.0); glcolor3f(0.0, 0.0, 1.0); glvertex2f(30.0, 40.0); glend(); Will draw a line that smoothly changes from red to blue. Similarly for polygons.

Filled and Unfilled Polygon Polygon consists of the edges only or also the interior? Polygon has 2 faces: front and back. (More about it later) Each can be one of: GL POINT, GL LINE, GL FILL. glpolygonmode(gl FRONT, GL FILL); Colour interpolation for the whole triangle.

Textures Graphics systems allow one to paste a picture (called a texture) on a polygon. Define an image as the current texture. (gif, jpg, png, etc.) Texture coordinates (s, t) from 0.0 to 1.0 for the image. Specify texture coordinates for each polygon vertex. The picture gets pinned to the polygon verices, stretching or compressing as necessary.

A Textured Triangle // Define the texture using an image glbegin(gl POLYGON); glvertex2i(10, 10); gltexcoord2f(0.0, 0.0); glvertex2f(20.0, 10.0); gltexcoord2f(0.0, 1.0); glvertex2u(20, 20); gltexcoord2f(1.0, 1.0); glend(); Colour given by the texture and colour of the polygon can be combined in different ways.

Summary Graphics toolkit fills the Frame Buffer with a picture. Raster scan hardware displays it automatically. Frame Buffer is a 2D array that can be filled by a program. Pictures are drawn using basic primitives. Basic primitives: point, line, polygon. Attributes: point/line width, colour. Texturing helps bring realism quickly.

2D Transformations Translations, Rotations, Scaling, Shearing. View 1: a point undergoing these operations and ending up with different coordinates in the same coordinate system. View 2: The coordinate frame undergoing such chanages. Points end up with different coordinates. A point is represented using 2 numbers (x,y) that are the projections on to the respective coordinate axes.

Translation Translate a point by (a,b). Points coordinates become (x + a,y + b). In vector form, P = P + T. Or, coordinate frame translates by T. transformed. All points get Distances, angles, parallelism are all maintained.

Rotate a point about origin CCW by angle θ. x = xcos θ y sin θ, y = xsin θ + y cos θ. We are more comfortable with P = R P or [ ] [ ][ ] x cos θ sin θ x = y sin θ cos θ y Coordinate frame rotating the other way? Invariants: distances, angles, parallelism. Rotation

Scale along X, Y directions by s and u. x = s x, y = u y. Non-uniform Scaling We are more comfortable with P = S P or [ ] [ ][ ] x s 0 x = y 0 u y Coordinate system undergoing scaling? Invariants: parallelism. (Angles also for uniform scaling.)

Shearing Add a little bit of x to y (or vice versa). x = x + t y, y = y, alternately expressed as [ x y ] = [ 1 t 0 1 ] [ x y ] Rectangles can become parallelograms. Invariants: parallelism.

General Transformation Negative entries in a matrix indicate reflection. [ ] [ ][ ] x 1 0 x = y 0 1 y A general matrix combines rotation, scaling, shearing, and reflection. Translation alone stands out as a vector addition, instead of matrix-vector product. Can that be brought on board also?

Uniform Way to Handle All Homogeneous Coordinates: Add a scale factor w to each coordinate. A point becomes [x,y,w] T Real coordinates are: (x/w, y/w). Now, translation is also is: P = T P For a point: Rotation followed by translation followed by scaling, followed by another rotation: P = R 2 STR 1 P. All matrices are 3 3. Last row is [0 0 1].

2D Transformations: Summary Rotation, Translation, Scaling, Shearing, Reflection are all matrix operations using Homogeneous Coordinates. Operations can be combined into a composite matrix. Each point can then undergoes one matrix-vector product. 2D coordinates have become 3-vectors and the matrices are 3 3, though of a special form.

Objects Away from Origin Rotation: Object seems to translate unintentionally when rotated! Scaling: Object moves closer to/farther from the origin when rotated. These operations are performed about a point. The transformations were about the origin.

Rotations about Other Points How about in place rotation? That is, rotation about an arbitrary point? Idea: Translate to have that point at origin, rotate/scale about origin, translate back! R C (θ) = T(C) R(θ) T( C) Can do any numbers of this.

Composition of Matrices A sequence of operations can be reduced to a single, composite, matrix. Saves computations. The operations are not commutative. Example: R(π/4) and T(5,0). TR will keep point (0,0) on X axis to (5,0). RT will take it to (5/ 2,5/ 2). Matrix multiplication also is not commutative in general.

TR RT

Two Views of R and T T R: Rotate point by π/4. (stays at (0,0)). Translate by (5, 0). (Goes to (5, 0)). Suppose the coordinate frame first translates by (5,0) and then rotates by π/4, what are the new coordinates of a point that was at (5,0) earlier? Point going through changes in a coordinate frame when viewed from right to left. Coordinate system going through the same transformations when viewed from left to right.

Frame Doing the Opposite? Point rotates by θ Coordinate frame rotates by θ. Point translates by T Frame translates by T. Point scaled by s Frame expands by s Matrix equation P = MP relates the coordinates in the XY and the X Y coordinate frames.

Relating Coordinates in Two Frames Combinations of T(5,0) and R(π/4) TR RT

Coordinates P(t)? Rolling Wheel P

P(t) =?? Y

P(t) = T 1 (r,θ(t)) P (t) Y Y

P(t) = T 1 (r,θ)r(θ(t)) P (t) Y Y Y

P(t) = T 1 RT 2 (p(t)) P Y Y Y Y

Final Transformation P(t) = T 1 (r,θ(t)) R(θ(t)) T 2 (p(t)) P T 1 (t) = r θ(t) = r ω t R(θ) = R(θ), normal rotation matrix. T 2 (t) = T(p(t)) = T(v t) P = [0,0,1] T Lot simpler than thinking about it all together.

Rotation: Alternate View [cos θ sin θ] T is the axis that rotates to the X-axis. Rows: Direction vectors that rotate and sit on the respective coordinate axes. Cols: Direction vectors to which the coordinate axes go after rotation.

Why Alternate Views? The combined effects are easy to figure out, given a series of operations. Reverse is called for often in Graphics. Given the model for a table, what are the transformations that would place it at the center of the table with 37 degrees to the northern wall? Such intuitions help in solving this problem.

A Problem C C D B A D B

Transformation Computation How do we bring D to origin and BC parallel to the Y axis? First translate by D. Rotate such that the unit vector u along BC sits on the Y axis. The other vector is orthogonal to it. Rotation matrix: [ uy u x u x u y ] or [ uy u x u x u y Difference? Which direction is aligned to the X-axis? ].

Another Problem A clock is hanging from a nail fixed to a flat plate. The plate is being translated with a velocity v and acceleration a. The pendulum of the clock swings back and forth with a time period of 5 seconds and a max angle of ±θ. An ant travels from the bottom tip of the pendulum up to the centre. How do we compute the ant s position with respect to a fixed coordinate system coplanar with the plate?

Composite Transformations T R: Translation vector appears as last column. Translation followed by rotation: more complex. M = M 1 M 2 M k P. Points get transformed and stay in the same coordinate frame when viewed from right to left. Coordinate frames get transformed to new ones with subsequent operations expressed in the new frame when viewed from left to right.

Change of Coordinate Frame P G = (1,2), P B = (4,4). T(3, 2) aligns Blue to Green. P B = T(3,2) P G. 2 2 3 P 1 x 2 + y 2 = r 2 and (x 3) 2 + (y 2) 2 = r 2 P B = T(3,2) P G. 2 3

Viewport Transformation Graphics toolkit like OpenGL computes a standard square image of size -1 to +1 in X and Y. The viewport transformation maps it to the actual window on screen. Map x range from 1 1 to 0 W and y range from 1 1 to 0 H. How do we decompose this into steps?

Viewport Txform: on Points Let us look at the (1,1) corner. First set the sizes right: S( W 2, H 2 ) Translate to have origin at SouthWest corner: T( W 2, H 2 ) Overall transformation: M = T( W 2, H 2 ) S(W 2, H 2 ) M = W W 2 0 2 0 H 2 H 2 0 0 1

Viewport Tx: On Coord Frames-1 Start with a W H window with origint at SW corner Scale so that the size is 2 2: S( W 2, H 2 ) The centre of the rectange is now at (1,1). Translate the origin to the centre: T(1,1). Overall transformation: S( W 2, H 2 ) T(1,1) = M. Can fix centre first, then size: T( W 2, H 2 ) S(W 2, H 2 ) = M

Viewport Tx: On Coord Frames-2 glviewport(0, 0, W, H) S(2, 2) T( 0.5, 0.5) S(1/W,1/H) 1 1 0.5 0.5 1 H 1 W P C = P r and P o = P W. What s the transformation? Scale to an expanded frame, translate by ( 1 2, 1 2 ), scale

to a shrunken coordinate frame. P r = S(2,2)P b, P b = T( 1 2, 1 2 )P g, P g = S( 1 W, 1 H )P o P W = S 1 ( 1 W, 1 H ) T 1 ( 1 2, 1 2 ) S 1 (2,2) P C. Viewport transform: S(W,H) T(0.5,0.5) S(0.5,0.5) = M

General Viewport Txform General command: glviewport(l, b, r, t). Translate so the range of x,y is 0 2. Scale so x varies from 0 to (r l) and y varies from 0 to (t b). Translate so x range is y range is b to t. l to r and

Matrix for this? T(l,b) S( r l 2, t b 2 ) T(1,1) = r l r+l 2 0 2 0 t b 2 t+b 2 0 0 1 [ 1 1 1] T maps to [l b 1] T. [1 1 1] T maps to [r t 1] T.