# 2IV60 Computer graphics set 7: Basic Geometric Modeling Jack van Wijk TU/e.

## Presentation on theme: "2IV60 Computer graphics set 7: Basic Geometric Modeling Jack van Wijk TU/e."— Presentation transcript:

2IV60 Computer graphics set 7: Basic Geometric Modeling Jack van Wijk TU/e

Geometric modeling 1 The world is full of all kind of objects: Trees, people, cars, housed, clouds, rocks, waves, pencil sharpeners, fire, mountains, plants, … How can we describe these, such that they are -easy to enter; -easy to process; -easy to display? Complex problem, HUGE topic!

Geometric modeling 2 Input: by user -preferably on a high level, customized to application by scanning objects -laser scanners: points -medical scanners: voxels

Geometric modeling 3 triangles User Scanner conversion graphics pipeline image 3D points, voxels Instructions, specifications

Smooth Curves (2D) Two standard methods: Parametric: X(t) = (x(t), y(t)) Implicit: f(x, y) = 0 H&B A-8,9:772-774

Parametric description line 1 Given point P and vector V: X(t) = P + Vt Given two points P en Q: X(t) = P + (Q  P)t, or = P(1  t) + Qt Segment: t min  t  t max x y P V t Q H&B A-8,9:772-774

Parametric description curve X(t) = (x(t), y(t)) Drawing a curve in a simple way, approximate with a polyline: MoveTo(X(0)); for i := 1 to N do LineTo(X(i  t)); H&B A-8,9:772-774

Drawing a curve with OpenGL 1 X(float t):Point; { P[0]= …; P[1]=…; P[2]=…; return P; }; DrawX(); { N = 12; // use symbolic name for the number of segments int i; float dt := (tmax – tmin)/N; glBegin(GL_LINE_STRIP); // GL_LINE_LOOP if closed curve for (i = 0; i <= N; i++) // bounds here: 0 - N glVertex3fv(X(tmin + i*dt)); glEnd(); } H&B 4-5:82-83

Drawing a curve with OpenGL 2 Using too few points: –jagged appearance; Using too many points: –slow, –fat appearance (many segments per pixel). H&B 4-5:82-83

Drawing a curve with OpenGL 3 Decide on #points: –characteristics shape; –size of shape on screen. –beforehand or adjust automatically. H&B 4-5:82-83

Implicit description line (X  P).N = 0 with N.V = 0 (N: normal vector) Also: ax+by+c=0 x y P V N H&B A-8,9:772-774

Implicit description curve f >0 f <0 f = 0 f =-1 f = 1 f =-2 H&B A-8,9:772-774

Circle x y r H&B A-8,9:772-774

Curves (3D) Two standard methods: Parametric: X(t) = (x(t), y(t), z(t)) Implicit: f(x, y, z) = 0 and g(x, y, z) = 0 Intersection of two surfaces H&B A-8,9:772-774

Circle in 3D x y r z H&B A-8,9:772-774

Surfaces H&B A-8,9:772-774 Polyhedra Parametric surfaces Implicit surfaces

Polyhedra Set of polygons that describe the surface of an object Often only triangles (hardware!) Many variations for storage (zie H&B 4-7) Often additional information per vertex (color, normal, texture, …) H&B 13-1:418

Curved surfaces Parametric: X(u,v) = (x(u,v), y(u,v), z(u,v)) Implicit: f(x, y, z) = 0 H&B 13-3:421-422

Sphere 1 x y z v constant, u varies u constant, v varies H&B 13-4:422-424

Sphere 2 x y H&B A-8,9:807-808 z v constant, u varies u constant, v varies u v

Sphere 3 x y z H&B 13-4:422-424

Partial Derivatives 1 H&B A10:774

Partial Derivatives 2 H&B A10:774

Normal on surface 1 H&B A-10:774-775 T(u)T(u) P(u)P(u) u

Normal on surface 2 T u (u,v) P(u,v) u T v (u,v) v H&B A-10:774-775

Normal on surface 3 T u (u,v) P(u,v) u T v (u,v) v N H&B A-10:774-775

Normal on surface 4 x y z v u TuTu TvTv N H&B A-10:774-775

Normal on surface 5 H&B A-10:774-775

Normal on surface 6 N(x,y,z) (x,y,z) f(x,y,z)=0 H&B A-10:774-775

Normal on surface 7 f >0 f <0 f = 0 H&B A-10:774-775

Normal on surface 8 x y z N H&B A-10:774-775

Quadratic surfaces 1 x y z H&B 13-4:422-424

Quadratic surfaces 2 x y z a c b H&B 13-4:422-424

Quadratic surfaces 3 (0, y, z) y as rara r z as y (x, y, z) y as x as H&B 13-4:422-424

Drawing surfaces with OpenGL 1 Quadratic surfaces: GLU and GLUT offer some basic functions: –glutSolidSphere(r, nLon, nLat); –glutSolidCone(rbase, rheight, nLon, nLat); –glutSolidTeapot(size); –gluSphere, gluCylinder, Teapot? –Google: Utah teapot; –Google: Stanford bunny. H&B 13-6:425-431

Drawing surfaces with OpenGL 1 Quadratic surfaces: GLU and GLUT offer some basic functions: –glutSolidSphere(r, nLon, nLat); –glutSolidCone(rbase, rheight, nLon, nLat); –glutSolidTeapot(size); –gluSphere, gluCylinder, Alternative: Define your own, custom versions, based on standard way to render parametric surfaces. H&B 13-6:425-431

Drawing surfaces with OpenGL 2 X(float u, v):Point; { P[0]= …; P[1]=…; P[2]=…; return P; }; DrawX(); { NU, NV = 12; // use symbolic names for numbers of points again int i, j; float du := (umax – umin)/NU; float dv := (vmax – vmin)/NV; for (j = 0; j < NV; j++) { glBegin(GL_QUAD_STRIP); for (i = 0; i <= NU; j++) { glVertex3fv(X(umin + i*du, vmin + j*dv)); glVertex3fv(X(umin + i*du, vmin + (j+1)*dv)); } glEnd(); }

Drawing surfaces with OpenGL 3 Many variations possible –using triangle strips; –inserting normals, shading info, texture,... Selecting the number of facets: –too few: jagged appearance; –too many: slow; –decide beforehand or automatically, based on size on screen and curvature surface. H&B 4-5:82-83

Next… We now know how to define basic objects. Stay tuned for splines: arbitrary curves and curved surfaces. But first: let’s consider illumination and shading.

Download ppt "2IV60 Computer graphics set 7: Basic Geometric Modeling Jack van Wijk TU/e."

Similar presentations