1 / 31

Computer Graphics

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.

wren
Download Presentation

Computer Graphics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

More Related