Tải bản đầy đủ (.doc) (130 trang)

tìm hiểu về các nguyên thể trong đồ hoạ

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 (421.64 KB, 130 trang )

Một số ứng dụng đồ họa trong không gian
Chương I : TìM HIểU về các nguyên thể trong đồ hoạ
Hình ảnh được cÂu thành từ các nguyên thể cơ bản như điểm ảnh , đường
thẳng ,độ sáng ,màu sắc …
1 . Điểm :
1.1 Kh¸i niÖm :
Điểm là đơn vị nhỏ nhất trong chế độ đồ hoạ . Các chương trình đòi hỏi
độ chính xác và thẩm mü cao đều phảI truy xuất đến từng điểm ảnh .
1.2 . Thñ tôc vÏ mét ®iÓm :
Xây dựng trên cơ sở thủ tục vẽ một đoạn thẳng với hai đầu mót trùng nhau .
• Thủ tục Putpixel ( x,y :integer ; color : word) vẽ một ®iªmt tại toạ độ (x,y)
và chỉ số màu là color trên màn hình .
• Thủ tục GetPixel ( x,y :integer ) trả về chỉ số màu của điểm ảnh tại toạ
(x,y) .
• moveto ( x,y :integer ) : chuyển con trỏ đồ hoạ tới toạ độ x,y .
2 . Đường thẳng :
2.1. Định nghĩa :
Đường thẳng là nguyên thể nhỏ nhất trên thực tế . Đường thẳng là tập hợp
các điểm lân cận nhau một khoảng cách nhất định theo một phương nào
đó.
2.2. Một số thủ tục vẽ đường thẳng :
• Thủ tục Line (x,y,x
1
,y
1
) : vẽ một đường thẳng từ (x,y) đến ( x
1
, y
1
)
• Thủ tục Lineto (x,y) : vẽ đoạn thẳng từ vị trí con trỏ đến điểm ( x,y) .


• Thủ tục Linerel (D
x
, D
y
) : nối đoạn thẳng từ vị trí con trỏ hiện hành
đến điểm có toạ độ cách đó một khoảng D
x
, D
y
. Với D
x
dương : bên
phải ; D
y
dương : dưới màn hình .
Đề tài thực tập tốt nghiệp
1
Một số ứng dụng đồ họa trong không gian
3. Cửa sổ đồ hoạ ( Viewport ) :
Ta đang xét hình ảnh trong không gian thực ,hình ảnh sẽ có các toạ độ điểm
với giá trị nguyên (dương hoặc âm) .Điểm ảnh nằm góc trên ,bên tráI màn
hình có toạ độ (0,0). Toạ độ cột mang giá trị dương khi tiến sang phải ,toạ độ
dong mang giá trị dương khi tiến về phía dưới .Do giới hạn của màn hình ta
chỉ nhìn thấy một phần trong toàn bộ mặt phẳng các điểm ảnh .Khi xử lÝ ảnh
rõ ràng là không phảI khi nào ta cũng cần bao quát và không thể bao quát một
vïg lớn như vậy.Thường ta chia ảnh ra nhiều vùng hình chữ nhật và khảo sát
hình ảnh trong đó .Một cửa sổ được xác định bởi hai đầu mót đường chéo
chính của hình chữ nhật,ta gọi đó là hai điểm có toạ độ (x
1
,y

1
)và (x
2
,y
2
).
Ta sẽ xây dựng thủ tục để xác định cửa sổ nh sau:
Cua so(x
1
,y
1
,x
2
,y
2
:real)
Trong đó :
+ x
1
:là hoành độ nhỏ nhất
+ x
2
:là hoành độ lớn nhất
+y
1
: là tung độ nhỏ nhất
+y
2
: là tung độ lớn nhất


Không gian người dùng
(x
2
,y
2
)
(x
1
,y
1
)
Các tham số trên có thể là trị ,biến hoặc biểu thức và thoả mãn đồng thời
x
1
<x
2
,y
1
<y
2
Đề tài thực tập tốt nghiệp
2
Cửa sổ
Một số ứng dụng đồ họa trong không gian
Vd:Bốn tham biến này có thể là :
+Hằng :cua so(-10,10,2.5,15)
+Biến :cua so(A,B,C,D)
+Biểu thức :cua so (A+10,B-10,C+20,D+10)
4.Tầm nhìn
Hình ảnh mà ta đang khảo sát trên cửa sổ phải được thể hiện lên màn hình

máy tính .Giả sử ta thể hiện nội dung của nó lên một vùng hình chữ nhật của
màn hình.Ta gọi vùng màn hình này là tầm nhìn người xử lÝ.
Ta sẽ xây dựng một thủ tục để xác định tầm nhìn như sau:
Tầm nhìn (x
3
,x
4
,y
3
,y
4
:integer)
Trong đó :
Các tham biến là toạ độ các điểm xác định vùng hình chữ nhËtcña tầm
nhìn ,toạ độ này là toạ độ màn hình với trục y quay lên.
+x
3
:là hoành độ nhỏ nhất
+x
4
:là hoành độ lớn nhất
+y
3
: là tung độ nhỏ nhất
+y
4
: là tung độ lớn nhất
479
Màn hình VGA
Cửa sổ (x

2
,y
2
)
(x
1
,y
1
)
(0,0) 639
Với 0 <= x
3
< x
4
<= getmax X ( giá trị lớn nhất của X )
0 <= y
3
< y
4
<= getmax Y ( giá trị lớn nhất của Y )
Đề tài thực tập tốt nghiệp
3
Một số ứng dụng đồ họa trong không gian
5 . Mối quan hệ giữa tầm nhìn và cửa sổ :
5.1 . Chiếu cửa sổ lên tầm nhìn .
Muốn thể hiện một điểm ảnh trong cửa sổ lên tầm nhìn ta phải xác định
được công thức để chuyển toạ độ của điểm đó trong không gian thực sang
toạ độ màn hình . Ta quan sát màn hình dưới đây thể hiện phép chiếu một
điểm ( x
o

, y
o
) trên cửa sổ lên điểm ( x
o
, y
o
) trên tầm nhìn lưu ý rằng ta định
nghĩa hệ toạ độ trên tầm nhìn là hệ toạ độ với trục tung y quay lên còn toạ độ
màn hình có chiều trục tung y quay xuống .
Trước hết cần tính tư lệ thu phóng trên trục x và trục y
• x
tl
= ( x
4
– x
3
) / ( x
2
– x
1
)
• y
tl
= (y
4
- y
3
) / (y
2
- y

1
)
• x
e
= ( x
6
– x
1
) x X
tl
• y
e
= (y
6
– y
1
) x Y
tl
• Trong đó : x
1
, y
1 :
hoành độ ,tung độ nhỏ nhất của cửa sổ
X
2
,y
2
: hoành độ , tung độ lớn nhất của cửa sổ
X
3

, y
3
: hoành độ , tung độ nhỏ nhất của tầm nhìn
X
4
, y
4
: hoành độ , tung độ lớn nhất của tầm nhìn
5.2 . Nhiễu hình :Khi chiếu cửa sổ lên tầm nhìn các hình ảnh không còn
giữ nguyên được hình dạng ban đầu ,hình bị méo do tư lệ giữa đáy / chiều
cao của tầm nhìn và đáy /chiều cao của cửa sổ .
Không bị nhiễu hình : D/ H = D’ / H ’
Khi bị nhiễu hình : D / H <> D’ / H’
Đề tài thực tập tốt nghiệp
4
Một số ứng dụng đồ họa trong không gian
Trong đó : D : đáy ; H : chiều cao của cửa sổ
D’ : đáy tầm nhìn ; H’ :chiều cao tầm nhìn
Khi D, H là tầm nhìn cố định , với tầm nhìn khách nhau thì tầm nhìn khác
nhau thì dẫn đến nhiễu hình hoặc không nhiễu hình .
VD : Vẽ đường tròn có bán kính R= 4 trên cửa sổ D= 4 , H=4
+ Trên tầm nhìn (2,3,4,5) thì ta có D’ =1 ; H’=1 ; D/H= D’/H’ = 1/1
Không bị nhiễu hình
+ Trên tầm nhìn (1,1,8,3 ) ta có D’ =7, H’= 2 ; D’/H ’ = 7/2 mà D/H =6/6
D/H <> D’/H’ nên hình bị nhiễu ,có dạng :
Bị nhiễu hình
+ Trên tầm nhìn (1,3,4,7 ) ta có D’= 3 ; H’=4 ; D’/H’ =3/4 mà D/H = 6/6
D’/H’ <> D/H nên hình bị nhiễu ,có dạng :
Đề tài thực tập tốt nghiệp
5

Một số ứng dụng đồ họa trong không gian
Bị nhiễu hình
5 .3 . Thu , phóng hình :
Giả sử ta có tầm nhìn cố định trên màn hình ,bây giờ ta dùng các cửa sổ
với độ lên khác nhau để xem hình từng phần của hình . Các trường hợp có
thể xảy ra :
+ Kích thước cửa sổ giữ nguyên nhưng vị trí cửa sổ di chuyển trên không
gian đồ hoạ . lúc này ta có thể khảo sát các phần khác nhau của ảnh ,hình
của ảnh được chiếu lên màn hình có kích thước không đổi .
+ Kích thước cửa sổ thu nhỏ lại : phần của ảnh được khảo sát trên cửa sổ
trên cửa sổ thu nhỏ lại , song hình của nó trên tầm nhìn cồ định được
phóng to .
+ Kích thước cửa sổ phóng to ra : phần của ảnh được khảo sát lớn hơn
song ảnh của nó trong tầm nhìn cố định được thu nhỏ lại .
+ Tóm lại ,nguyên tắc thu phóng nh sau với tầm nhìn cố định :
+ Phóng ảnh : Thu nhỏ cửa sổ so với tầm nhìn cố định .
+ Thu ảnh : Tăng kích thước cửa sỗ .
6 . Xén hình – Clipping :
Kỹ thuật Clipping là kỹ thuật cắt xén , loại bỏ phần ảnh không nằm trong
cửa sổ . Clipping là tiến trình xác định các điểm của một đối tượng nằm
trong hay ngoài cửa sổ hiển thị nếu điểm nằm ngoài cửa sổ hiển thị sẽ bị
loại bỏ . GiảI thuật này nhằm mục đích xác định nhanh phần chứa các
điểm hiªnt thị và loại bỏ các phần không chứa . Ta chỉ cần quan tâm ®Ðn
Đề tài thực tập tốt nghiệp
6
Một số ứng dụng đồ họa trong không gian
hai điểm đầu và cuối của đoạn thẳng đó chứ không phảI các điểm nằm trên
đoạn thẳng đó .
Nếu cả hai điểm đầu và cuối của đoạn đều nằm về một phía trong cửa sổ
Clipping thì đoạn thẳng đó sẽ được vẽ đầy đủ ,không bị cắt phần nào . Còn

khi một trong hai ,hoặc cả hai điểm nằm ngoài cửa sổ Clipping , đoạn
thaneg sẽ bị loại bỏ phần nằm ngoài cửa sổ Clipping .
VD :
Trước khi Clipping Sau khi Clipping
5.3.2 . Một số giảI thuật Clipping :
1 . GiảI thuật Cohen – Surtherland :
Thuật giải này giải giảI quyết bài toán làm thế nào để xác định phần
đoạn thẳng có trong cửa sổ . Theo Cohen thì một cửa sổ sẽ được chia
thành 9 phần ,mỗi phần được ứng với một mã 4 bít , 1 điểm P ( x,y ) bất
kỳ thuộc cửa sổ sẽ ứng với 1 mã 4 bít gọi là Kod : Kod (P) = b1b3b2b4 .
Trong đó : b
I
: (i=1 4 ) được xác định nh sau :
b 1 = 1 nếu P nằm bên trái cửa sổ
b 2 = 1 nếu P nằm bên phảI cửa sổ
b 3 = 1 nếu P nằm bên dưới cửa sổ
b 4 = 1 nếu P nằm bên trên cửa sổ
Đề tài thực tập tốt nghiệp
7
Một số ứng dụng đồ họa trong không gian

Nh vậy P (x,y ) bất kỳ thuộc mặt phẳng chiếu được xác định theo (1) nh
sau
Trong đó : b 1 : bít dấu của x- x
min

b 2 : bít dấu của x
max -
x
b3 : bít dấu của y

max
- y
b4 : bít dấu của y- y
max
Quy ước : Nếu P thuộc biên của cửa sổ thì Kod (P ) =0000
• Đoạn thẳng nhìn thấy  P1P2 thuộc cửa sổ  Kod(P1) =Kod(P2)
=0000
• Đoạn không nhìn thấy :
• Khi P1P2 nằm ngoài cửa sổ  Kod(P1) and Kod(P2) <> 000
• Đoạn thẳng cắt : Không thoả mãn hai điều kiện trên
-
1. Hai đầu mót nằm trên hai cạnh cửa sô ( AB - Hình vẽ )
-
2 .Một trong hai đầu mót nằm ngoài cửa sổ (CD – Hình vẽ )
-
3. Cả hai đầu mót nằm ngoài cửa sổ . ( EF – Hình vẽ )
Đề tài thực tập tốt nghiệp
1001 1000 1010
0001 0000 0010
0101 0100 0110
X
X
min
X
max
Y
min
Y
max
b 1 =1 nếu x< X

min
b2= 1 nếu x < x
max
b3= 1 nếu y < Y
max
b4 =1 nếu y < y
min

