Presentation is loading. Please wait.

Presentation is loading. Please wait.

2M050: Computer Graphics Jack van Wijk vanwijk@win.tue.nl HG6.71.

Similar presentations


Presentation on theme: "2M050: Computer Graphics Jack van Wijk vanwijk@win.tue.nl HG6.71."— Presentation transcript:

1 2M050: Computer Graphics Jack van Wijk HG6.71

2 Aims Introduce basic graphics concepts and terminology
Base for development of 2D interactive computer graphics programmes (OGO 2.3)

3 Literature Computer Graphics - C Version Donald Hearn - M. Pauline Baker 2nd edition - international edition Prentice Hall

4 Overview Introduction Geometry Interaction Raster graphics

5 Introduction What is Computer Graphics? Applications
Computer Graphics in Eindhoven Raster/vector graphics Hardware

6 Computer Graphics Computer Graphics is ubiquitous:
Visual system is most important sense: High bandwidth Natural communication Fast developments in Hardware Software

7 Computer Graphics Image Analysis Mathematical Model Image
(pattern recognition) Mathematical Model Image Image Synthesis (Rendering) Modeling Image processing

8 Supporting Disciplines
Computer science (algorithms, data structures, software engineering, …) Mathematics (geometry, numerical, …) Physics (Optics, mechanics, …) Psychology (Colour, perception) Art and design

9 Applications Computer Aided Design (CAD)
Computer Aided Geometric Design (CAGD) Entertainment (animation, games, …) Geographic Information Systems (GIS) Visualization (Scientific Vis., Inform. Vis.) Medical Visualization

10 Computer Graphics Eindhoven
Current: Information visualisation Interactive 3D design Virtual reality Past: Rasterization, Animation Jack van Wijk Kees Huizing Arjan Kok Robert van Liere Wim Nuij Alex Telea Huub van de Wetering

11 Interactive Computer Graphics
User input Application Screen image

12 Graphics pipeline User Edit Model Map Geometry, colour Screen Display

13 Representations in graphics
Vector Graphics Image is represented by continuous geometric objects: lines, curves, etc. Raster Graphics Image is represented as an rectangular grid of coloured squares

14 Vector graphics Graphics objects: geometry + colour
Complexity ~ O(number of objects) Geometric transformation possible without loss of information (zoom, rotate, …) Diagrams, schemes, ... Examples: PowerPoint, CorelDraw, ...

15 Raster graphics Generic Image processing techniques
Geometric Transformation: loss of information Complexity ~ O(number of pixels) Jagged edges, anti-aliasing Realistic images, textures, ... Examples: Paint, PhotoShop, ...

16 Rasterization, Pattern recognition
Conversion Vector graphics Rasterization, Pattern recognition Scan conversion Raster graphics

17 Hardware Vector graphics Raster graphics Colour lookup table
3D rendering hardware

18 Vector Graphics Hardware
move 10 20 line 20 40 ... char O char R Display list continuous & smooth lines no filled objects random scan refresh speed depends on complexity of the scene V E C T O R Display Controller

19 Raster Graphics Hardware
7 6 Frame buffer Video Controller R A S T E R jaggies (stair casing) filled objects (anti)aliasing refresh speed independent of scene complexity pixel scan conversion resolution bit planes

20 Colour Lookup Table R G B 1 2 4 7 ... colour index 7 6 Frame buffer CLUT: pixel = code True colour: pixel = R,G,B

21 3D rendering hardware Geometric representation: Triangles
Viewing: Transformation Hidden surface removal: z-buffer Lighting and illumination: Gouraud shading Realism: texture mapping Special effects: transparency, antialiasing

22 2D geometric modelling Coordinates Transformations
Parametric and implicit representations Algorithms

23 Coordinates Point: position on plane p = (px , py) x = (x, y)
x = (x1 , x2) x = x1 e1 + x2 e2, e1 = (1, 0), e2 = (0, 1) Vector: direction and magnitude v = (vx , vy), etc. y p v x

24 Vector arithmetic Addition of two vectors: v + w = (vx + wx , vy + wy)
Multiplication vector-scalar: av = (avx , avy) y v+w w v x y 2v v x

25 Coordinate systems world train wheel image

26 Why transformations? Model of objects Viewing
world coordinates: km, mm, etc. hierarchical models: human = torso + arm + arm + head + leg + leg arm = upperarm + lowerarm + hand … Viewing zoom in, move drawing, etc.

27 Transformation types Translate according to vector v:
t = p + v Scale with factor s: s = sp Rotate over angle a: rx = cos(a)px - sin(a)py ry = sin(a)px + cos(a)py y s t r v p a x

28 Homogeneous coordinates
Unified representation of rotation, scaling, translation Unified representation of points and vectors Compact representation for sequences of transformations Here: convenient notation, much more to it

29 Homogeneous coordinates
Extra coordinate added: p = (px , py , pw) or x = (x, y, w) Cartesian coordinates: divide by w x = (x/w, y/w) Here: for a point w = 1, for a vector w = 0

30 Matrices for transformation

31 Direct interpretation
y’ (x, y) y (x’,y’) x b a t x’

32 Translation matrix

