Tải bản đầy đủ (.pdf) (7 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (256.54 KB, 7 trang )

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ó:
(,,,)(,,,)















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:
Kỹ thuật Đồ hoạ máy tính
42
(,,,)(,,,)
cos sin
sin cos















xyz xyz11
10 00
00
00

00 01


=

op R x.(,)

Tơng tự nếu quay

op
quanh trục Oy thì


op
đợc xác định theo công thức sau:
(,,,)(,,,)
cos sin
sin cos
















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
















xyz xyz11
00
00
0010
0001





=op op R z.(,)

3. Phép co gin trong không gian 3 chiều
Giả sử trong hệ toạ độ OXYZ trục OX co giãn với hệ số lx,OY co giãn với hệ số ly,
trục OZ co giãn với hệ số lz, khi đó trong hệ toạ độ OXYZ ta có


op

đợ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.(,,)


4.Xác định điểm đối xứng qua mặt phẳng
Kỹ thuật Đồ hoạ máy tính
43

Giả sử cho mặt phẳng xác định bởi ax+by+cz=d và cho điểm P hãy tìm P' đối
xứng với P qua mặt phẳng
Gọi

n
là véctơ pháp tuyến của :

n
=(a,b,c).
Gọi Q là điểm thuộc sao cho PQ
Q=(x
1
,y
1
,z
1
) , P=(x,y,z)


=pq n.
x-x
1
=a; y-y
1
=b; z-z

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


pq

P'=P ì T(2.(x
1
-x), 2.(y
1
-y), 2.(z
1
-z))
5. Cách vẽ hình 3 chiều trên màn hình máy tính :
a. Hệ toạ độ trong không gian ba chiều :
Trong không gian 3 chiều ngời ta hay dùng 2 hệ toạ độ đó là hệ toạ độ tay phải và
hệ toạ độ tay trái :
Kỹ thuật Đồ hoạ máy tính
44

Trong máy tính, khi thì ta dùng hệ toạ độ tay phải, khi thì ta dùng hệ toạ độ tay trái
(nh khi dùng các thuật toán để xử lý các hình khuất mặt khuất theo độ sâu, có
nghĩa là nếu một điểm nào đó có toạ độ theo trục Oz càng lớn thì điểm ấy nằm càng
sâu). Để biểu diễn một điểm trong không gian 3 chiều ta phải đa nó về không gian
2 chiều, Và cách đa về dạng biểu diễn trong không gian 2 chiều nh sau.
b. Đa một điểm biểu trong không gian 3 chiều sang 2 chiều :


Giả sử điểm P trong không gian 3 chiều (O,XYZ) có toạ độ là (x,y,z), gọi (x',y') là
toạ độ của nó trong không gian 2 chiều (O,XY) và gọi G là góc phẳng thực sự đợc
tạo bởi OX và OZ (thông thờng G=PI/4). Ta có : x'x = z.cos(G), y'y = z.sin(G)
mà x' = x + x'x, y' = y + y'y do đó : x' = x - z.cos(G), y' = y - x.sin(G)
Vậy ta có thủ tục chuyển một điểm từ không gian 3 chiều sang không gian 2 chiều

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;

G : Real=PI/4;
Var
m,n : Integer;
ch: char;
CGx,CGy,x,y,z,t,b,Xgoc,Ygoc : Real;
p1,p2 : Point_2D;
p3 : Point_3D;
(*********************)
Procedure C3_2(p : Point_3D; Var q : Point_2D);
Begin
q.x:=p.x-p.z*Cos(G);
q.y:=p.y-p.z*Sin(G);
End;
(*********************)
Procedure WTV(p : Point_2D; Var q : Point_2D);
Begin
q.x:=p.x*CGx;
q.y:=p.y*CGy;
Kü thuËt §å ho¹ m¸y tÝnh
46
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

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;

If Ymax<0 Then Ymax:=0;
CGx:=MaxX/(Xmax-Xmin);
CGy:=MaxY/(Ymax-Ymin);
Xmin:=CGx*Xmin;
Xmax:=CGx*Xmax;
Kỹ thuật Đồ hoạ máy tính
47
Ymin:=CGy*Ymin;
Ymax:=CGy*Ymax;
Xgoc:=0;
If Xgoc>Xmin Then Xgoc:=Round(ABS(Xmin));
Ygoc:=0;
If Ygoc<Ymax Then Ygoc:=Round(ABS(Ymax));
He_Truc;
t:=0;
bp(t,p3);
C3_2(p3,p1);
WTV(p1, p2);
p1:=p2;
VTS(p2, p2);
MoveTo(Round(p2.x),Round(p2.y));
Repeat
bp(t,p3);
C3_2(p3,p1);
WTV(p1, p2);
p1:=p2;
VTS(p2, p2);
LineTo(Round(p2.x),Round(p2.y));
t:=t+b;
Until t>2*pi+b;

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





×