8
Một số ứng dụng đồ họa trong không gian
• Nội dung thuật giải Cohen – Sutherland :
Giả sử P1(x
1
,y
1
) , P2 (x2,y2) và cửa sổ ( x
min
,y
min
,x
max
, Y
max
)
• Bước 1 : Tính Kod (P1) và Kod (P2)
• Bước 2 : Nếu Kod (P1) = Kod(P2) =0000 thì nhảy đến bước b5 (P1P2 )
nằm trong cửa sổ .
• Bước 3 : Nếu Kod (P1) =Kod(P2) <> 0000 thì nhảy đến bước b6
(P1P2) nằm ngoài cửa sổ .
• Bước 4 : Nếu không thoả mãn 2 điều kiện trên thì thực hiện

Nếu Kod(P1) =0000 thì hoán vị P1 với P2 để Kod(P1) <> 0000 và lấy
Kod (P1)=b4b3b2b1
-
Nếu b1= 1 thì y
1
:= y
1
+ (y
2
- y
1
) * (X
max
–X
1
)/(X
2
-X
1
)
-
Nếu b2= 1 thì y
1
:= y
1
+ (y
2
- y
1
) * (X

max
–X
1
)/(X
2
-X
1
)
-
Nếu b3= 1 thì y
1
:= x
1
+ (X
2
- X
1
) * (Y
max
–Y
1
)/(Y
2
-Y
1
)
-
Nếu b4= 1 thì y
1
:= x

1
+ (X
2
- X
1
) * (y
min
–Y
1
)/(Y
2
-Y
1
)
Quay lại bước 1
B5 : Vẽ đoạn thẳng P
1
P
2
B6 Kết thúc
• Chương trình minh hoạ :
Program Cohen_Sutherland ;
Ues crt,graph ;
Đề tài thực tập tốt nghiệp
A
B
C
D
E
F

X
Y
9
Một số ứng dụng đồ họa trong không gian
Type
Code =array [1 4] of Byte ;
Var a
1
,a
2
,b
1
,b
2
: real ;
n , i , x
min
,y
min
, x
max
, gd ,gm :integer ;
b: code ;
Procedure Kt_dohoa ;
Begin
Gd: =detect ;
Init graph (gd,gm , ‘ \bgi ‘) ;
If graph result <> grOk then
Halt (1);
End ;

Procedure dacbiet (x
1
,y
1
,x
2
,y
2
: real );
Var tg :real;
Begin If ( x
1
= x
2
) and (x
1
> x
2
) and (x
2
< x
max
) then
Begin
If y
1
> y
2
then
{ doi cho }

