Đồ 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

7 558 0
Đồ 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

Đang tải... (xem toàn văn)

Thông tin tài liệu

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 . 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. 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. 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.

Ngày đăng: 24/07/2014, 10:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan