intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Đồ họa máy tính - Chương 2 Các phép biến đổi hình trên hệ toạ độ - Bài 9

Chia sẻ: Nguyễn Nhi | Ngày: | Loại File: PDF | Số trang:10

102
lượt xem
9
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Dán các đ-ờng cong Bezier 1. Dán các đ-ờng cong Bezier Giả sử trên đoạn [to,t1] đã xây dựng đ-ợc đ-ờng cong Bezier Q1(t) ?t?[to,t1] và trên đoạn [t1,t2] ta đã xây dựng đ-ợc đ-ờng cong Bezier Q2(t). Vấn đề là cần phải dán Q1 và Q2 để đ-ợc đ-ờng cong Q(t) t?[to,t2] sao cho Q(t) có đạo hàm ở mọi điểm t?[to,t2] Rõ ràng ta có:

Chủ đề:
Lưu

Nội dung Text: Đồ họa máy tính - Chương 2 Các phép biến đổi hình trên hệ toạ độ - Bài 9

  1. Kü thuËt §å ho¹ m¸y tÝnh $9. D¸n c¸c ®−êng cong Bezier 1. D¸n c¸c ®−êng cong Bezier Gi¶ sö trªn ®o¹n [to,t1] ®· x©y dùng ®−îc ®−êng cong Bezier Q1(t) ∀t∈[to,t1] vµ trªn ®o¹n [t1,t2] ta ®· x©y dùng ®−îc ®−êng cong Bezier Q2(t). VÊn ®Ò lµ cÇn ph¶i d¸n Q1 vµ Q2 ®Ó ®−îc ®−êng cong Q(t) t∈[to,t2] sao cho Q(t) cã ®¹o hµm ë mäi ®iÓm t∈[to,t2] Râ rµng ta cã: t ∈[ t 0 , t1] ⎧ Q1( t ) Q( t ) = ⎨ t ∈ [ t1 , t 2 ] ⎩Q2 ( t ) Trªn tõng kho¶ng [to,t1] (t1,t2) Q(t) lµ ®a thøc cã ®¹o hµm ë mäi ®iÓm. VÊn ®Ò chØ cÇn ph¶i xÐt t¹i t=t1 1 1 1 Gi¶ sö trªn [to,t1] ta cã c¸c ®iÓm P0 , P1 , ... Pn lµ c¸c ®iÓm cho tr−íc cña ®−êng 2 2 2 cong Bezier trªn [to,t1] vµ trªn (t1,t2) ta cã c¸c ®iÓm P0 , P1 , ... Pn lµ c¸c ®iÓm cho tr−íc cña ®−êng cong Bezier trªn (t1,t2) ë ®©y 1 2 Pn = P0 Tõ tÝnh chÊt cña ®−êng cong Bezier ta cã: trªn ®o¹n [to,t1]: n 1 1 Q1 ( t 1 ) = ( Pn − Pn −1 ) (*) ′ Δt 0 trªn ®o¹n [t1,t2]: n 2 2 Q ′ ( t1 ) = ( P1 − P0 ) (**) 2 Δ t1 Víi Δto =t1-to; Δt1=t2-t1 . §Ó cho Q(t) cã ®¹o hµm t¹i t1 th× Q 1 ( t 1 ) = Q ′ ( t 1 ) ′ 2 1 1 1 1 2 2 ⇒ ( Pn − Pn −1) = ( P1 − P0 ) (***) Δt 0 Δ t1 Δt 0 1 12 1 2 V× Pn = P0 = x ⇒ ®iÓm øng víi t1 chia ®o¹n Pn −1 , Pn , P1 theo tØ sè ®iÒu Δt 1 kiÖn (***) lµ ®iÒu kiÖn ®Ó Q(t) cã ®¹o hµm t¹i mäi t. Thùc ra chóng ta chØ cÇn 1 12 Pn −1 , Pn , P1 th¼ng hµng 2. ThuËt to¸n d¸n c¸c ®−êng cong Bezier bËc II Nh− ta ®· biÕt ®−êng cong Bezier bËc 2 chÝnh lµ Parabol 48
  2. Kü thuËt §å ho¹ m¸y tÝnh Gi¶ sö cho tr−íc c¸c ®iÓm Po,P1,P2....Pn (n≥3), ta ph¶i vÏ mét ®−êng cong ®i qua c¸c ®iÓm nµy sao cho ë mçi ®o¹n PiPi+1 ®−êng cong lµ mét Parabol vµ ®−êng cong ph¶i tr¬n bËc I cã nghÜa lµ ®−êng cong ph¶i cã ®¹o hµm ë tÊt c¶ c¸c ®iÓm. Dùa vµo c¸ch x©y dùng ®−êng cong Bezier ë trªn chóng ta cã thÓ x©y dùng thuËt to¸n ®Ó t¹o nªn ®−êng cong tr¬n bËc I nh− sau: V =P , V =P , i=1 oo21 V1 lÊy bÊt kú VÏ ®−êng cong Bezier bËc 2 qua 3 ®iÓm Vo,V1,V2 S i
  3. Kü thuËt §å ho¹ m¸y tÝnh directvideo:=False; setbkcolor(1); setcolor(14); setviewport(getmaxX div 2,getmaxY div 2,getmaxX,getmaxY,false); line(-320,0,319,0); line(319,0,310,-5); line(319,0,310,5); line(0,239,0,-240); line(-5,-230,0,-240); line(5,-230,0,-240); outtextxy(-10,-10,'O'); outtextxy(305,10,'x'); outtextxy(10,-230,'y'); end; (*************************************************) {thu tuc ve duong cong tron theo thuat toan CASTELJAU} PROCEDURE ve; Var i,j : integer; BEGIN moveto(round(x[0]),round(y[0])); for i:=0 to 2 do Begin yi[i,0]:=y[i]; xi[i,0]:=x[i]; End; u:=0; while u
  4. Kü thuËt §å ho¹ m¸y tÝnh BEGIN l:=6; m[0]:=-90; n[0]:=100; m[1]:=-60; n[1]:=60; m[2]:=-40; n[2]:=70; m[3]:=0; n[3]:=10; m[4]:=60; n[4]:=140; m[5]:=160; n[5]:=120; m[6]:=260; n[6]:=220; khoitao; i:=0; x[0]:=m[i]; y[0]:=n[i]; i:=i+1; x[2]:=m[i]; y[2]:=n[i]; circle(round(x[2]),round(y[2]),2); x[1]:=x[2]-15;y[1]:=y[2]-15; circle(round(x[0]),round(y[0]),2); circle(round(x[2]),round(y[2]),2); ve; while i
  5. Kü thuËt §å ho¹ m¸y tÝnh ti, ti+1,] sau ®ã d¸n chóng l¹i, chØ cã kh¸c lµ ta sÏ x©y dùng sao cho Q (ti)=Pi ∀i=0,1,...,n ThuËt to¸n nh− sau: 1. i=1 2. Qua Pi-1, Pi, Pi+1 sÏ cã parabol ®i qua ba ®iÓm nµy 3. Parabol nµy sÏ cã tiÕp tuyÕn Si t¹i Pi lµ : Si=(1-αi)Ci-1+αiCi víi Ci-1=(Pi-Pi-1)/(ti-ti-1) Ci=(Pi+1-Pi)/(ti+1-ti) αi=(ti+1-ti)/(ti+1-ti-1) ta cho i=0 : S0=2(C0-S1), cho i=n : Sn=2Cn-1-Sn-1 4. Trªn Si lÊy Pi-1/3, Pi+1/3, Sao cho Pi-1/3=Pi-1+1/3*(ti-1- ti-2) Si-1 Pi+1/3,=Pi-1/3*(ti-ti-1) Si 5. Coi Pi-1 , Pi-1/3 , Pi+1/3 , Pi+1 ®ãng vai trß lµ V0,V1,V2,V3 ®Ó vÏ ®−êng cong Bezier bËc III qua 4 ®iÓm (vµ ®−êng cong nµy ®¶m b¶o ®i qua Pi) 6. i=i+1 7. KiÓm tra xem i>n hay ch−a nÕu ch−a quay l¹i b−íc 2 8. KÕt thóc Ch−¬ng tr×nh minh ho¹ : Program Cong_bac_3; USES graph,crt; VAR pi:array[0..3] of real; u: real; xi,yi:array[0..3,0..3]of real; x,y:array[0..3]of real; m,n,a,c,s:array[0..100]of real; xdau,Gd,Gm,t,i,j,k,l:integer; a1,b1:real; f:text; (*************************************************) {-------------Ve he truc toa do------------} procedure khoitao; begin Gd := Detect; InitGraph(Gd, Gm, ' '); if GraphResult grOk then Halt(1); directvideo:=False; setbkcolor(1); setcolor(14); setviewport(getmaxX div 2,getmaxY div 2,getmaxX,getmaxY,false); line(-320,0,319,0); 52
  6. Kü thuËt §å ho¹ m¸y tÝnh line(319,0,310,-5); line(319,0,310,5); line(0,239,0,-240); line(-5,-230,0,-240); line(5,-230,0,-240); outtextxy(-10,-10,'O'); outtextxy(305,10,'x'); outtextxy(10,-230,'y'); end; (*************************************************) {thu tuc ve duong cong tron theo thuat toan CASTELJAU} PROCEDURE ve; Var i,j : integer; BEGIN moveto(round(x[0]),round(y[0])); for i:=0 to 3 do Begin yi[i,0]:=y[i]; xi[i,0]:=x[i]; End; u:=0; while u
  7. Kü thuËt §å ho¹ m¸y tÝnh m[3]:=-90; n[3]:=100; m[4]:=-60; n[4]:=60; m[5]:=-40; n[5]:=80; m[6]:=0; n[6]:=10; m[7]:=60; n[7]:=140; m[8]:=160; n[8]:=120; m[9]:=260; n[9]:=220; khoitao; i:=1; c[0]:=0; while i
  8. Kü thuËt §å ho¹ m¸y tÝnh (*************************************************) {-------------Ve he truc toa do------------} procedure khoitao; begin Gd := Detect; InitGraph(Gd, Gm, 'c:\tp\bgi '); if GraphResult grOk then Halt(1); directvideo:=False; setbkcolor(1); setcolor(14); setviewport(getmaxX div 2,getmaxY div 2,getmaxX,getmaxY,false); line(-320,0,319,0); line(319,0,310,-5); line(319,0,310,5); line(0,239,0,-240); line(-5,-230,0,-240); line(5,-230,0,-240); outtextxy(-10,-10,'O'); outtextxy(305,10,'x'); outtextxy(10,-230,'y'); end; (*************************************************) {thu tuc ve duong cong tron theo thuat toan CASTELJAU} PROCEDURE ve; Var i,j : integer; BEGIN moveto(round(x[0]),round(y[0])); for i:=0 to 3 do Begin yi[i,0]:=y[i]; xi[i,0]:=x[i]; End; u:=0; while u
  9. Kü thuËt §å ho¹ m¸y tÝnh putpixel(round(xi[i,j]),round(yi[i,j]),WHITE); delay(0); u:=u+0.0001 End; END; (*************************************************) {-------------Chuong Trinh Chinh------------} BEGIN l:=6; {l phai la so chan} m[0]:=-90; n[0]:=100; m[1]:=-60; n[1]:=60; m[2]:=-40; n[2]:=80; m[3]:=0; n[3]:=10; m[4]:=60; n[4]:=140; m[5]:=160; n[5]:=120; m[6]:=260; n[6]:=220; khoitao; i:=0; x[0]:=m[i]; y[0]:=n[i]; i:=i+1; x[2]:=m[i]; y[2]:=n[i]; circle(round(x[2]),round(y[2]),2); x[1]:=x[2]-5;y[1]:=y[2]-5; i:=i+1; x[3]:=m[i]; y[3]:=n[i]; x[2]:=(8*x[2]-x[0]-3*x[1]-x[3])/3; y[2]:=(8*y[2]-y[0]-3*y[1]-y[3])/3; circle(round(x[0]),round(y[0]),2); circle(round(x[3]),round(y[3]),2); ve; while i
  10. Kü thuËt §å ho¹ m¸y tÝnh repeat until keypressed; closegraph; END. $10. Kü thuËt x©y dùng c¸c mÆt cong 1. MÆt cong vµ c¸c yÕu tè c¬ b¶n cña mÆt cong MÆt cong t−¬ng tù nh− ®−êng cong nã cã thÓ ®−îc cho d−íi d¹ng tham sè S(u,v)=(x(u,v),y(u,v), z(u,v)) (1) ch¼ng h¹n mÆt hypeloid cho d−íi d¹ng: S(u,v)=(v cos u, hu, v sin u) ë ®©y c¸c hµm x,y,z chóng ta lu«n gi¶ thiÕt lµ hµm liªn tôc cña hµm hai biÕn (u,v) thuéc miÒn D nµo ®ã. C¸c tham sè u,v ®−îc gäi lµ c¸c tham sè ®−êng cong to¹ ®é, cña c¸c ®iÓm trªn mÆt cong NÕu tõ (1) chóng ta cè ®Þnh v= v khi ®ã ta ®−îc: Q(u)=S(u, v )=(x(u, v ), y(u, v ), z(u, v )) Q(u) sÏ lµ mét ®−êng cong nµo ®ã trªn mÆt cong S(u,v). Ta gäi Q(u) lµ c¸c ®−êng to¹ ®é. T−¬ng tù nÕu ta cè ®Þnh u= u ta cã Q(v)=S( u ,v), Q(v) lµ ®−êng cong to¹ ®é trªn mÆt cong S VÝ dô S(ϕ,θ)=(x(ϕ,θ), y(ϕ,θ),z(ϕ,θ)) x = R cos ϕ cos θ⎫ ⎪ y = R sin ϕ cos θ ⎬ (*) z = R sin θ ⎪ ⎭ 0≤ϕ≤360o, 0≤θ≤360o MÆt S(ϕ,θ) x¸c ®Þnh nh− trªn mÆt cÇu víi θ= θ ta cã ®−êng cong to¹ ®é lµ ®−êng trßn; ϕ= ϕ còng t¹o nªn ®−êng cong to¹ ®é lµ ®−êng trßn. 2. MÆt cong Lagrang Gi¶ sö n S( u) = ∑ Pi Fi ( u) u 0 ≤ u ≤ u1 i=0 lµ mét ®−êng cong nµo ®ã, Fi(u) lµ hµm c¬ së cña ®−êng cong, Pi lµ ®iÓm thuéc ®−êng cong. C¸c ®iÓm Pi nµy l¹i cã thÓ thuéc ®−êng cong thø j nµo ®ã cho bëi ph−¬ng tr×nh 57
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
130=>1