Tg:= y1 ;
y
1
:= y
2
;
y
2
:= tg ;
end ;
If (y
1
> y
min
) and ( y
1
< y
max
) and (y
2
> y
max
) then
Y
2
:= y
max
;
If ((y
2

> y
min
) and ( y
2
< y
max
) and (y
1
< y
min
) then
Y
1
:= y
min
;
Begin
if (y
1
= y
2
) and ( y
1
> y
min
) and (y
2
< y
max
) then

Đề tài thực tập tốt nghiệp
10
Một số ứng dụng đồ họa trong không gian
Begin If x
1
> x
2
then
Begin tg: =x1;
x
1
:= x
2
;
x
2
:=tg ;
End;
If (x
1
< x
min
) and (x
2
> x
max
) then
Begin x
1
:= x

min
;
X
2
:= x
max
;
End;
If (x
1
> x
min
) and ( x
1
< x
max
) and ( x
2
> x
max
) then x
2
:=x
max
;
If (x
2
> x
min
) and ( x

2
< x
max
) and ( x
1
< x
min
) then x
1
:=x
min
;
Line(round(x
1
) ; round( y
1
) ; round(x
2
) ;round(y
2
));
End;
End;
Procedure Kod( x, y:real ; var c :code ) ;
Begin for i:= 1 to 4 do b[ i] :=0 ;
If (x < x
min
) then b[1]:=1;
If (x > x
max

) then b[2]:=1;
If (y < y
min
) then b[3]:=1;
If (y < y
min
) then b[4]:=1;
End;
Procedure Cohen_SurtherlandClipping( x
1
, y
1
,x
2
, y
2
: real ) ;
Var c1,c2 : code ;
Đề tài thực tập tốt nghiệp
11
Một số ứng dụng đồ họa trong không gian
Chon ,tong1,tong2 ,mu2 :byte ;
Tgx ,tgy :real ;
Begin
Repeat
Kod ( x
1
,y
1
, c

1
) ; Kod ( x
2
,y
2
; c
2
) ;
Tong1:=0; tong2:=0 ; mu1 :=1;
For i:=1 to 4 do
Begin
Tong1 := tong1 + c[i] *mu2 ;
Tong2 := tong2 + c[i] *mu2;
End ;
If tong1 +tong2 = 0 then
Begin Chon :=1 ;
Line ( Round(x
1
) ,Round( y
1
) , round( x
2
) ,

round (y
2
) );
End
Else if tong1 +tong2 <> 0 then
Begin chon :=2;

End
Else begin chon :=3 ;
If tong1 = 0 then begin tgx:= x
1
; x
1
:= x
2
; x
2
:=tgx ;
Tgy :=y
1
; y
1
:= y
2
; y
2
: =tgy ;
End;
Kod (x
1
; y
1
; b) ;
If b[ 1] = 1 then
Begin y
1
:= y

1
+ (x
min
– x
1
) * (y
2
– y
1
) / (x
2
- x
1
) ;
X
1
:= x
min
;
End ;
If b[2] = 1 then
Đề tài thực tập tốt nghiệp
12
Một số ứng dụng đồ họa trong không gian
Begin y
1
:= y
1
+ (x
min

–x
1
) * (y
2
– y
1
) /(x
2
–x
1
) ;
X1 := x
max
;
End;
If b[3] =1 then
Begin x
1
:= x
1
+ (y
min
- y
1
) * (x
2
– x
1
) /(y
2

– y
1
) ;
Y
1
: =y
min
;
End ;
If b[4] =1 then
Begin x
1
:= x
1
+ (y
max
- y
1
) * (x
2
– x
1
) /(y
2
– y
1
) ;
Y
1
: =y

max
;
End ;

End;
Until (chon=1 ) or (chon=2) ;
End ;
{ chuong trinh chinh }
BEGIN
Clrscr ;
write( ‘ nhap toa do cua so xmin , ymin ‘ );
Readln (xmin , ymin ) ;
Write ( ‘nhap toa do cua so xmax ,ymax ) ;
Readln ( xmax ,ymax );
Write (‘nhap a1 , b1 ‘) ;
Readln (a1,b1);
Write(‘nhap a2,b2 ‘) ;
Readln (a2,b2 ) ;
Kt_Dohoa() ;
Setbkcolor (black );
Setcolor (red );
Đề tài thực tập tốt nghiệp
13
Một số ứng dụng đồ họa trong không gian
Rectangle (xmin ,ymin , xmax ,ymax );
Settextjustify ( 1,1);
Settextstyle(1 ,0 ,5 );
Outtextxy (320, 450, ‘hien thi mot doan thang trong mot cua so cho
truoc ‘) ;
Outtextxy (320, 470 ,’ theo thuat toan cohen_surtherland ‘);

Setcolor (white) ; Setlinestyle(1,0,0) ;
Line ( round ( a1) ,round ( b2 ) ,round ( a2 ) , round (b2 ) ) ;
Setlinestyle( 0,0,0 ) ;
If ( a1 <> a2 ) and ( b1 <>b2 ) then
Cohen_SutherlandClipping( a1 ,b1 ,a2 , b2 )
Else dacbiet( a1 ,b1 , a2 ,b2 );
Readln ; Closegraph ;
END .



Chương II
Đề tài thực tập tốt nghiệp
14
Một số ứng dụng đồ họa trong không gian
Các phép biến hình trong không gian
I.HÔ toạ độ trong không gian
Để định vị một điểm trong không gian ba chiều ta chọn hệ toạ độ đề các
hoặc hệ tạo độ cầu.
1.Hệ toạ độ đề các:
Gồm ba trục toạ độ ox,oy,oz vuông góc từng đôi . Khi chiếu vecter Om lên
các trục .
Z z
M(x,y,z)
Y
0 y
X
Người ta còn phân biệt hệ toạ độ Đề Các thuận và hệ Đề Các nghịch
1.1 Hệ toạ độ Đề Các sao cho khi quay cái vặn nút trai theo chiều từ OX sang
OY theo vuông góc góc thì chiều tiên của cái vặn nút chai trùng với

chiều dương của trục OZ(Cùng chiều với trục oz)
Z
Z
Y
X
Y
X

1.2 Hệ toạ độ Đề Các nghịch
Là hệ toạ độ không phải thuận , tức là khi quay cái vặn cót chai từ OX sang
Oy theo phương vuông góc thì chiều tiến của cái vặn nút chai ngược chiều
dương của trục OZ
2.Hệ toạ độ cầu :
Một điểm M trong không gian tương ứng với một bộ ba số (S,φ,0)
R:độ dài OM
Đề tài thực tập tốt nghiệp
15
Một số ứng dụng đồ họa trong không gian
O:góc giữa OX và OM
Bộ ba số (R,φ ,0) gọi là toạ độ cầu của điểm M.
3.Liên hệ giữa toạ độ Đề Các và toạ độ cầu:
Biết toạ độ cầu , tính được toạ độ Đề Các theo công thức sau:
x=R.Cos(θ).Cos(ϕ)
y=R.Sin(θ).Cos(ϕ)
z=R.Sin(ϕ)
R
2
=x
2
+y

2
+y
2
z
M(x,y,z)
Z
0 φ y
ϕ Y
x
X

Hình 2.4 Mối quan hệ toạ độ Đề Các và hệ toạ độ cầu
Biết toạ độ Đề Các tính được toạ độ cầu theo công thức:
II.Các phép biến đổi
1.Giới thiệu:
Vấn đề cơ bản của các hệ thống đồ hoạ máy tính là khả năng mô phỏng dự
chuyển động của các đối tượng trong không gian hai chiều (2D) và ba chiều (3D) .
Các quá trình này bao gồm phép tịnh tiến ,phép quay,phép co dãn và phép lấy đối
xứng .Các phép tính toán dược mô tả dưới dạng công thức toán học để phù hợp với
xử lÝ máy tính .
Có hai cách nhìn trong công việc mô tả sự chuyển động của đối tượng .
Thứ nhất , đối tượng chuyển động trong một hệ toạ độ đứng yên. Biểu diÔnd-
íi dạng toán học của loại thứ nhất này qua cá phép chuyển đổi hình học áp
dụng với từng điểm cu¶ đối tượng .Thứ hai , đối tượng ®óng yên còn hệ toạ
độ di chuyển quan hệ với đối tượng .Do đó phải áp dụng các phép chuyển đổi
toạ độ để mô tả sự chuyển động .Chẳng hạn , « tô di chuyển trên đường .Lúc
này thì « tô di chuyển còn cảnh vật đứng yên .Do đó phải áp dụng các chuyển
đổi hình học để mô tả sự chuyển động này . Tuy nhiên , ta có thể nhìn trên
Đề tài thực tập tốt nghiệp
16

Một số ứng dụng đồ họa trong không gian
quan diÓm là « tô đứng yên còn cảnh vật chuyển động .Trong một vài
trường hợp cả hai phương pháp trên đều được sử dụng.
Trước khi tìm hiểu xem lại các phép biến đổi trong không gian ba
chiều .Chóng ta xem lại các phép biến đổi trong mặt phẳng (Vì nó là cơ sở
của phép biến đổi trong không gian ba chiều )
2. Các phép biến đổi đồ hoạ
2.1. Cơ sở toán học của các phép biến đổi toạ độ
Giả sử M(x,y) qua phép biến đổi nào đó đê thành M’(x’,y’)
Xác định toạ độ M’(x’,y’)
M(x,y)
f
- M’(x’,y’)
x’=Ax+By+m (*)
y’=Cx+Dy+n
Đặt :
A C 0
F= B D 0
m n 1
Ta có thể viết (*)  (x’,y’,1)= (x,y,1).F
Trong đó : F là ma trận của phép biến đổi MM’
Định lÝ : Nếu F1 là ma trận của phép biển đổi M -> M’
Nịu F2 là ma trận của phép biến đổi M-> M’
Thì ma trận của phép biến đổi M-> M’’ là F=F1.F2
M
F1
M’
F2
M’’
VD: Xét bài toán sau :

Bài toán : Cho M(x,y) được tịnh tiến theo v( a,b) tới M’ ,sau đó M’ được
tịnh tiến theo v’(a1,b1) tíi M’’.TiÕt lËp phÐp chuyÓn ®æi tõ M tíi M’’ nh
sau :
MM=v  M’M’’=v’
đặt F1=v => F=F1xF2

1 0 0 0 0 0
F1= 0 1 0 F2= 0 0 0

a b 1 a1 b1 1
0 0 0 0 0 0 0 0 0
F=F1xF2= 0 0 0 x 0 0 0 x 0 0 0
a b 1 a1 b1 1 a+a1 b+b1 1
Đề tài thực tập tốt nghiệp
17
Một số ứng dụng đồ họa trong không gian
=> (x’’,y’’,1)=(x,y,1).F
VD: Cho M(1,2), v(2,3), v’(1,1).Tính m’’
Nh trên ta có:
1 0 0 0 0 0
F1= 0 0 0 F2= 0 0 0
2 3 1 1 1 1
0 0 0 0 0 0 0 0 0
F=F1xF2= 0 0 0 x 0 0 0 = 0 0 0
2 3 1 1 1 1 3 4 1
(x’’,y’’,1)=(x,y,1).F
1 0 0 0 0 0 1 0 0
F= 0 2 0 x 0 0 0 = 0 2 0
0 0 1 3 4 1 3 4 1
M

Hình 2.5 M’’ được biến đổi từ M qua v va v’’
2.2.Phép tịnh tiến :
Cho M(x,y) và v (a,b).Xác định M’(x’,y’) qua phép tịnh tiến M(x,y) theo vecter v
M(x,y)
T v
M’(x’,y’)
Theo định nghĩa phép tịnh tiến ta có :
MM’ = v
MM’(x’-x,y’-y)
v(a,b)
Y
M’(x’,y’)
M(x,y)
X
Đề tài thực tập tốt nghiệp
18
Một số ứng dụng đồ họa trong không gian
Theo định nghĩa hai vecter bằng nhau
MM’=v

x’-x=a x’=x+a
=>
y’-y=b y’=y+b
1 0 0
=>F= 0 1 0
a b 1
2.3 Phép co dãn toạ độ
Giả sử trong hệ toạ độ XOY ta phải dãn trọc OX theo Kx, dãn Oy theo
ky .Trong do kx, ky là hệ số co dãn
Phép co dãn toạ độ sẽ biến đổi toạ độ (x,y) thành (x’,y’) theo công thức:

x’=kx.x
y’=ky.y
Viết dưới dạng ma trận
[x’ y’ 1]=[ x y 1] x F

F= kx 0 0
0 ky 0

Chú ý :Phép này chủ yếu để vẽ đồ thị
Nịu kx=ky ta có phép co dãn đều , ngược lại có phép co dãn không đều
.
2.4 Phép đối xứng
Nịu một trong hai trục x và y được chọn làm trục để lấy đối xứng
Đối xứng qua trục OX x’=x

y’=y
Dạng ma trận có dạng :
 x’ y’ 1 = [ x y 1 ] x F
1 0 0
F= 1 -1 0
0 0 1
Đề tài thực tập tốt nghiệp
19
Một số ứng dụng đồ họa trong không gian
Y
M(1,1)
X
0

M’(1,-1)

Đối xứng qua trục OY
[ x’ y’ 1] = [ x y 1] x F

x’=-x
y’= y
Dạng ma trận có dạng:
-1 0 0 M(-1,2) M(1,2)
F= 1 1 0
0 0 1
X
0
Đối xứng qua một đường thẳng bất kỳ
Đường thẳng có phương trình : AX+By+c=0 (1), có vecter pháp tuyến
(A,B), một điểm M(x1,y1)
Ta phải tìm điểm M’là điểm đối xứng của M qua đường thẳng (1)
Muốn vậy ta phải tìm được toạ độ điểm H là trung điểm của MM’
M(x1,y1)
H(x0,y0) (1)

M’(x’,y’)
Lập phương trình MH đi qua M(x1,y1) và vuông góc với đường thẳng (1)
x=x1+At
y=y1+Bt => t=
(y-y1)
/B
Đề tài thực tập tốt nghiệp
20
Một số ứng dụng đồ họa trong không gian

y-B

x
(x-x1)
A-y1
Toạ độ của điểm H là nghiệp của hệ phương trình
Bx0-Ay0+Ay1-Bx1=0
Ax0+By0+c=0

y0
=- (Ax0+C)
B
Bx0+A
(Ax+C)
+Ay1-Bx1=0

B
B
2
x+A
2
+AC+ABy1-B
2
x1=0
X(B
2
+A
2
)=B
2
x1-AC-Aby1
Toạ độ của H là:

(B
2
x1-AC-Aby1)
x=
(A
2
+B
2
)

A B
2
x1-AC-Aby1 +C
(A
2
+B
2
)
y=-
B
Ta có:

(x’-x1,y’-y1)=2(x0-x,y0-y1)

x’-x1=2(x0-x1)
x’-x1=2(x0-x1) x’=2(x0-x1)+x1 x’=2x0-x1
=>  =>
y’-y1=2(y0-y1) y’=2(y0-y1)+y1 y’=2y0-
y1
Đề tài thực tập tốt nghiệp

21
Một số ứng dụng đồ họa trong không gian
-1 0 0
=> 0 -1 0
2x0 2y0 1 M’(x’,y’)
3.Phép quay
Quay quang gốc toạ độ một góc α
α M(x,y)
R= OM = OM’ = OM = OM’ α
0
α
0
=(Ox,OM)
α =(OM,OM’)
x’=Rcos(α
0
+α)
=>
y’=Rsin(α
0
+α)
x’=R(cosαcosα0-sinαsinα0 (*)
=> y’=R(sinαcosα0 +cosαsinα0)
x=Rcosα0
=> (**)
y=rsinα0
Thay (**) vào (*)
x’=xcosα-ysinα
=>
y’=xsinα+ycosα

Dạng ma trận
Cosα sinα 0
F= -sinα cosα 0 Y
0 0 1
Quay quanh M0 một góc
α
-Biết góc α,M(x,y),M0(x0,y0)
-Tính M’(x’,y’)
-Để tìm được M’ ta thực hiện một số phép biến đổi : M2(x2,y2) α

M(x,y)
Đề tài thực tập tốt nghiệp
22
Một số ứng dụng đồ họa trong không gian
M0
X
M1(x1,y1)
Quay M1
M1(x1,y1)
M2 với góc quay α
Tịnh tiến M
T M0O
M1
Tịnh tiến M2
TM0
M0O=(-x0,-y0)
Theo định nghĩa phép tịnh tiến hai vecter bằng nhau
MM1=M0O
x1-x=-x0 x1=x-x0
=> 

y1-y=-y0 y1=y-y0
Viết dưới dạng ma trận 1 0 0
F= 0 1 0
-x0 -y0 1
Quay M1(x1,y1)
R(0,
α
)
M2(x2,y2)
Theo định nghĩa phép tịnh tiến , hai vecter bằng nhau
Ta có:
M2M=OM0
x’-x0=x2 x’=x0+x2
=> 
y’-y0=y2 y’=y0+y2
Viết dưới dạng ma trận
1 0 0
F= 0 1 0
-x0 -y0 1
Gọi F là ma trận của phép quay
Ta có: F=F1.F2.F3
Cos sin
Đề tài thực tập tốt nghiệp
23
Một số ứng dụng đồ họa trong không gian
=> F= -sin cos
-x0cos +y0sin+b -x0sin-y0cos+y0
4.Các phép biến đổi đồ hoạ trong không gian ba chiều
4.1 Định nghĩa
Xét các điểm M(x,y,z) trong không gian . Qua một phép biến đổi nào đó

điểm M(x,y,z) biểu diễn được bậc nhất theo )x,y,z) tuyến tính đối với (x,y,z)
x’=A1x+B1y+C1+m
(*) y’=A2x+B2y+c2+n
z’=Z3x+B3y+C3+p
Có thể viết hệ thức (*) dưới dạng ma trận nh sau
(*) => (x’ y’ z’ 1)=(x y z 1).F
Trong đó :
A1 A2 A3 0
B1 B2 B3 0
F= C1 C2 C3 0
m n p 1
Có thể viết hệ thức (*) dưới dạng ma tận của phép biến đổi điểm M thành
diÓm M’ và ký hiệu là F:M  M’’ là: F=F1.F2
M
F1
M’
F2
M’’
4.2 Một số phép biến đổi thường gặp
a.Phép tịnh tiến
Phép tịnh tiến theo vecter v (a,b,c) thành M’(x’,y’,z’).Biết điểm M(x,y,z) v
(a,b,c) hãy tìm điểm M’(x,y,z)
Theo định nghĩa phép tịnh tiến ta có :
MM’=V
MM’(x’-x,y’-y,z’-z)
V(a,b,c)
Theo định nghĩa
 (x’-x,y’-y,z’-z)=(a,b,c)
