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

Kỹ thuật Đồ hoạ máy tính
35
Chơng 2
Các phép biến đổi hình
trên hệ toạ độ
$4. Các phép biến đổi trong không gian 2 chiều
Chúng ta biết rằng trong không gian hai chiều để biểu diễn các hình ngời ta thờng
chọn hệ toạ độ Decác hoặc hệ toạ độ cực. Để tiện cho việc khảo sát các hình ngời
ta cần phải thực hiện một số phép biến đổi, dới đây ta xem xét một số phép biến
đổi cơ bản: tịnh tiến, quay, co giãn trong không gian hai chiều
1. Phép tịnh tiến:
Giả sử trong hệ toạ độ Decac XOY cho điểm P(x,y) để dịch chuyển điểm P(x,y) đến
điểm P'(x',y') theo vectơ T=[Tx,Ty] khi đó x',y' đợc xác định nh sau:

=+

=+



xxTx
yyTy
(.)11

T
P
Tx
x

100
010
1Tx Ty










gọi là ma trận tịnh tiến ký hiệu là T(Tx,Ty)
Kỹ thuật Đồ hoạ máy tính
36
2. Phép quay quanh gốc toạ độ
Phép quay quanh gốc toạ độ O một góc



r
r
x'
P
x X
y'
P'
O
y











xy xy11
0
0
001



Có thể ký hiệu ma trận trên là ma trận quay
cos sin
sin cos ( , )



0
0
001





37
( , ,) ( , ,)












xy xy
L
L
x
y
11
0
0
00
001

kí hiệu ma trận co giãn
LL L
L
L
xy

của hình vẽ là (Xmax-Xmin) x (Ymax-Ymin), nhng ta lại muốn nhìn hình vẽ trong
một cửa sổ có kích thớc là MaxX x MaxY nên nếu hình vẽ nhỏ hơn của sổ nhìn
thì ta phải phóng to lên, còn ngợc lại nếu lớn hơn thì ta phải thu nhỏ lại, nh vậy ta
sẽ thực hiện một phép co dãn theo hệ số co dãn là :
CGx:=MaxX/(Xmax-Xmin);
CGy:=MaxY/(Ymax-Ymin);

Lúc
này các toạ độ của các điểm sẽ đợc nhân với CGx và CGy :
Xmin:=CGx*Xmin;
Xmax:=CGx*Xmax;
Ymin:=CGy*Ymin;
Ymax:=CGy*Ymax;
Kỹ thuật Đồ hoạ máy tính
38
Và ta có thủ tục chuyển một điểm từ toạ độ thực sang cửa sổ nhìn nh sau :
Procedure WTV(p : Point_2D; Var q : Point_2D);
Begin
q.x:=p.x*CGx;
q.y:=p.y*CGy;
End;
b. Chuyển từ cửa sổ nhìn sang màn hình
Nh ta đã biết toạ độ của màn hình có gốc là đỉnh trên bên trái và theo chiều dơng
nh trên hình vẽ, mà ta lại phải mô tả hình vẽ nh là ở thế giới thực, do đó ta phải
biến đổi hình vẽ từ cửa sổ nhìn sang màn hình.

Nh ở hình trên gốc toạ độ O của hình vẽ thực sẽ có toạ độ ở trên màn hình là :
Xgoc:=0;
If Xgoc>Xmin Then Xgoc:=Round(ABS(Xmin));
Ygoc:=0;

Ymax: Real=479;
MaxX: Integer=600;
MaxY: Integer=440;
Var
m,n : Integer;
ch: char;
CGx,CGy,x,b,Xgoc,Ygoc : Real;
p1,p2 : Point_2D;
(*********************)
Procedure WTV(p : Point_2D; Var q : Point_2D);
Begin
q.x:=p.x*CGx;
q.y:=p.y*CGy;
End;
(*********************)
Procedure VTS(p : Point_2D; Var q : Point_2D);
Begin
q.x:=Xgoc+p.x;
q.y:=Ygoc-p.y;
End;
(********************)
Procedure He_Truc;
Begin
Line(Round(Xgoc),0,Round(Xgoc),GetMaxY);
Line(0,Round(Ygoc),GetMaxX,Round(Ygoc));
End;
(*********************)
Function bp(x: Real) : Real;
Begin
bp:=Sin(x);

Xgoc:=0;
If Xgoc>Xmin Then Xgoc:=Round(ABS(Xmin));
Ygoc:=0;
If Ygoc<Ymax Then Ygoc:=Round(ABS(Ymax));
He_Truc;
x:=Xmin;
p1.x:=x; p1.y:=bp(x);
WTV(p1, p2);
p1:=p2;
VTS(p2, p2);
MoveTo(Round(p2.x),Round(p2.y));
Repeat
p1.x:=x; p1.y:=bp(x);
WTV(p1, p2);
p1:=p2;
VTS(p2, p2);
LineTo(Round(p2.x),Round(p2.y));
x:=x+b;
Until x>2*pi-Xmin+b;
Readln;
CloseGraph;
End.
Kỹ thuật Đồ hoạ máy tính
41
ở ví dụ trên ta có thể vẽ đồ thị của nhiều hàm số khác nhau mà không cần lập lại
chơng trình, mà chỉ cần thay hàm mới gán lại các giá trị của Xmin, Xmax và
Ymin, Ymax tức là đa bài toán về tìm giá trị lớn nhất và nhỏ nhất của hàm số ở
trên đoạn [Xmin, Xmax]
Tơng tự nh vậy ta cũng có thể áp dụng cho chơng trình mô tả các phép biến hình
để hình vẽ có thể đợc phóng to lên đầy màn hình.





xyz xyz
ttt
xyz
11
1000
0100
0010
1


=opTtxtytz.(,,)

2. Phép quay trong không gian ba chiều
Trực tiếp suy từ trờng hợp 2 chiều. Giả sử có vectơ

op
=(x,y,z) cần phải quay

op

quanh trục Ox một góc , ta đợc vectơ


op
=(x',y',z') xác định theo công thức:


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