33 Scaling matrix

34 Rotation matrix

35 Sequences of transformations
y’’’ x’’’ x’ y’ y x’’ y’’ x Sequences of transformations can be described with a single transformation matrix, which is the result of concatenation of all transformations.

36 Order of transformations
x’’ y’’ x’’ y’’ x’ y’ x’ y’ x y x y Matrix multiplication is not commutative. Different orders of multiplication give different results.

37 Order of transformations
Pre-multiplication: x’ = M n M n-1…M 2 M 1 x Transformation M n in global coordinates Post-multiplication: x’ = M 1 M 2…M n-1 M n x Transformation M n in local coordinates, i.e., the coordinate system that results from application of M 1 M 2…M n-1

38 Window and viewport Viewport: Area on screen to be used for drawing.
Unit: pixels (screen coordinates) Note: y-axis often points down Window: Virtual area to be used by application Unit: km, mm,… (world coordinates) (800,600) (600,400) (200,200) (0,0) (2,1) (-2,-1)

39 Window/viewport transform
Determine a matrix M, such that the window (wx1, wx2, wy1, wy2) is mapped on the viewport (vx1, vx2, vy1, vy2): A = T(-wx1, -wy1) B = S(1/(wx2-wx1), 1/(wy2-wy1)) A C = S(vx2-vx1 ,vy2-vy1)B M = T(vx1, vy1) C

40 Forward and backward Drawing: (meters to pixels) Use x’ = Mx
(vx2, vy2) Viewport x’:screen coordinates Drawing: (meters to pixels) Use x’ = Mx Picking:(pixels to meters) Use x = M-1x’ (vx1, vy1) Drawing Picking (wx2, wy2) Window: x: user coordinates (wx1, wy1)

41 Implementation example
Suppose, basic library supports two functions: MoveTo(x, y: integer); LineTo(x, y: integer); x and y in pixels. How to make life easier?

42 State variables Define state variables:
Viewport: array[1..2, 1..2] of integer; Window: array:[1..2, 1..2] of real; Mwv, Mobject: array[1..3, 1..3] of real; Mwv: transformation from world to view Mobject: extra object transformation

43 Procedures Define coordinate system: SetViewPort(x1, x2, y1, y2):
Update Viewport and Mwv SetWindow(x1, x2, y1, y2): Update Window and Mwv

44 Procedures (continued)
Define object transformation: ResetTrans: Mobject := IdentityMatrix Translate(tx, ty): Mobject := T(tx,ty)* Mobject Rotate(alpha): Mobject := R(tx,ty)* Mobject Scale(sx, sy): Mobject := S(sx, sy)* Mobject

45 Procedures (continued)
Handling hierarchical models: PushMatrix(); Push an object transformation on a stack; PopMatrix() Pop an object transformation from the stack. Or: GetMatrix(M); SetMatrix(M);

46 Procedures (continued)
Drawing procedures: MyMoveTo(x, y): (x’, y’) = Mwv*Mobject*(x,y); MoveTo(x’, y’) MyLineTo(x,y): LineTo(x’, y’)

47 Application DrawUnitSquare: Main program: MyMoveTo(0, 0); Initialize;
MyLineTo(1, 0); MyLineTo(1, 1); MyLineTo(0, 1); MyLineTo(0, 0); Initialize: SetViewPort(0, 100, 0, 100); SetWindow(0, 1, 0, 1); Main program: Initialize; Translate(-0.5, -0.5); for i := 1 to 10 do begin Rotate(pi/20); Scale(0.9, 0.9); DrawUnitSquare; end;

48 Puzzles Modify the window/viewport transform for a display y-axis pointing downwards. How to maintain aspect-ratio world->view? Which state variables? Define a transformation that transforms a unit square into a “wybertje”, centred around the origin with width w and height h.

49 Geometry Dot product, determinant Representations Line Ellipse Polygon

50 Good and bad Good: symmetric in x and y Good: matrices, vectors
Bad: y = f(x) Good: dot product, determinant Bad: arcsin, arccos

51 Dot product w q v |w| cos q

52 Dot product properties

53 Determinant Det(v, w): signed area of parallellogram
q v v q w Det(v, w): signed area of parallellogram Det(v, w) = 0 iff v and w are parallel

54 Curve representations
Parametric: x(t) = (x(t), y(t)) Implicit: f(x) = 0

55 Parametric line representation
Given point p and vector v: x(t) = p + vt Given two points p and q: x(t) = p + (q-p)t , or = pt + q(1-t) y t q p x v

56 Parametric representation
x(t) = (x(t), y(t)) Trace out curve: MoveTo(x(0)); for i := 1 to N do LineTo(x(i*Dt)); Define segment: tmin £ t £ tmax

57 Implicit line representation
(x-p).n = 0 with n.v = 0 n is normal vector: n = [-vy , vx] Also: ax+by+c=0 y p n x v

58 Implicit representation
f = 0 f =-1 f = 1 f =-2 f >0 f <0

59 Circle y r x

60 Ellipse y b a x

61 Generic ellipse a b y c x

62 Some standard puzzles Conversion of line representation
Projection of point on line Line/Line intersection Position points/line Line/Circle intersection

