SlideServe
Menu
Préférences
© SlideServe · v2026

Computer Graphics

wren avatar
31 diapositives · 655 Views · Sep 16, 2014

Computer Graphics. Zhen Jiang West Chester University. Topics. Curves 2D and 3D Clipping Projection and shadow Animation. Curves. Parametric cubic polynomial curves Interpolation (interpolating polynomials) Bezier Curve. Curves. Where is the position for the next point? K=4. K=3.

Computer Graphics - slide 1
01 / 31Computer Graphics
1 / 17

Télécharger la présentation

Computer Graphics
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Computer Graphics Zhen Jiang West Chester University

  2. Topics • Curves • 2D and 3D • Clipping • Projection and shadow • Animation

  3. Curves • Parametric cubic polynomial curves • Interpolation (interpolating polynomials) • Bezier Curve

  4. Curves Where is the position for the next point? K=4 K=3 K=2 K=1

  5. Curves Where is the position for the next point? K=4 K=3 K=2 K=1

  6. Parametric cubic polynomial curves • P(u)=c0+c1u+c2u2+c3u3 = uTc • Where uT = [1, u, u2, u3] and cT= [c0, c1, c2, c3 ]

  7. Interpolation Where is the position for any point on this curve? K=4 K=3 K=2 K=1

  8. Interpolation • P0=p(0) = c0 P1=p(1/3) P2=p(2/3) P3=p(1) = c0+c1+c2+c3 • pT=[p0,p1,p2,p3], A = • M=A-1= • c=Mp • P(u)=uTMp=b(u)p • where b(u) = [b0(u), b1(u), b2(u), b3(u), ] 1, 0, 0, 0 1, 1/3, (1/3)2, (1/3)3 1, 2/3, (2/3)2, (2/3)3 1, 1, 1, 1 [ ] 1, 0, 0, 0 -5.5, 9, -4.5, 1 9, -22.5, 18, -4.5 -4.5, 13.5, -13.5, 4.5 [ ]

  9. Interpolation • B0(u)=-9/2(u-1/3)(u-2/3)(u-1) • B1(u)=27/2(u-2/3)u(u-1) • B2(u)=-27/2(u-1/3)u(u-1) • B3(u)=9/2(u-1/3)(u-2/3)u

  10. Interpolation • Example • pT=[p0,p1,p2,p3], where p0= (0,0), p1=(1,1), p2,=(2,3), p3 =(3, 6) • (X,Y) when u=0? • B0(0)=1, B1(0)=0, B2(0)=0, B3(0)=0 • Since P(u)=b(u)p, X=b(u)Xp, Y=b(u)Yp, where XpT= [0,1,2,3] and YpT= [0,1,3,6]. • X=[1,0,0,0] [0,1,2,3] T=[1,0,0,0][ ]=0 and Y=0; 0 1 2 3

  11. Interpolation • Example • (X,Y) when u=1? • B0(0)=0, B1(0)=0, B2(0)=0, B3(0)=1 • Since P(u)=b(u)p, X=b(u)Xp, Y=b(u)Yp, where XpT= [0,1,2,3] and YpT= [0,1,3,6]. • X=[ ][ ]= and Y= [ ][ ]= ; 0 1 3 6 0 1 2 3 0,0,0,1 3 0,0,0,1 6

  12. Interpolation • Example • (X,Y) when u=3? • B0(0)=-56, B1(0)=189, B2(0)=-216, B3(0)=84 • Since P(u)=b(u)p, X=b(u)Xp, Y=b(u)Yp, where XpT= [0,1,2,3] and YpT= [0,1,3,6]. • X=[ ][ ]= • Y= [ ][ ]= 0 1 2 3 -56,189,-216,84 9 0 1 3 6 45 -56,189,-216,84

  13. Bezier Curve • Two endpoints • p0(x0,y0) origin endpoint, source • p3(x3,y3) destination endpoint • Two control points • p1(x1,y1) • p2(x2,y2) • t form 0 to 1 • New point p(x(t), y(t)) • p(t)=c0+c1t+c2t2+c3t3 • Where c0=p0, c1=3(p1-p0), c2=3(p2-p1)-c1, c3=p3-p0-c1-c2.

  14. /* Three control point Bezier interpolation mu ranges from 0 to 1, start to end of the curve */ XYZ Bezier3(XYZ p1,XYZ p2,XYZ p3,double mu) { double mum1,mum12,mu2; XYZ p; mu2 = mu * mu; mum1 = 1 - mu; mum12 = mum1 * mum1; p.x = p1.x * mum12 + 2 * p2.x * mum1 * mu + p3.x * mu2; p.y = p1.y * mum12 + 2 * p2.y * mum1 * mu + p3.y * mu2; p.z = p1.z * mum12 + 2 * p2.z * mum1 * mu + p3.z * mu2; return(p); }

  15. /* Four control point Bezier interpolation mu ranges from 0 to 1, start to end of curve */ XYZ Bezier4(XYZ p1,XYZ p2,XYZ p3,XYZ p4,double mu) { double mum1,mum13,mu3; XYZ p; mum1 = 1 - mu; mum13 = mum1 * mum1 * mum1; mu3 = mu * mu * mu; p.x = mum13*p1.x + 3*mu*mum1*mum1*p2.x + 3*mu*mu*mum1*p3.x + mu3*p4.x; p.y = mum13*p1.y + 3*mu*mum1*mum1*p2.y + 3*mu*mu*mum1*p3.y + mu3*p4.y; p.z = mum13*p1.z + 3*mu*mum1*mum1*p2.z + 3*mu*mu*mum1*p3.z + mu3*p4.z; return(p); }

  16. /* General Bezier curve Number of control points is n+1 0 <= mu < 1 IMPORTANT, the last point is not computed */ XYZ Bezier(XYZ *p,int n,double mu) { int k,kn,nn,nkn; double blend,muk,munk; XYZ b = {0.0, 0.0, 0.0}; muk = 1; munk = pow(1-mu,(double)n); for (k=0;k<=n;k++) { nn = n; kn = k; nkn = n - k; blend = muk * munk; muk *= mu; munk /= (1-mu); while (nn >= 1) { blend *= nn; nn--; if (kn > 1) { blend /= (double)kn; kn--; } if (nkn > 1) { blend /= (double)nkn; nkn--; } } /*end of while*/ b.x += p[k].x * blend; b.y += p[k].y * blend; b.z += p[k].z * blend; } /*end of for*/ return(b); }

  17. 2D and 3D (Transformation) • Coordinate system • Translation (p’=p+d) • (0,0) by d(1,2) • (1,2) by d(2,4) • (3,6) by d(-3,-6) • Rotation p’ = [ ] p = [ ] [ ] -(3,0) by =90˚ • Scaling p’= r p (r > 1, big one; r < 1, small one) P (x’,y’)  P (x,y) cos  -sin  Sin  cos  cos  -sin  Sin  cos  x y

  18. 2D and 3D (Transformation) • Mixed d For example, P’= r(P+d), where =[ ] ! What will it be if P’= rP+d, r(P+d), (rP+d), r(P+d), or rP+d? ! Undo if P’= r(P+d), P’’=P= ’(1/rP’-d), where ’=[ ] If P’’’= ’(1/r)P’-d, is P’’’=P’’=P? How about ’(1/r)(P’-d), (1/r)’P’-d, , …, ? P cos  -sin  Sin  cos  r  cos  sin  -sin  cos 

  19. 2D and 3D (Transformation) • Translation (p’=p+d) • (0,0,0) by d(1,2,3) • (1,2,3) by d(2,4,6) • (3,6,9) by d(-3,-6,-9) • Rotation p’ = R p ( Rz =[ ], Rx =[ ], Ry =[ ], • Scaling p’= r p (r > 1, big one; r < 1, small one) • Mixed • 0 0 • 0 cos  -sin  • 0 sin  cos  cos  -sin  0 sin  cos  0 0 0 1 cos  0 sin  0 1 0 -sin  0 cos 

  20. 2D and 3D (Transformation) Y Y P P Rz() Rx() x x P Ry() Z Z

  21. 2D and 3D (Transformation) • 45 degree about the line through origin (0,0,0) and the point(1,2,3) with a fixed point of (4,6,5): glMatrixMode (GL_MODELVIEW); glLoadIdentity(); glTranslatef(4.0, 6.0, 5.0); glRotatef(45.0, 1.0, 2.0, 3.0); glTranslatef(-4.0, -6.0, -5.0);

  22. 2D and 3D (Transformation) Y’ Y P’ Y P’ X’ P1 P X Z’ X P1= P+d Z Z

  23. 2D and 3D (Transformation) P’1 Y’ Y’ P’ Y (1,2,3) (0,0,0) Y X’ X’ P2 P1 Z’ Z’ X X P2= Rz P1= Rz(P+d) Z Z

  24. 2D and 3D (Transformation) P’2 P’1 Y’ Y’ X P3 Y X’ X’ Y P2 Z’ Z’ X Z P3= Rx P2= RxRz(P+d) Z

  25. 2D and 3D (Transformation) P’3 Y Y’ X X Y Y P3 X’ X P’2=?P’3 P’1=?P’2 Z’ Z P’=?P’1 Need solution? Check “undo” in 2Ds. Z Z P’3= Ry(45) P3= Ry(45)RxRz(P+d)

  26. Clipping

  27. Clipping

  28. Clipping (6,18) (22,18) (2,10) (19,9) (6,6) (22,6) (14,4) (2,2) (19,2)

  29. Clipping • Step 1: Start from a vertex • If it is a point inside window, save it as a vertex in the new polygon; status=1; • Otherwise, status=0. • Step 2: Pick the edge starting from this vertex until there is no new vertex of this polygon • If it has an intersection [0,1) with any edge of window • status=!status, save the intersection as a vertex for the new polygon; • If status==1, save the endpoint of this segment as a vertex for new polygon; • Repeat step 2, start from the endpoint of this segment. • If it has no intersection with any edge of window • If status ==1, save the endpoint of this segment as a vertex for new polygon; • Repeat step 2, start from the endpoint of this segment. • Step 3: Connect all the vertices of the new polygon

  30. Clipping • Does a segment from A(x1,y1) to B(x2,y2) have an intersection with an edge from P(x3,y3) to Q(x4,y4)? yup • = (x3-x1)/(x2-x1) y= (1-)y1+  y2 x3=x4 0 ≤ ≤1 && ylo ≤ y ≤yup I=(1-)A+ B, 0 ≤ ≤1 ylo • = (y3-y1)/(y2-y1) x= (1-)x1+  x2 xmin xmax y3=y4 0 ≤ ≤1 && xmin ≤ x ≤xmax