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.
Bi tập :
1. Lập chơng trình vẽ đồ thị của các hàm đã biết
2. Lập chơng trình mô tả phép biến một đoạn thẳng thành một đoạn thẳng qua các
phép biến hình đã nói ở trên.
3. Lập chơng trình mô tả phép biến một đa giác thành một đa giác qua các phép
biến hình đã nói ở trên.
4. Lập chơng trình mô tả phép biến một đờng tròn thành một đờng tròn qua các
phép biến hình đã nói ở trên.
5. Lập chơng trình mô tả phép biến một đờng Elip thành một đờng Elip qua các
phép biến hình đã nói ở trên.
6. Lập chơng trình mô tả phép biến một đờng Hypebol thành một đờng Hypebol
qua các phép biến hình đã nói ở trên. $5. Các phép biến đổi trong không gian 3 chiều
1. Phép tịnh tiến trong không gian 3 chiều
Giả sử trong hệ toạ độ OXYZ có điểm P(x,y,z) cần phải tịnh tiến điểm p theo vectơ
T(tx,ty,tz) khi đó ta đợc điểm P'(x',y',z') đợc suy tơng tự nh trong không gian 2
chiều ta có:
(,,,)(,,,)
=ì
quanh trục Ox một góc , ta đợc vectơ
op
=(x',y',z') xác định theo công thức:
Kỹ thuật Đồ hoạ máy tính
42
(,,,)(,,,)
cos sin
sin cos
=ì
xyz xyz11
10 00
00
00
xyz xyz11
00
0100
00
0001
=op op R y.(,)
Phép quay quanh trục OZ
Tơng tự nếu quay
op
quanh trục OZ thì
op
đợc xác định theo công thức sau:
(,,,)(,,,)
cos sin
sin cos
=ì
đợc xác định
theo công thức sau:
(,,,) (,,,)
=ì
xyz xyz
lx
ly
lz
11
000
000
00 0
0001
=op op L lx ly lz.(,,)
1
=c
vì Q ax
1
+by
1
+cz
1
=d
a(x-a)+b(y-b)+c(z-c)=d
=
++
daxbycz
a
b
c
22
x
1
= x-a; y
1
= y-b; z
1
= z-c do đó ta xác định đợc Q
Sau khi xác định Q để xác định P' ta hãy tịnh tiến P theo vectơ 2
nh sau :
Kỹ thuật Đồ hoạ máy tính
45
Procedure 3D_To_2D(P3D : Point_3D; Var P2D : Point_2D);
Begin
P2D.x := P3D.x - P3D.z * Cos(G);
P2D.y := P3D.y - P3D.z * Sin(G);
End;
Và sau đó ta thực hiện cách vẽ hình trong không gian 2 chiều nh đã hớng dẫn ở
bài trớc
Ví dụ : Vẽ đờng cong x=Sin(t), y=Cos(t), z=Sin(t)*Cos(t)
Program Duong_ba_chieu;
Uses Crt, Graph;
Type
Point_2D = Record
x, y : Real;
End;
Point_3D = Record
x, y, z : Real;
End;
Const
Xmin: Real=0;
Ymin: Real=0;
Zmin: Real=0;
Xmax: Real=639;
Ymax: Real=479;
Zmax: Real=479;
MaxX: Integer=600;
MaxY: Integer=440;
SetLineStyle(1,0,1);
Line(Round(Xgoc),0,Round(Xgoc),GetMaxY);
Line(0,Round(Ygoc),GetMaxX,Round(Ygoc));
Line(0,Round(Ygoc+Xgoc),639,Round(Ygoc+Xgoc)-639);
SetLineStyle(0,0,1);
End;
(*********************)
Procedure bp(t: Real; Var p : Point_3D);
Begin
p.x:=Sin(t); p.y:=Cos(t); p.z:=Sin(t)*Cos(t);
end;
(*********************)
Begin
clrscr;
m:=0;
InitGraph(m,n,'c:\tp\bgi');
DirectVideo:=False;
MaxX:=GetMaxX;
MaxY:=GetMaxY;
b:=2*pi/360;
Xmin:=-1; Xmax:=1;
Ymin:=-1; Ymax:=1;
Zmin:=-1/2; Zmax:=1/2;
Xmin:=Xmin+Zmin*Sin(G);
Xmax:=Xmax+Zmax*Cos(G);
Ymin:=Ymin+Zmin*Sin(G);
Ymax:=Ymax+Zmax*Sin(G);
If Xmin>0 Then Xmin:=0;
If Ymin>0 Then Ymin:=0;
If Xmax<0 Then Xmax:=0;
Readln;
CloseGraph;
End.
Bi tập :
1. Thực hiện các phép tịnh tiến, phép quay, phép co dãn cho một đoạn thẳng
2. Thực hiện các phép tịnh tiến, phép quay, phép co dãn cho một tứ diện
3. Thực hiện các phép tịnh tiến, phép quay, phép co dãn cho một hình hộp chữ nhật
4. Vẽ các đờng cong ba chiều đã biết
5. Quay đờng một đờng thẳng quanh các trục để đợc mặt nón tròn xoay
6. Quay đờng cong ba chiều đã biết quanh các trục để đợc các mặt tròn xoay
7. Quay đoạn thẳng PQ quanh trục toạ độ OX một góc
8. Quay đoạn thẳng PQ quanh trục toạ độ OY một góc
9. Quay đoạn thẳng PQ quanh trục toạ độ OZ một góc
10. Cho điểm M(x,y,z) hãy xác định M sau khi quay nó quanh trục đi qua đoạn
thẳng PQ cho trớc