MM’=V
x’-x=a x’=x+a

 y’-y=b  y’=y+b
z’-z=c z’=z+c
Từ đó suy ra ma trận F của phép tịnh tiến trong không gian:
Đề tài thực tập tốt nghiệp
24
Một số ứng dụng đồ họa trong không gian
1 0 0 0
0 1 0 0
F= 0 0 1 0
a b c 1 B’
VD:Tịnh tiến tam giác ABC theo vecter v(2,2,3)
Z A’
B C’
A
C
v(2,2,3)
Y
X
b.Phép co dãn tư lệ
Là quá trình co danx thay đổi theo các chiều của một đối tượng .Hệ số
co dãn kx,ky,kz theo các trục Ox,Oy,Oz xác định phép co dãn là phóng
to hay thu nhỏ .Phép co dãn tỉ lệ sẽ biến đổi toạ độ (x,y,z) thành toạ
độ (x’,y’,z’) theo công thÐc sau :

x’=kx.x
y’=ky.y
z’=kz.z
 x’ y’ z’ 1  = [ x y z 1 ] F
Viết dưới dạng ma trận ta có:
Từ đó suy ra ma trận F của phép co dãn tỉ lệ trong không gian

kx 0 0 0
0 ky 0 0
F= 0 0 kz 0
0 0 0 1
Nếu các thành phần kx=ky=kz bằng nhau thì sẽ thay đổi tư lệ đều
c.Phép đối xứng
Trong phần này ta xét ba phép đối xứng thường dùng đó là :Đối xứng qua gốc toạ
độ , đối xứng qua trục toạ độ , đối xứng qua mặt phẳng toạ độ
Đề tài thực tập tốt nghiệp
25

×