63 Conversion line representations
u a

64 Projection point on line
q u q’ q-a s q w a

65 Intersection of line segments
u v a b

66 Solving for s and t s t u v a b

67 Position points/line u a s c b

68 Line/circle intersection
y u r x t a

69 Polygons Sequence of points pi, i = 1,…, N, connected by straight lines Index arithmetic: modulo N p0 = pN , pN+1 = p1 , etc. p1 p2 pN pi

70 Regular N-gon triangle square pentagon hexagon octagon

71 Convex and concave Convex: Concave:
each line between two arbitrary points inside the polygon does not cross its boundary Concave: not convex

72 Convexity test pi+1 pi+1 pi pi pi-1 pi-1 Convex Concave

73 Polygon area and orientation
pi pi+1 c

74 Point/polygon test 2 1 3

75 Point/polygon test (cntd.)
Beware of special cases: Point at boundary v parallel to edge c + vt through vertex

76 Puzzles Define a procedure to clip a line segment against a rectangle.
Define a procedure to calculate the intersection of two polygons. Define a procedure to draw a star. Same, with the constraint that the edges pi-1 pi and pi+2 pi+3 are parallel.

77 Introduction Curve Modelling
Jack van Wijk TU Eindhoven

78 Overview curve modelling
Parametric curves Requirements Concepts Lagrangian interpolation Bézier curve B-spline Cubic splines

79 Parametric curves t p(t) p’(t)

80 Tangent line to curve t s q(s) p(t) p’(t)

81 Example q(s) s p’(t) t p(t)

82 Curve modelling Problem: How to define a smooth curve? Solution:
Specify a sequence of points pi , i = 1,…, N, (control-points); Generate a smooth curve that interpolates or approximates these control-points.

83 Requirements Smooth Local control Intuitive and easy to use
no discontinuities in direction and curvature; Local control Change of a point should have only local effect; Intuitive and easy to use no oscillations, variation diminishing Approximate or interpolate?

84 Parametric interpolation

85 Linear interpolation of two points

86 Linear interpolation of N points
1 wi 1 2 3 4 5 t

87 Linear interpolation Not Smooth Local control
Intuitive and easy to use Interpolate

88 Lagrangian interpolation - 1

89 Lagrangian interpolation - 2

90 Lagrangian interpolation - 3

91 Lagrangian interpolation - 4
Smooth no discontinuities in direction and curvature; NO local control Wild oscillations, not variation diminishing! Interpolating

92 Bézier curve - 1 Puzzle: Define a smooth curve that interpolates the first and last point and approximates the others. p4 p3 p1 p2

93 Bézier curve - 2 Solution for N=3: p2 p(t) q2 q1 p1 p3

94 Bézier curve - 3 Solution for N=4: p2 p3 p(t) p1 p4

95 Bézier curve - 4

96 Bézier curve - 5

97 Bézier curve - 6 General Bézier curve: Degree = #points-1 Smooth
no discontinuities in direction and curvature; NO local control Variation diminishing, convex hull property Interpolates first and last, further approximating

98 Convex hull property

99 Convex hull property example
Curve outside convex hull Curve inside convex hull

100 B-splines Piecewise polynomial, locally non-zero
Degree: user definable Continuity: degree-1 first degree: continuous in position second degree: continuous in tangent third degree: continuous in curvature

101 Quadratic B-spline

102 Cubic B-spline

103 B-splines - 3 General B-spline: Degree: from 1 to N-1
Smooth (if degree > 1) Local control Variation diminishing, convex hull property Approximating

104 Cubic splines - 1 Most popular in Computer Graphics: powerful simple
inflection points, continuity simple low degree polynomials local control Many versions: Bézier, B-spline, Catmull-Rom,...

105 Cubic splines - 2

106 Cubic splines - 2

107 Cubic splines - 3

108 Tangent vector p’(t) p(t) t

109 Significant values p(0) : startpoint segment
p’(0) : tangent through startpoint p(1) : endpoint segment p’(1) : tangent through endpoint p’(0) p(1) t p’(1) p(0)

110 Cubic Bézier curve p1 p2 p0 p3

111 Joining two Bezier segments
Positional continuity: p3 = q0 Tangential continuity: p3- p2 // q1- q0 p1 p2 p3 p0 q0 q3 q1 q2

112 Cubic B-spline curve p1 p2 p0 p3

113 Conversion - 1

114 Conversion - 2

115 Puzzle 1: Hermite spline

116 Puzzle 2: Limit on interpolation
Find out why a curve that interpolates the control points, stays within the convex hull, and is smooth cannot exist, both graphically and mathematically.

117 Puzzle 3: Split Bezier curve
Find a recipe to split a cubic Bezier curve segment into two segments: p1 p2 q2 q3 q4 q1 q5 p0 p3 q0 q6

118 Finally... Curves: interpolation of points Demo program:
Interpolation is generally applicable, f.i. surfaces: interpolation of curves Demo program:

119 B-splines - 2


Download ppt "2M050: Computer Graphics Jack van Wijk vanwijk@win.tue.nl HG6.71."

Similar presentations


Ads by Google