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

Kỹ thuật Đồ hoạ máy tính
58

Pv PG v
iijj
j
m
() ()=
=

0

Mặt cong s có thể viết dới dạng
Suv PF uG v
ij i j
j
m
i
n
(,) () () ()=
==

2
00

Với F
i
(u), G
j
(v) là các hàm cơ sở
Nếu chọn hàm cơ sở



=


0

khi đó
Suv Pl vl u
ij
j
m
i
n
j
m
i
n
(,) () () (**)=
==

00

Chúng ta thể thấy mặt cong s đi qua điểm U
i
,v
j
S(u
i
,v

m
j
n
i
,

là các đa thức Berstein bậc m và n, u
o
uu
1
, v
o
vv
1
Kỹ thuật Đồ hoạ máy tính
59
u=u
o
+q(u
1
-u
o
) v=v
o
+r(v
1
-v
o
)
Các điểm Pij đợc gọi là các điểm kiểm tra của mặt cong Bezier. Có thể minh hoạ

u
v
(,) (,) (,) (,)
(,) (,) (,) (,)
(,) (,) (,) (,)
(,) (,) (,) (,)
''
''
''' '
''' '
00 01 00 01
10 11 10 11
00 01 00 01
10 11 10 11












=

1000
0001
































0
; v=v
1
-v
0
;
Ví dụ: Từ mối liên hệ trên ta có:
S(u
1
,v
1
)=P
33

S
u
(u
1
,v
1
)=
3

u
(P
33
-P
23
)
Kỹ thuật Đồ hoạ máy tính

-P
32
-P
23
+P
33
)
2. Dán các mặt cong Bezier
Giả sử chúng ta đã xây dựng đợc 2 mặt cong Bezier S
1
(u,v) nà S
2
(u,v)
S
1
(u,v) ở đây có miền xác định [u
o,
u
1
]x[v
o
,v
1
]
S
2
(u,v) có miền xác định [u
1,
u
2

==

Suv PBpB r
ij n
i
m
j
j
m
i
n
1
1
00
(,) () () (*)
,

Với hàm S
2
ta đặt
u=u
1
+q(u
2
-u
1
)
v=v
o
+r(r

cong Bezier trên u
2

= =PP jm
nj j
1
0
2
0, (***)
Điều kiện hai điểm cho các đờng Bezier theo v nối với nhau và liên tục trên bờ u.
Việc nối để bảo đảm tính trơn của mặt cong đa về bài toán nối các đờng cong
Bezier
Bezier theo tham số v trơn ở các điểm
v
o
v
1
S
2
S
1
u
2
u
1
u
o
Kü thuËt §å ho¹ m¸y tÝnh
61
⇒== =PPP jm

line(0,0,-240,240);
line(-5,-230,0,-240);
line(5,-230,0,-240);
line(310,-5,320,0);
line(310,5,320,0);
line(228,-235,240,-240);
line(235,-228,240,-240);
setlinestyle(1,0,0);
line(-320,0,0,0);
line(0,0,240,-240);
line(0,0,0,240);
settextjustify(0,2);
outtextxy(5,5,'O');
outtextxy(305,10,'x');
outtextxy(10,-230,'y');
outtextxy(240,-230,'z');
setlinestyle(0,0,0);
end;
Kü thuËt §å ho¹ m¸y tÝnh
62
(*************************************************)
procedure move_to(x,y,z: integer);
Begin
moveto(round(x+z/sqrt(2)),round(y+z/sqrt(2)));
End;
(*************************************************)
procedure line_to(x,y,z: integer);
Begin
lineto(round(x+z/sqrt(2)),round(y+z/sqrt(2)));
End;

u:=u+0.001
End;
END;
(*************************************************)
{ Chuong Trinh Chinh }
Kü thuËt §å ho¹ m¸y tÝnh
63
BEGIN
a[0,0]:=-210; b[0,0]:=100; c[0,0]:=10;
a[0,1]:=-200; b[0,1]:=-100;c[0,1]:=-30;
a[0,2]:=-40; b[0,2]:=80; c[0,2]:=50;
a[0,3]:=160; b[0,3]:=40;c[0,3]:=20;
For i:=1 To l Do
Begin
For j:=0 To l Do
Begin
a[i,j]:=a[0,0]+i*10; b[i,j]:=b[0,0]+i*10; c[i,j]:=c[0,0]+i*10;
End;
End;
a[3,3]:=a[0,3]-50; b[3,3]:=b[0,3]+140;c[3,3]:=c[0,3]-20;
khoitao;
i:=0; j:=0;
circle(round(a[i,j]+c[i,j]/sqrt(2)),round(b[i,j]+c[i,j]/sqrt(2)),2);
str(i:1,st1); str(j:1,st2);

outtextxy(round(a[i,j]+c[i,j]/sqrt(2)),round(b[i,j]+c[i,j]/sqrt(2))+15,'A['+st1+','+st2+'
]');
i:=0; j:=l;
circle(round(a[i,j]+c[i,j]/sqrt(2)),round(b[i,j]+c[i,j]/sqrt(2)),2);
str(i:1,st1); str(j:1,st2);

xi[i,j]:=(1-v)*xi[i-1,j-1]+v*xi[i,j-1];
yi[i,j]:=(1-v)*yi[i-1,j-1]+v*yi[i,j-1];
zi[i,j]:=(1-v)*zi[i-1,j-1]+v*zi[i,j-1];
End;
End;
x[k]:=xi[i,j]; y[k]:=yi[i,j]; z[k]:=zi[i,j];
End;
ve;
v:=v+0.01
End;
repeat until keypressed;
closegraph;
END.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status