SlideShare una empresa de Scribd logo
1 de 146
Descargar para leer sin conexión
M CL C
Chương 1: CÁC Y U T CƠ S C A ð H A
1.1. T ng quan v ñ h a máy tính ............................................................................... 1
1.1.1. Gi i thi u v ñ h a máy tính ................................................................................ 1
1.1.2. Các k thu t ñ h a ................................................................................................ 1
  1.1.2.1. K thu t ñ h a ñi m........................................................................................ 1
  1.1.2.2. K thu t ñ h a vector...................................................................................... 2
1.1.3. ng d ng c a ñ h a máy tính............................................................................... 2
1.1.4. Các lĩnh v c c a ñ h a máy tính .......................................................................... 3
1.1.5. T ng quan v m t h ñ h a .................................................................................. 4
1.2. Màn hình ñ h a ...................................................................................................... 6
1.3. Các khái ni m........................................................................................................... 6
  1.3.1. ði m..................................................................................................................... 6
  1.3.2. Các bi u di n t a ñ ............................................................................................ 8
  1.3.3. ðo n th ng........................................................................................................... 8
1.4. Các thu t toán v ño n th ng................................................................................. 8
  1.4.1. Bài toán ................................................................................................................ 8
  1.4.2. Thu t toán DDA................................................................................................... 9
  1.4.3. Thu t toán Bresenham ....................................................................................... 10
  1.4.4. Thu t toán MidPoint .......................................................................................... 12
1.5. Thu t toán v ñư ng tròn ..................................................................................... 14
  1.5.1. Thu t toán Bresenham ....................................................................................... 14
  1.5.2. Thu t toán MidPoint .......................................................................................... 16
1.6. Thu t toán v Ellipse............................................................................................. 17
  1.6.1. Thu t toán Bresenham ....................................................................................... 17
  1.6.2. Thu t toán MidPoint .......................................................................................... 20
1.7. Phương pháp v ñ th hàm s ............................................................................. 21
Bài t p ............................................................................................................................ 23

Chương 2: TÔ MÀU
2.1. Gi i thi u các h màu............................................................................................ 25
2.2. Các thu t toán tô màu .......................................................................................... 28
  2.2.1. Bài toán .............................................................................................................. 28
  2.2.2. Thu t toán xác ñ nh P ∈ S ................................................................................. 28
  2.2.3. Thu t toán tô màu theo dòng quét ..................................................................... 30
  2.2.4. Thu t toán tô màu theo v t d u loang................................................................ 30
Bài t p ............................................................................................................................ 31

Chương 3: XÉN HÌNH
3.1. ð t v n ñ ............................................................................................................... 32
3.2. Xén ño n th ng vào vùng hình ch nh t............................................................. 32
  3.2.1. C nh c a hình ch nh t song song v i các tr c t a ñ ..................................... 32
  3.2.1.1. Thu t toán Cohen – Sutherland ...................................................................... 33
  3.2.1.2. Thu t toán chia nh phân................................................................................. 34
  3.2.1.3. Thu t toán Liang – Barsky ............................................................................. 35
  3.2.2. Khi c nh c a hình ch nh t t o v i tr c hoành m t góc α................................ 36
3.3. Xén ño n th ng vào hình tròn .............................................................................. 37
3.4. Xén ñư ng tròn vào hình ch nh t...................................................................... 38
3.5. Xén ña giác vào hình ch nh t ............................................................................. 39
Bài t p ............................................................................................................................ 40

Chương 4: CÁC PHÉP BI N ð I
4.1. Các phép bi n ñ i trong m t ph ng..................................................................... 41
  4.1.1. Cơ s toán h c ................................................................................................... 41
  4.1.2. Ví d minh h a .................................................................................................. 43
4.2. Các phép bi n ñ i trong không gian .................................................................... 45
  4.2.1. Các h tr c t a ñ .............................................................................................. 45
  4.2.2. Các công th c bi n ñ i ...................................................................................... 46
  4.2.3. Ma tr n ngh ch ñ o ............................................................................................ 48
4.3. Các phép chi u c a v t th trong không gian lên m t ph ng ........................... 48
  4.3.1. Phép chi u ph i c nh ......................................................................................... 48
  4.3.2. Phép chi u song song......................................................................................... 50
4.4. Công th c c a các phép chi u lên màn hình....................................................... 50
4.5. Ph l c .................................................................................................................... 56
4.6. Ví d minh h a....................................................................................................... 59
Bài t p ............................................................................................................................ 61

Chương 5: BI U DI N CÁC ð I TƯ NG BA CHI U
5.1. Mô hình WireFrame.............................................................................................. 63
5.2. V mô hình WireFrame v i các phép chi u........................................................ 64
5.3. V các m t toán h c............................................................................................... 65
Bài t p ............................................................................................................................ 68

Chương 6: THI T K ðƯ NG VÀ M T CONG BEZIER VÀ B-SPLINE
6.1. ðư ng cong Bezier và m t Bezier ........................................................................ 69
  6.1.1. Thu t toán Casteljau .......................................................................................... 70
  6.1.2. D ng Bernstein c a ñư ng cong Bezier ............................................................ 70
  6.1.3. D ng bi u di n ma tr n c a ñư ng Bezier ........................................................ 71
  6.1.4. T o và v ñư ng cong Bezier ............................................................................ 72
  6.1.5. Các tính ch t c a ñư ng Bezier ......................................................................... 74
  6.1.6. ðánh giá các ñư ng cong Bezier ....................................................................... 76
6.2. ðư ng cong Spline và B-Spline ............................................................................ 77
  6.2.1. ð nh nghĩa.......................................................................................................... 77
6.2.2. Các tính ch t h u ích trong vi c thi t k các ñư ng cong B-Spline ................. 78
  6.2.3. Thi t k các m t Bezier và B-Spline ................................................................. 79
  6.2.4. Các băng Bezier ................................................................................................. 80
  6.2.5. Dán các băng Bezier v i nhau ........................................................................... 81
  6.2.6. Các băng B-Spline ............................................................................................. 81

Chương 7: KH ðƯ NG VÀ M T KHU T
7.1. Các khái ni m......................................................................................................... 83
7.2. Các phương pháp kh m t khu t ........................................................................ 85
  7.2.1. Gi i thu t s p x p theo chi u sâu ...................................................................... 85
  7.2.2. Gi i thu t BackFace........................................................................................... 88
  7.2.3. Gi i thu t vùng ñ m ñ sâu ............................................................................... 90
Bài t p .......................................................................................................................... 103

Chương 8: T O BÓNG V T TH 3D
8.1. Khái ni m ............................................................................................................. 104
8.2. Ngu n sáng xung quanh...................................................................................... 104
8.3. Ngu n sáng ñ nh hư ng ...................................................................................... 105
8.4. Ngu n sáng ñi m.................................................................................................. 109
8.5. Mô hình bóng Gouraud....................................................................................... 110
Bài t p .......................................................................................................................... 121

Ph l c: M T S CHƯƠNG TRÌNH MINH H A
I. Các thu t toán tô màu ............................................................................................ 122
II. Các thu t toán xén hình ........................................................................................ 129
III. V các ñ i tư ng 3D............................................................................................. 136

Tài li u tham kh o...................................................................................................... 143
L IM        ð U



     ð h a là m t trong nh ng lĩnh v c phát tri n r t nhanh c a ngành Công ngh
thông tin. Nó ñư c ng d ng r ng rãi trong nhi u lĩnh v c khoa h c và công ngh .
Ch ng h n như y h c, ki n trúc, gi i trí... ð h a máy tính ñã giúp chúng ta thay ñ i
cách c m nh n và s d ng máy tính, nó ñã tr thành nh ng công c tr c quan quan
tr ng không th thi u trong ñ i s ng h ng ngày. Vì v y môn “ð h a” ñã tr thành
m t trong nh ng môn h c chính trong các chuyên ngành Công ngh thông tin các
trư ng ñ i h c.
     Cu n sách “Giáo trình lý thuy t ñ h a” ñư c biên so n theo sát n i dung
chương trình ñào t o c nhân Công ngh thông tin. N i dung c a giáo trình này
cung c p m t s ki n th c cơ b n v lý thuy t và thu t toán xây d ng các công c
ñ h a 2D và 3D. T ñó giúp sinh viên có th ñ c l p xây d ng nh ng thư vi n ñ
h a cho riêng mình và phát tri n các ph n m m ng d ng ñ h a cao hơn.
      Giáo trình ñư c chia làm 8 chương và ph n ph l c, sau m i chương ñ u có
ph n bài t p ñ ki m tra ki n th c và rèn luy n kh năng l p trình cho b n ñ c. ð
thu n ti n cho vi c trình bày thu t toán m t cách d hi u, các gi i thu t trong giáo
trình ñư c vi t trên ngôn ng “t a Pascal” và các mã ngu n ñư c cài ñ t trên Turbo
Pascal 7.0. Nh m giúp b n ñ c b t lúng túng trong quá trình cài ñ t các gi i thu t,
ph n ph l c li t kê m t s mã ngu n cài ñ t các thu t toán trong các chương. Tuy
nhiên, b n ñ c nên t cài ñ t các thu t toán ph n lý thuy t, n u c m th y khó
khăn l m m i nên tham kh o ph n ph l c này.
     Chương 1, 2 và 3 trình bày v các y u t cơ s c a ñ h a như: màn hình ñ
h a, ñi m, ño n th ng, ñư ng tròn, các h màu và các thu t toán tô màu, xén hình ...
Chương 4 trang b các ki n th c toán h c v các phép bi n ñ i trong không gian 2D
và 3D. Chương 5, 6 và 7 gi i thi u các mô hình ñ h a 3D, các gi i thu t kh m t
khu t và t o bóng cho v t th ... Chương 8 trình bày v phương pháp thi t k các
ñư ng cong Bezier và B-Spline.
     M c dù ñã r t c g ng trong quá trình biên so n nhưng ch c ch n giáo trình
này v n không th tránh kh i nh ng thi u sót. Chúng tôi r t mong nh n ñư c nh ng
ý ki n ñóng góp c a b n ñ c cũng như các b n ñ ng nghi p trong lĩnh v c ð h a
ñ giáo trình ngày càng ñư c hoàn thi n hơn trong l n tái b n sau. ð a ch liên l c:
     Khoa Công ngh Thông tin, trư ng ð i h c Khoa h c Hu .
     ði n tho i: 054.826767. Email: paphuong@hueuni.edu.vn
                                       nhtai@hueuni.edu.vn



                                                Hu , tháng 08 năn 2003
                                                      Các tác gi
Updatesofts.com                                                Ebooks Team
                                  CHƯƠNG I

          CÁC Y U T                 CƠ S        C Að             H A

1.1. T NG QUAN V ð         H A MÁY TÍNH

   ð h a máy tính là m t lãnh v c phát tri n nhanh nh t trong Tin h c. Nó ñư c áp
d ng r ng rãi trong nhi u lãnh v c khác nhau thu c v khoa h c, k ngh , y khoa,
ki n trúc và gi i trí.

   Thu t ng ñ h a máy tính (Computer Graphics) ñư c ñ xu t b i nhà khoa h c
ngư i M tên là William Fetter vào năm 1960 khi ông ñang nghiên c u xây d ng mô
hình bu ng lái máy bay cho hãng Boeing.

   Các chương trình ñ h a ng d ng cho phép chúng ta làm vi c v i máy tính m t
cách tho i mái, t nhiên.

1.1.1 Gi i thi u v ñ h a máy tính

   ð h a máy tính là m t ngành khoa h c Tin h c chuyên nghiên c u v các
phương pháp và k thu t ñ có th mô t và thao tác trên các ñ i tư ng c a th gi i
th c b ng máy tính.

   V b n ch t: ñó là m t quá trình xây d ng và phát tri n các công c trên c hai
lĩnh v c ph n c ng và ph n m m h tr cho các l p trình viên thi t k các chương
trình có kh năng ñ h a cao.

   V i vi c mô t d li u thông qua các hình nh và màu s c ña d ng c a nó, các
chương trình ñ h a thư ng thu hút ngư i s d ng b i tính thân thi n, d dùng,... kích
thích kh năng sáng t o và nâng cao năng su t làm vi c.

1.1.2. CÁC K THU T ð          H A

   D a vào các phương pháp x lý d li u trong h th ng, ta phân ra làm hai k thu t
ñ h a:

1.1.2.1. K thu t ñ h a ñi m
Chương I. Các y u t cơ s c a ñ h a

   Nguyên lý c a k thu t này như sau: các hình nh ñư c hi n th thông qua t ng
pixel (t ng m u r i r c). V i k thu t này, chúng ta có th t o ra, xóa ho c thay ñ i
thu c tính c a t ng pixel c a các ñ i tư ng. Các hình nh ñư c hi n th như m t lư i
ñi m r i r c (grid), t ng ñi m ñ u có v trí xác ñ nh ñư c hi n th v i m t giá tr
nguyên bi u th màu s c ho c d sáng c a ñi m ñó. T p h p t t c các pixel c a grid
t o nên hình nh c a ñ i tư ng mà ta mu n bi u di n.

1.1.2.2. K thu t ñ h a vector

   Nguyên lý c a k thu t này là xây d ng mô hình hình h c (geometrical model) cho
hình nh ñ i tư ng, xác ñ nh các thu c tính c a mô hình hình h c, sau ñó d a trên mô
hình này ñ th c hi n quá trình tô trát (rendering) ñ hi n th t ng ñi m c a mô hình,
hình nh c a ñ i tư ng.

         k thu t này, chúng ta ch lưu tr mô hình toán h c c a các thành ph n trong mô
hình hình h c cùng v i các thu c tính tương ng mà không c n lưu l i toàn b t t c
các pixel c a hình nh ñ i tư ng.

1.1.3.     ng d ng c a ñ h a máy tính hi n nay
         Ngày nay, ñ h a máy tính ñư c s d ng r ng rãi trong nhi u lĩnh v c khác
nhau như: Công nghi p, thương m i, qu n lý, giáo d c, gi i trí,... Sau ñây là m t s
 ng d ng tiêu bi u:

1.1.3.1. T o giao di n (User Interfaces): như các chương trình ng d ng WINDOWS,
WINWORD, EXCEL ... ñang ñư c ña s ngư i s d ng ưa chu ng nh tính thân
thi n, d s d ng.

1.1.3.2. T o ra các bi u ñ dùng trong thương m i, khoa h c và k thu t: Các bi u
ñ ñư c t o ra r t ña d ng, phong phú bao g m c hai chi u l n ba chi u góp ph n
thúc ñ y xu hư ng phát tri n các mô hình d li u h tr ñ c l c cho vi c phân tích
thông tin và tr giúp ra quy t ñ nh.

1.1.3.3. T ñ ng hóa văn phòng và ch b n ñi n t : dùng nh ng ng d ng c a ñ
h a ñ in n các tài li u v i nhi u lo i d li u khác nhau như: văn b n, bi u ñ , ñ th
và nhi u lo i hình nh khác ...

1.1.3.4. Thi t k v i s tr giúp c a máy tính (Computer aided design): M t trong
nh ng l i ích l n nh t c a máy tính là tr giúp con ngư i trong vi c thi t k . Các ng
                                                                                   2
Chương I. Các y u t cơ s c a ñ h a

d ng ñ h a cho phép chúng ta thi t k các thi t b cơ khí, ñi n, ñi n t , ô tô, máy bay,
... như ph n m m AUTOCAD ...

1.1.3.5. Lĩnh v c gi i trí, ngh thu t: cho phép các h a sĩ t o ra các hình nh ngay
trên màn hình c a máy tính. Ngư i h a sĩ có th t pha màu, tr n màu, th c hi n m t
s thao tác: c t, dán, t y, xóa, phóng to, thu nh ... như các ph n m m PAINTBRUSH,
CORELDRAW,...

1.1.3.6. Lĩnh v c b n ñ : xây d ng và in n các b n ñ ñ a lý. M t trong nh ng ng
d ng hi n nay c a ñ h a là h th ng thông tin ñ a lý (GIS - Geographical Information
System).

1.1.4. Các lĩnh v c c a ñ h a máy tính

1.1.4.1. Các h CAD/CAM (CAD – Computer Aided Design, CAM – Computer
Aided Manufacture)

   Các h này xây d ng t p h p các công c ñ h a tr giúp cho vi c thi t k các chi
ti t và các h th ng khác nhau: các thi t b cơ khí, ñi n t ... Ch ng h n như ph n m m
Auto Cad c a h ng AutoDesk...

1.1.4.2. X lý nh (Image Processing)

   ðây là lĩnh v c x lý các d li u nh trong cu c s ng. Sau quá trình x lý nh, d
li u ñ u ra là nh c a ñ i tư ng. Trong quá trình x lý nh, chúng ta s s d ng r t
nhi u các k thu t ph c t p: khôi ph c nh, xác ñ nh biên...

   Ví d : ph n m m PhotoShop, Corel Draw, ...

1.1.4.3. Khoa h c nh n d ng (Pattern Recognition)

   Nh n d ng là m t lĩnh v c trong k thu t x lý nh. T nh ng m u nh có s n, ta
phân lo i theo c u trúc ho c theo các phương pháp xác ñ nh nào ñó và b ng các thu t
toán ch n l c ñ có th phân tích hay t ng h p nh ñã cho thành m t t p h p các nh
g c, các nh g c này ñư c lưu trong m t thư vi n và căn c vào thư vi n này ñ nh n
d ng các nh khác.

   Ví d : Ph n m m nh n d ng ch vi t (VnDOCR) c a vi n Công ngh Thông tin
Hà N i, nh n d ng vân tay, nh n d ng m t ngư i trong khoa h c hình s ...

1.1.4.4. ð h a minh h a (Presentation Graphics)
                                                                                    3
Chương I. Các y u t cơ s c a ñ h a

   ðây là lĩnh v c ñ h a bao g m các công c tr giúp cho vi c hi n th các s li u
th ng kê m t cách tr c quan thông qua các m u ñ th ho c bi u ñ có s n. Ch ng h n
như các bi u ñ (Chart) trong các ph n m m Word, Excel...

1.1.4.5. Ho t hình và ngh thu t

   Lĩnh v c ñ h a này bao g m các công c giúp cho các h a sĩ, các nhà thi t k
phim nh chuyên nghi p th c hi n các công vi c c a mình thông qua các k x o v
tranh, ho t hình ho c các k x o ñi n nh khác...

   Ví d : Ph n m m x         lý các k x o ho t hình như: 3D Animation, 3D Studio
Max..., ph n m m x lý các k x o ñi n nh: Adobe Primiere, Cool 3D,...

1.1.5. T ng quan v m t h ñ h a (Graphics System)

1.1.5.1. H th ng ñ h a

   Ph n m m ñ h a: Là t p h p các câu l nh ñ h a c a h th ng. Các câu l nh l p
trình dùng cho các thao tác ñ h a không ñư c các ngôn ng l p trình thông d ng như
PASCAL, C, ... h tr . Thông thư ng, nó ch cung c p như là m t t p công c thêm
vào trong ngôn ng . T p các công c này dùng ñ t o ra các thành ph n cơ s c a m t
hình nh ñ h a như: ði m, ño n th ng, ñư ng tròn, màu s c,... Qua ñó, các nhà l p
trình ph i t o ra các chương trình ñ h a có kh năng ng d ng cao hơn.

   Ph n c ng ñ h a: Là các thi t b ñi n t : CPU, Card, màn hình, chu t, phím...
giúp cho vi c th c hi n và phát tri n các ph n m m ñ h a.

1.1.5.2. Các thành ph n c a m t h th ng ñ h a
  T p h p các công c này ñư c phân lo i d a trên nh ng công vi c trong t ng hoàn
c nh c th : xu t, nh p, bi n ñ i nh, ... bao g m:

  • T p công c t o ra nh g c (output primitives): cung c p các công c cơ b n
nh t cho vi c xây d ng các hình nh. Các nh g c bao g m các chu i ký t , các th c
th hình h c như ñi m, ñư ng th ng, ña giác, ñư ng tròn,...

  • T p các công c thay ñ i thu c tính (attributes): dùng ñ thay ñ i thu c tính c a
các nh g c. Các thu c tính c a nh g c bao g m màu s c (color), ki u ñư ng th ng
(line style), ki u văn b n (text style), m u tô vùng (area filling pattern),...



                                                                                  4
Chương I. Các y u t cơ s c a ñ h a

  • T p các công c thay ñ i h quan sát (viewing transformation): M t khi mà các
 nh g c và các thu c tính c a nó ñư c xác ñ nh trong h t a ñ th c, ta c n ph i chi u
ph n quan sát c a nh sang m t thi t b xu t c th . Các công c này cho phép ñ nh
nghĩa các vùng quan sát trên h t a ñ th c ñ hi n th hình nh ñó.

  • T p các công c ph c v cho các thao tác nh p d li u (input operations): Các
 ng d ng ñ h a có th s d ng nhi u lo i thi t b nh p khác nhau như bút v , b ng,
chu t, ... Chính vì v y, c n xây d ng thêm các công c này ñ ñi u khi n và x lý các
d li u nh p sao cho có hi u qu .
       M t yêu c u v ph n c ng không th thi u ñ t ra cho các ph n m m ñ h a là:
tính d mang chuy n (portability), có nghĩa là chương trình có th chuy n ñ i m t
cách d dàng gi a các ki u ph n c ng khác nhau. N u không có s chu n hóa, các
chương trình thi t k thư ng không th chuy n ñ i ñ n các h th ng ph n c ng khác
mà không vi t l i g n như toàn b chương trình.

  Sau nh ng n l c c a các t ch c chu n hóa qu c t , m t chu n cho vi c phát tri n
các ph n m m ñ h a ñã ra ñ i: ñó là GKS (Graphics Kernel System - H ñ h a cơ
s ). H th ng này ban ñ u ñư c thi t k như là m t t p các công c ñ h a hai chi u,
sau ñó ñư c phát tri n ñ m r ng trong ñ h a ba chi u.

  Ngoài ra, còn có m t s chu n ñ h a ph bi n như:

  •       CGI (Computer Graphics Interface System): h chu n cho các phương pháp
      giao ti p v i các thi t b ngo i vi.

  •       OPENGL: thư vi n ñ h a c a h ng Silicon Graphics.

  •       DIRECTX: thư vi n ñ h a c a h ng Microsoft.

1.2. MÀN HÌNH ð        H A

  M i máy tính ñ u có m t CARD dùng ñ qu n lý màn hình, g i là Video Adapter
hay Graphics Adapter. Có nhi u lo i adapter như: CGA, MCGA, EGA, VGA,
Hercules... Các adapter có th làm vi c      hai ch ñ : văn b n (Text Mode) và ñ h a
(Graphics Mode).

  Có nhi u cách ñ kh i t o các mode ñ h a. Ta có th s d ng hàm $00 ng t $10
c a BIOS v i các Mode sau:

                                                                                  5
Chương I. Các y u t cơ s c a ñ h a

         •   Mode $12: ch ñ phân gi i 640x480x16

         •   Mode $13: ch ñ phân gi i 320x200x256

  Ta có th vi t m t th t c ñ kh i t o ch ñ ñ h a như sau:
  Procedure InitGraph(Mode:Word);
   var Reg:Registers;
   Begin
    reg.ah := 0;
    reg.al := mode;
    intr($10,reg);
   End;
   Các b n có th tham kh o thêm      các tài li u v l p trình h th ng.

1.3. CÁC KHÁI NI M

1.3.1. ði m (Pixel)

   Trong các h th ng ñ h a, m t ñi m ñư c bi u th b i các t a ñ b ng s .

   Ví du: Trong m t ph ng, m t ñi m là m t c p (x,y)

          Trong không gian ba chi u, m t ñi m là b ba (x,y,z)

   Trên màn hình c a máy tính, m t ñi m là m t v trí trong vùng nh màn hình dùng
ñ lưu tr các thông tin v ñ sáng c a ñi m tương ng trên màn hình.

   S ñi m v trên màn hình ñư c g i là ñ phân gi i c a màn hình (320x200,
480x640, 1024x1024,...)

  Cách hi n th thông tin lên màn hình ñ h a:

  Vùng ñ m màn hình hay còn g i là b nh          hi n th ñư c b t ñ u t    ñ a ch
A000h:$0000h. Vì v y, ñ hi n th thông tin ra màn hình thì ta ch c n ñưa thông tin
vào vùng ñ m màn hình b t ñ u t ñ a ch trên là ñư c.

  Có nhi u cách ñ v m t ñi m ra màn hình: có th dùng các ph c v c a BIOS ho c
cũng có th truy xu t tr c ti p vào vùng nh màn hình.

   • N u dùng ph c v c a BIOS, ta dùng hàm $0C ng t $10:
      Procedure PutPixel(Col,Row:Word; Color:Byte);
       Var reg:Registers;
       Begin
         reg.ah:=$0C;
         reg.al:=Color;

                                                                                6
Chương I. Các y u t cơ s c a ñ h a

          reg.bh:=0;
          reg.cx:=Col;
          reg.dx:=Row;
          Intr($10,reg);
        End;
   • N u mu n truy xu t tr c ti p vào vùng ñ m màn hình: Gi s m t ñi m (x,y)
ñư c v trên màn hình v i ñ phân gi i 320x200x256 (mode 13h), ñi m ñó s ñư c
ñ nh v trong vùng ñ m b t ñ u t ñ a ch segment A000h và ñ a ch offset ñư c tính
theo công th c: Offset = y*320 + x.

  Ta có th vi t th t c như sau:
      Procedure PutPixel(x,y:Word; Color:Byte);
       Var Offset:Word;
       Begin
        Offset:=(y shl 8) + (y shl 6) + x;
        Mem[$A000:Offset]:=Color;
       End;
1.3.2. Các bi u di n t a ñ

   H u h t các chương trình ñ h a ñ u dùng h t a ñ Decartes (Hình 1.1).

   Ta bi n ñ i:
                                           O                           MaxX
                  Y                                    Y




                  O          X                                     X




                                          MaxY


           T a ñ th gi i th c                    T a ñ thi t b màn hình.

                                      Hình 1.1

1.3.3. ðo n th ng

   Trong các h th ng ñ h a, các ño n th ng ñư c bi u th b i vi c “tô” ño n th ng
b t ñ u t ñi m ñ u mút này kéo dài cho ñ n khi g p ñi m ñ u mút kia.

1.4. CÁC THU T TOÁN V ðO N TH NG
                                                                               7
Chương I. Các y u t cơ s c a ñ h a

1.4.1. Bài toán: V ño n th ng ñi qua 2 ñi m A(x1,y1) và B(x2,y2)

* Trư ng h p x1=x2 ho c y1=y2: r t ñơn gi n.

* Trư ng h p ñư ng th ng có h s góc m:

Ý tư ng:

   Vì các Pixel ñư c v        các v trí nguyên nên ñư ng th ng ñư c v gi ng như hình
b c thang (do làm tròn).

   V n ñ ñ t ra là ch n các t a ñ nguyên g n v i ñư ng th ng nh t.

1.4.2. Thu t toán DDA (Digital differential analyzer)
   Xét ñư ng th ng có h s góc 0<m≤1(gi s ñi m ñ u A n m bên trái và ñi m cu i
B n m bên ph i). N u ta ch n ∆x=1và tính giá tr y k ti p như sau:
      yk+1    = yk + ∆y = yk + m.∆x
              = yk + m
   V i h s góc m>1: ta hoán ñ i vai trò c a x,y cho nhau. N u ch n ∆y=1 thì:
      xk+1    = xk + 1/m
   Tương t , n u ñi m B n m bên trái và A n m bên ph i thì:
      yk+1    = yk - m        (0<m≤1, ∆x= -1)
      xk+1    = xk - 1/m      (m>1, ∆y= -1)
   Tóm l i: Ta có thu t toán v ñư ng th ng DDA như sau:
      Nh p A(x1,y1) B(x2,y2)
      Tính ∆x = x2 - x1       ∆y = y2 - y1       Step = Max(|∆x| , |∆y|)
      Kh i t o các giá tr :
           IncX = ∆x/Step;       IncY = ∆y/Step; {bư c tăng khi v }
           x = x1;   y = y1;                        {Ch n ñi m v ñ u tiên}
           V ñi m (x,y);
      Cho i ch y t 1 ñ n Step:
              x = x + IncX;      y = y + IncY;
              V ñi m (Round(x),Round(y))
   T ñó ta có th t c v ño n th ng theo thu t toán DDA như sau:
      Procedure DDALine(x1,y1,x2,y2:Integer);
      var dx,dy,step,i:integer;

                                                                                  8
Chương I. Các y u t cơ s c a ñ h a

            xInc,yInc,x,y:real;
         Begin
           dx:=x2-x1; dy:=y2-y1;
           If abs(dx)>abs(dy) Then step:=abs(dx)
           else step:=abs(dy);
           xInc:=dx/step;
           yInc:=dy/step;
           x:=x1;
           y:=y1;
           Putpixel(round(x),round(y),15);
           for i:=1 to step do
            Begin
                 x:=x+xInc;
                 y:=y+yInc;
                 Putpixel(round(x),round(y),15);
            End;
         End;

1.4.3. Thu t toán Bresenham
   Phương trình ñư ng th ng có th phát
bi u dư i d ng: y = m.x + b       (1)
                                            yi+
   Phương trình ñư ng th ng qua 2 ñi m:     1
    x − x1     y − y1                       y
            =            (*)
   x 2 − x1   y 2 − y1
                                            yi
   ð t    ∆x = x2 - x1
          ∆y = y2 - y1                                 xi             xi+1

                  ∆y            ∆y
   (*) ⇔ y = x.      + y1 - x1.                             Hình 1.2
                  ∆x            ∆x
                ∆y
   Suy ra m =        nên       ∆y = m. ∆x                       (2)
                ∆x
                         b = y1 - m.x1                          (3)
   Ta ch xét trư ng h p h s góc 0<m<1.
   Gi s ñi m (xi,yi) ñã ñư c v . Ta ph i ch n ñi m k ti p là:


                                                                             9
Chương I. Các y u t cơ s c a ñ h a

   (xi + 1,yi) ho c (xi +1,yi +1)       (Xem hình 1.2)
   Xét kho ng cách gi a 2 ñi m ch n v i ñi m n m trên ñư ng th c. N u kho ng
cách nào bé hơn thì ta l y ñi m ñó.
   ð t:
      d1 = y - yi = m.(xi +1) + b - yi
      d2 = (yi +1) - y = yi + 1 - m.(xi + 1) - b
   Suy ra:
      d1 - d2 = 2m.(xi + 1) - 2yi + 2b - 1
                     ∆y
              = 2.      .(xi + 1) - 2yi + 2b - 1
                     ∆x
   ⇔ ∆x(d1 - d2) = 2∆y.xi - 2∆x.yi + 2∆y + ∆x.(2b - 1)
   ð t    pi = ∆x(d1 - d2) và C = 2∆y + ∆x.(2b - 1)
   thì pi = 2∆y.xi - 2∆x.yi + C                                      (4)
      pi+1 = 2∆y.xi+1 - 2∆x.yi+1 + C
   Suy ra:
      pi+1 - pi = 2∆y(xi+1 - xi) - 2∆x(yi - yi+1)
               = 2∆y - 2∆x(yi+1 - yi)                                (5)
                 ( vì xi+1 - xi = 1 )
* Nh n xét:
   . N u pi < 0: Ch n yi+1 = yi T (5) ⇒ pi+1 = pi + 2∆y.          (d1<d2)
   . N u pi ≥ 0: Ch n yi+1 = yi + 1        T (5) ⇒ pi+1 = pi + 2∆y - 2∆x.   (d1>d2)
   V i ñi m mút ñ u tiên, theo (4) ta có:
      p1 = 2∆y.x1 - 2∆x.y1 + 2∆y + ∆x[2.(y1 - m.x1) - 1] = 2∆y - ∆x
T ñó, ta có th tóm t t thu t toán v ñư ng th ng theo Bresenham cho trư ng h p h
s góc 0<m<1 như sau:
• Bư c 1: Nh p các ñi m ñ u mút. ði m ñ u mút bên trái ch a t a ñ (x1,y1), ñi m
   ñ u mút bên ph i ch a t a ñ (x2,y2).
• Bư c 2: ði m ñư c ch n ñ v ñ u tiên là (x1,y1).
• Bư c 3: Tính ∆x = |x2 - x1| , ∆y = |y2 - y1| và P1 = 2∆y - ∆x
   N u pi < 0 thì ñi m k ti p là (xi + 1,yi)
   Ngư c l i: ñi m k ti p là (xi + 1,yi + 1)


                                                                                      10
Chương I. Các y u t cơ s c a ñ h a

• Bư c 4: Ti p t c tăng x lên 1 Pixel.    v trí xi +1, ta tính:
   pi+1 = pi + 2∆y      n u pi < 0
   pi+1 = pi + 2.( ∆y - ∆x) n u pi ≥ 0
   N u pi+1 < 0 thì ta ch n to ñ y k ti p là yi+1
   Ngư c l i thì ta ch n yi+1 +1
• Bư c 5: L p l i bư c 4 cho ñ n khi x = x2.
Sau ñây là th t c cài ñ t thu t toán:
Procedure LINE(x1,y1,x2,y2:integer); { 0<m<1}
var dx,dy,x,y,p,c1,c2,xMax:integer;
Begin
   dx:=abs(x1-x2);
   dy:=abs(y1-y2);
   c1:=2*dy;
   c2:=2*(dy-dx);
   p:=2*dy-dx;
   if x1>x2 then
       begin
             x:=x2; y:=y2; xMax:=x1;
       end
   else
       begin
          x:=x1;y:=y1;xMax:=x2;
       end;
   putpixel(x,y,red);
   while x<xMax do
      begin
         x:=x+1;
         if p<0 then p:=p+c1
         else begin
                     y:=y+1;
                     p:=p+c2;
                end;

                                                                              11
Chương I. Các y u t cơ s c a ñ h a

            putpixel(x,y,red);
       end;
end;

1.4.4. Thu t toán MidPoint
   Ta ch xét trư ng h p h s góc 0<m<1.
   Thu t toán này ñưa ra cách ch n ñi m S(xi+1,yi) hay P(xi+1,yi+1) b ng cách so
sánh ñi m th c Q(xi+1,y) v i ñi m M (trung ñi m c a S và P).
       N u ñi m Q n m dư i ñi m M thì ch n ñi m S
       Ngư c l i, ch n ñi m P. (Xem hình 1.3)
   Ta có d ng t ng quát c a phương trình ñư ng th ng:
       Ax + By + C = 0
   v i A = y2 – y1 , B = –(x2 – x1) ,
       C = x2.y1 – x1.y2
   ð t F(x,y) = Ax + By + C, ta có nh n xét:
                   < 0 n u (x,y) n m phía trên ñư ng th ng
       F(x,y)      = 0 n u (x,y) thu c v ñư ng th ng
                   > 0 n u (x,y) n m phía dư i ñư ng th ng
   Lúc này, vi c ch n các ñi m S hay P ñư c ñưa v vi c xét d u c a:
                                    1
       pi = F(M) = F(xi + 1,yi +      )
                                    2
            N u pi < 0 ⇒ M n m trên ño n
            th ng ⇒ Q n m dư i M ⇒ Ch n S                                      P
            N u pi ≥ 0 ⇒ M n m dư i ño n              yi+
                                                        1                      Q
            th ng ⇒ Q n m trên M ⇒ Ch n P                                      M

   M t khác:
                                                        yi                     S
                            1
       pi    = F(xi + 1,yi + )
                            2
                                  1                             xi
       pi+1 = F(xi+1 + 1,yi+1 +     )                           xi+1
                                  2                               Hình 1.3
   nên
                                        1                  1
       pi+1 - pi = F(xi+1 + 1,yi+1 +      ) - F(xi + 1,yi + )
                                        2                  2


                                                                                   12
Chương I. Các y u t cơ s c a ñ h a

                                             1                         1
                 = A(xi+1+1) + B(yi+1 +        ) + C - A(xi+1) - B(yi + ) - C
                                             2                         2
                 = A(xi+1 - xi) + B(yi+1 - yi)
                 = A + B(yi+1 - yi) (vì xi+1 - xi =1)
   Suy ra:
       pi+1 = pi + A + B(yi+1 - yi)                                                (*)
*Nh n xét:
   . N u pi < 0: Ch n ñi m S: yi+1 = yi            T (*) suy ra pi+1 = pi + A
   . N u pi ≥ 0: Ch n ñi m P: yi+1 = yi + 1 T (*) suy ra pi+1 = pi + A + B
   V i ñi m mút ñ u tiên, ta có:
                               1                     1
       p1 = F(x1 + 1,y1 +        ) = A(x1+1) + B(y1 + ) + C
                               2                     2
                                        B     B
             = Ax1 + Bx1 + C + A +        =A+   (vì Ax1 + Bx1 + C = 0)
                                        2     2
   Thu t toán MidPoint cho k t qu tương t như thu t toán Bresenham.
1.5. THU T TOÁN V ðƯ NG TRÒN
   Xét ñư ng tròn (C) tâm O(xc,yc) bán kính R.
                                                                      (-             (y,x
Phương trình t ng quát c a ñư ng tròn có d ng:                        y,x)           )
       (x - xc)2 + (y - yc)2 = R2      (*)                     (-                        (x,y
                                                               x,y)                      )
   ⇔ y = yc ±      R2 − ( x − xC ) 2   (1)
                                                              (-x,-                        (x,-
   ð ñơn gi n thu t toán, ñ u tiên ta xét ñư ng               y)                           y)
                                                                  (-y,-             (
tròn có tâm     g c t a ñ (xc=0 và yc=0).                         x)                y,-
* Ý tư ng:                                                                  Hình
   Do tính ñ i x ng c a ñư ng tròn nên n u ñi m                             1.4

(x,y)∈(C) thì các ñi m (y,x), (-y,x), (-x,y), (-x,-y), (-y,-x), (y,-x), (x,-y) cũng ∈ (C) (Hình 1.4)
Vì v y, ta ch c n v m t ph n tám cung tròn r i l y ñ i x ng qua g c O và 2 tr c to
ñ thì ta có ñư c toàn b ñư ng tròn.

1.5.1. Thu t toán Bresenham
   Gi s (xi,yi) ñã v ñư c. C n ch n ñi m k ti p là (xi +1,yi) ho c (xi +1,yi -1)
(Hình 1.5)
   T phương trình: x2 + y2 = R2
ta tính ñư c giá tr y th c ng v i xi +1 là:

                                                                                                 13
Chương I. Các y u t cơ s c a ñ h a

   y2 = R2 - (xi +1)2
ð t:     d1 = yi2 - y2 = yi2 - R2 + (xi + 1)2
         d2 = y2 - (yi - 1)2 = R2 - (xi + 1)2 - (yi - 1)2             yi
                                                                       y
Suy ra:                                                              yi-
   pi = d1 - d2 = 2.(xi + 1)2 + yi2 + (yi - 1)2 - 2R2       (2)        1

⇒ pi+1 = 2.(xi+1 + 1)2 + y2i+1 + (yi+1 - 1)2 - 2R2          (3)
T (2) và (3) ta có:                                                           xi
                                                                              xi+1
   pi+1 - pi = 4xi + 6 + 2.(y2i+1 - yi2) - 2.(yi+1 - yi)                      Hình
                                                                               1.5
⇒ pi+1 = pi + 4xi + 6 + 2.(y2i+1 - yi2) - 2.(yi+1 - yi)
   (4)
* Nh n xét:
   N u pi < 0: ch n yi+1 = yi            (4) ⇒ pi+1 = pi + 4xi + 6
   N u pi ≥ 0: ch n yi+1 = yi - 1        (4) ⇒ pi+1 = pi + 4.(xi - yi) + 10
   Ta ch n ñi m ñ u tiên c n v (0,R), theo (2) ta có: p1 = 3 - 2R
Tóm l i: Ta có thu t toán v ñư ng tròn:
• Bư c 1: Ch n ñi m ñ u c n v (x1,y1) = (0,R)
• Bư c 2: Tính P ñ u tiên: p1 = 3 - 2R
   N u p < 0: ch n ñi m k ti p là (xi +1,yi). Ngư c l i ch n ñi m (xi + 1,yi - 1)
• Bư c 3: x:=x + 1, tính l i p:
    N u pi < 0: pi+1 = pi + 4xi + 6. Ngư c l i: pi+1 = pi + 4.(xi - yi) + 10
   Khi ñó:
    N u pi+1 < 0: ch n ñi m k ti p là (xi +1,yi+1). Ngư c l i ch n ñi m (xi+1,yi+1-1)
• Bư c 4: L p l i bư c 3 cho ñ n khi x = y.
Sau ñây là th t c ñ cài ñ t thu t toán:
Procedure Circle(x0,y0,r:Integer);
 Var p,x,y:Integer;
   Procedure VeDiem;
       Begin
           PutPixel( x0 + x , y0 + y , color);
           PutPixel( x0 - x , y0 + y , color);
           PutPixel( x0 + x , y0 - y , color);
           PutPixel( x0 - x , y0 - y , color);
                                                                                      14
Chương I. Các y u t cơ s c a ñ h a

         PutPixel( x0 + y , y0 + x , color);
         PutPixel( x0 - y , y0 + x , color);
         PutPixel( x0 + y , y0 - x , color);
         PutPixel( x0 - y , y0 - x , color);
     End;
 Begin
    x:=0; y:=r;
    p:=3 - 2*r;
    While x<=y do
     Begin
         VeDiem;
         If p<0 then p:=p + 4*x + 6
         Else
             Begin
                p:=p + 4*(x-y) + 10;
                y:=y-1;
             End;
         x:=x+1;
     End;
 End;

1.5.2. Thu t toán MidPoint
   T phương trình ñư ng tròn: x2 + y2 = R2                                          S
                  2    2   2                             yi
   ð t F(x,y) = x + y - R ,ta có:
                                                                                    M
               < 0 n u (x,y)   trong ñư ng tròn                                     Q
                                                         yi-                        P
   F(x,y)      = 0 n u (x,y)   trên ñư ng tròn           1
               > 0 n u (x,y)   ngoàiñư ng tròn
   Lúc này, vi c ch n các ñi m S(xi+1,yi) hay                    xi          xi+1

P(xi+1,yi-1) ñư c ñưa v vi c xét d u c a:                             Hình
                                                                      1.6
                                  1
      pi = F(M) = F(xi + 1,yi -     ) (Hình 1.6)
                                  2
            N u pi < 0 ⇒ M n m trong ñư ng tròn ⇒ Q g n S hơn ⇒ Ch n S
            N u pi ≥ 0 ⇒ M n m ngoài ñư ng tròn ⇒ Q g n P hơn ⇒ Ch n P

                                                                                        15
Chương I. Các y u t cơ s c a ñ h a

   M t khác:
                               1
       pi    = F(xi + 1,yi -     )
                               2
                                     1
       pi+1 = F(xi+1 + 1,yi+1 -        )
                                     2
   nên
                                           1                  1
       pi+1 - pi = F(xi+1 + 1,yi+1 -         ) - F(xi + 1,yi - )
                                           2                  2
                                             1 2                         1
                 = [(xi+1+1)2 + (yi+1 -        ) - R2] - [(xi+1)2 + (yi - )2 - R2]
                                             2                           2
                                           1 2                         1
                 = [(xi+2)2 + (yi+1 -        ) - R2] - [(xi+1)2 + (yi - )2 - R2]
                                           2                           2
                 = 2xi + 3 + (yi+12 - yi2) - (yi+1 - yi)
   Suy ra:
       pi+1 = pi + 2xi + 3 + (yi+12 - yi2) - (yi+1 - yi)                             (*)
*Nh n xét:
   . N u pi < 0: Ch n ñi m S : yi+1 = yi              T (*) ⇒ pi+1 = pi + 2xi + 3
   . N u pi ≥ 0: Ch n ñi m P: yi+1 = yi - 1 T (*) ⇒ pi+1 = pi + 2(xi - yi) + 5
   V i ñi m ñ u tiên (0,R), ta có:
                               1            1            1         5
       p1 = F(x1 + 1,y1 -        ) = F(1,R - ) = 1 + (R - )2 - R2 = - R
                               2            2            2         4

1.6. THU T TOÁN V ELLIPSE
   ð ñơn gi n, ta ch n Ellipse có tâm                 g ct a
ñ . Phương trình c a nó có d ng:
                               x2   y2
                                  + 2 =1
                               a2  b

                                     b2 2
   Ta có th vi t l i:      y2 = -      2
                                         .x + b2      (*)
                                     a
   *Ý tư ng: Gi ng như thu t toán v ñư ng tròn.                          Hình
                                                                         1.7
Ch có s khác bi t          ñây là ta ph i v 2 nhánh: M t nhánh t trên xu ng và m t
nhánh t dư i lên và 2 nhánh này s g p nhau t i ñi m mà                     ñó h s góc c a ti p
tuy n v i Ellipse = -1 (Hình 1.7).
   Phương trình ti p tuy n v i Ellipse t i ñi m (x0,y0) ∈ (E) :


                                                                                           16
Chương I. Các y u t cơ s c a ñ h a

                                 x        y
                         x0 .     2
                                    + y0. 2 = 1
                                a        b
                                                                   x 0 .b 2
   Suy ra, h s góc c a ti p tuy n t i ñi m ñó là: -                         .
                                                                   y0 a 2

1.6.1. Thu t toán Bresenham
      ñây, ta ch xét nhánh v t trên xu ng.
   Gi s       ñi m (xi,yi) ñã ñư c v . ði m ti p theo c n ch n s là (xi+1,yi) ho c
(xi+1,yi-1)
                                                 b2
   Thay (xi +1) vào (*):                y2 = -     2
                                                     .(xi +1)2 + b2
                                                 a
   ð t:
                                  b2
       d1= yi2 - y2 = yi2 +         2
                                      .(xi +1)2 -b2
                                  a

                                   b2
       d2= y2 - (yi -1)2 = -         2
                                       .(xi +1)2 + b2 - (yi -1)2
                                   a

                       b2
   ⇒ pi = d1 - d2 = 2.[ 2 .(xi +1)2 - b2] + 2.(yi2 + yi) -1
                       a

                                b2
       pi+1         = 2.[         2
                                    .(xi+1 +1)2 - b2] + 2.(yi+12 + yi+1) -1
                                a
   Suy ra:
                        b2
       pi+1 - pi = 2.     2
                            .[(xi+1 +1)2 - (xi +1)2] + 2.( yi+12 - yi2 + yi+1 - yi)   (**)
                        a
   *Nh n xét:
   • pi < 0: Ch n yi+1 = yi
                                            b2
               (**) ⇒ pi+1 = pi + 2.           .(2x + 3)
                                            a2
   • pi ≥ 0: Ch n yi+1 = yi -1
                                            b2
               (**) ⇒ pi+1 = pi + 2.           .(2x + 3) - 4yi
                                            a2
       V i ñi m ñ u tiên (0,b), ta có:
                                    b2
                          p1 = 2       - 2b + 1
                                    a2
T ñó, ta có th t c v Ellipse như sau:

                                                                                             17
Chương I. Các y u t cơ s c a ñ h a

Procedure Ellipse(xc,yc,a,b:Integer;Color:Byte);
Var p,a2,b2:real;
    x,y:integer;
 (*-------------------*)
  Procedure VeDiem;
   Begin
        PutPixel(xc+x,yc+y,Color);
        PutPixel(xc-x,yc+y,Color);
        PutPixel(xc-x,yc-y,Color);
        PutPixel(xc+x,yc-y,Color);
   End;
 (*-------------------*)
Begin
  a2:=a*a;
  b2:=b*b;
  {Nhanh 1}
  x:=0; y:=b;
  p:=2*b2/a2 - 2*b + 1;
  While (b2/a2)*(x/y)<1 do
    Begin
         VeDiem;
         If p<0 then p:=p + 2*(b2/a2)*(2*x+3)
         else Begin
                   p:=p - 4*y + 2*(b2/a2)*(2*x+3);
                   y:=y-1;
              End;
         x:=x+1;
    End;
  {Nhanh 2}
  y:=0; x:=a;
  p:=2*(a2/b2) - 2*a + 1;
  While (a2/b2)*(y/x)<=1 do


                                                                    18
Chương I. Các y u t cơ s c a ñ h a

       Begin
           VeDiem;
           If p<0 then p:=p + 2*(a2/b2)*(2*y+3)
           else Begin
                        p:=p - 4*x + 2*(a2/b2)*(2*y+3);
                        x:=x-1;
                    End;
           y:=y+1;
       End;
End;

1.6.2. Thu t toán MidPoint
G i ý:
                                    x2   y2
   Phương trình Ellipse:               + 2 =1
                                    a2  b
   Nhánh 1:
                             1 2
         p1 = b2 - a 2 b +     .a
                             4
         If pi < 0 Then pi+1 = pi + b2 + 2b2xi+1
         else pi+1 = pi + b2 + 2b2xi+1 - 2a2yi+1
   Nhánh 2:
                        1 2
         p1 = b2(xi +     ) + a2(yi - 1)2 - a2b2
                        2
         If pi > 0 Then pi+1 = pi + a2 - 2a2yi+1
         else pi+1 = pi + a2 + 2b2xi+1 - 2a2yi+1
Procedure MidEllipse(xc,yc,a,b:Integer;Color:Byte);
Var p,a2,b2:real;
       x,y:Integer;
 (*-------------------*)
  Procedure VeDiem;
    Begin
         PutPixel(xc+x,yc+y,Color);
         PutPixel(xc-x,yc+y,Color);
         PutPixel(xc-x,yc-y,Color);
                                                                                  19
Chương I. Các y u t cơ s c a ñ h a

        PutPixel(xc+x,yc-y,Color);
   End;
 (*-------------------*)
Begin
   a2:=a*a;
   b2:=b*b;
  {Nhanh 1}
  x:=0; y:=b;
  Vediem;
  p:=b2 - a2*b + 0.25*a2;
  While (b2/a2)*(x/y)<1 do
    Begin
         x:=x+1;
         If p<0 Then p:=p + b2 + 2*b2*x
         else begin
               y:=y-1;
               p:=p + b2 + 2*b2*x - 2*a2*y;
              end;
         Vediem;
    End;
  {Nhanh 2}
  p:=b2*(x+0.5)*(x+0.5) + a2*(y-1)*(y-1)- a2*b2 ;
  While y>0 do
    Begin
         y:=y-1;
         If p>0 Then p:=p + a2 - 2*a2*y
         else begin
               x:=x+1;
               p:=p + a2 + 2*b2*x - 2*a2*y;
              end;
         Vediem;
    End;


                                                                    20
Chương I. Các y u t cơ s c a ñ h a

End;

1.7. PHƯƠNG PHÁP V ð           TH HÀM S

1.7.1. Bài toán: V ñ th c a hàm s y = f(x) trên ño n [Min,Max].

*Ý tư ng: Cho x ch y t ñ u ñ n cu i ñ l y các t a ñ (x,f(x)) sau ñó làm tròn
thành s nguyên r i n i các ñi m ñó l i v i nhau.

1.7.2. Gi i thu t:
• Bư c 1: Xác ñ nh ño n c n v [Min,Max].
• Bư c 2: - ð t g c t a ñ lên màn hình (x0,y0).
             - Chia t l v trên màn hình theo h s k.
             - Ch n bư c tăng dx c a m i ñi m trên ño n c n v .
• Bư c 3: Ch n ñi m ñ u c n v : x = Min, tính f(x)
    ð i qua t a ñ màn hình và làm tròn:
       x1:=x0 + Round(x.k);
       y1:=y0 - Round(y.k);
    Di chuy n ñ n (x1,y1): MOVETO(x1,y1);
• Bư c 4:
   Tăng x lên v i s gia dx: x:=x + dx;
    ð i qua t a ñ màn hình và làm tròn:
       x2:=x0 + Round(x.k);
       y2:=y0 - Round(y.k);
       V ñ n (x2,y2): LINETO(x2,y2);
• Bư c 5: L p l i bư c 4 cho ñ n khi x > Max thì d ng.
Ví d : V ñ th hàm s f(x) = Sin(x)
Uses crt,Graph;
Var dau,cuoi:real;
       Gd,Gm:Integer;
Function F(x:real):real;
 Begin
    F:=Sin(x);
 End;
Procedure VeHinhSin(ChukyDau,ChuKyCuoi:real);
                                                                            21
Chương I. Các y u t cơ s c a ñ h a

 var x1,y1,x2,y2:integer;
        a,x,k:real;
        x0,y0:word;
 Begin
    x0:=GetMaxX div 2;
    y0:=GetMaxY div 2;
    K:=GetMaxX/30;
    a:=Pi/180;
    x:=ChuKyDau;
    x1:=x0 + Round(x*k);
    y1:=y0 - Round(F(x)*k);
    Moveto(x1,y1);
    While x<ChuKyCuoi do
        Begin
          x:=x+a;
          x2:=x0 + Round(x*k);
          y2:=y0 - Round(F(x)*k);
          LineTo(x2,y2);
        End;
 End;
BEGIN
 Gd:=0;
 InitGraph(Gd,Gm,’C:BPBGI’);
 Dau:=-4*Pi; cuoi:=4*Pi;
 VeHinhSin(Dau,cuoi);
 repeat         until KeyPressed;
 CloseGraph;
END.

BÀI T P
1. Cho hai ñi m A(20,10) và B(25,13). Hãy tính các giá tr Pi, xi, yi   m i bư c khi v
ño n th ng AB theo thu t toán Bresenham/MidPoint và k t q a ñi n vào b ng sau:
            i        1       2        3        4         5       6

                                                                                   22
Chương I. Các y u t cơ s c a ñ h a

             Pi         ?         ?        ?      ?       ?       ?
             xi         ?         ?        ?      ?       ?       ?
             yi         ?         ?        ?      ?       ?       ?

2. Cài ñ t th t c v ño n th ng theo thu t toán Bresenham và MidPoint cho các
trư ng h p h s góc m>1, m<-1, -1<m<0.
3. Vi t th t c LineTo(x,y:Integer); ñ v ño n th ng t v trí hi n th i ñ n ñi m có
t a ñ (x,y).
4. Vi t th t c LineRel(dx,dy:Integer); ñ v ño n th ng t v trí hi n th i ñ n ñi m
m i cách ñi m hi n th i m t kho ng theo tr c x là dx và theo tr c y là dy.
5. Cài ñ t th t c v ñư ng tròn theo thu t toán MidPoint.
6. Vi t th t c Arc(x0,y0,g1,g2:Integer; R:Word); ñ v cung tròn có tâm (x0,y0)
bán kính R v i góc b t ñ u là g1 và góc k t thúc là g2.
7. Vi t th t c Sector(x0,y0,g1,g2:Integer; Rx,Ry:Word); ñ v cung Ellipse có tâm
(x0,y0) bán kính theo tr c X là Rx, bán kính theo tr c Y là Ry v i góc b t ñ u là g1
và góc k t thúc là g2.
8. Vi t th t c DrawPoly(P:Array; n:Byte; xc,yc,R:Word); ñ v m t ña giác ñ u
có n ñ nh lưu trong m ng P n i ti p trong ñư ng tròn tâm (xc,yc) bán kính R.
9. Vi t th t c Circle3P(A,B,C:ToaDo2D); ñ v ñư ng tròn ñi qua 3 ñi m A,B,C.
10. Vi t th t c Arc3P(A,B,C:ToaDo2D); ñ v cung tròn ñi qua 3 ñi m A,B,C.
11. V ñ th các hàm s sau:
   y = ax2 + bx + c, y = ax3 + bx2 + cx + d, y = ax4 + bx3 + cx2 + dx + e
        ax + b           ax 2 + bx + c
   y=          ,   y=                  .
        cx + d               dx + e
12. V các ñư ng cong sau:
                   x2   y2                 x2   y2
    2
   y = 2px            + 2 =1                  - 2 = ±1
                   a2  b                   a2  b
Bài t p l n: Vi t chương trình kh o sát và v ñ th các hàm s sơ c p          bài t p s 11.




                                                                                      23
CHƯƠNG 2

                                 TÔ MÀU

2.1. GI I THI U V CÁC H MÀU

  Giác quan c a con ngư i c m nh n ñư c các v t th xung quanh thông qua các tia
sáng màu t t hơn r t nhi u so v i 2 màu tr ng ñen. Vì v y, vi c xây d ng nên các
chu n màu là m t trong nh ng lý thuy t cơ b n c a lý thuy t ñ h a.

  Vi c nghiên c u v màu s c ngoài các y u t v m t v t lý như bư c sóng, cư ng
ñ , còn có 3 y u t khác liên quan ñ n c m nh n sinh lý c a m t ngư i dư i tác ñ ng
c a chùm sáng màu ñi ñ n t v t th là: Hue (s c màu), Saturation (ñ b o hòa),
Lightness (ñ sáng). M t trong nh ng h màu ñư c s d ng r ng rãi ñ u tiên do
A.H.Munsell ñưa ra vào năm 1976, bao g m 3 y u t : Hue, Lightness và Saturation.

  Ba mô hình màu ñư c s d ng và phát tri n nhi u trong các ph n c ng là: RGB -
dùng v i các màn hình CRT (Cathode ray bube), YIQ – dùng trong các h th ng ti vi
màu băng t n r ng và CMY - s d ng trong m t s thi t b in màu.

  Ngoài ra, còn có nhi u h màu khác như: HSV, HSL, YIQ, HVC, ...

2.1.1.H RGB (Red, Green, Blue)

  M t c a chúng ta c m nh n ba màu rõ nh t là Red (ñ ), Green (l c), Blue (xanh).
Vì v y, ngư i ta ñã xây d ng mô hình màu RGB (Red,Green, Blue) là t p t t c các
màu ñư c xác ñ nh thông qua ba màu v a nêu. Chu n này ñ u tiên ñư c xây d ng cho
các h vô tuy n truy n hình và trong các máy vi tính. T t nhiên, không ph i là t t c
các màu ñ u có th bi u di n qua ba màu nói trên nhưng h u h t các màu ñ u có th
chuy n v ñư c.

  H này ñư c xem như m t kh i ba chi u v i màu Red là tr c X, màu Green là tr c
Y và màu Blue là tr c Z. M i màu trong h này ñư c xác ñ nh theo ba thành ph n
RGB (Hình 2.1).
Chương II. Tô màu

                                          Z



                                       Blue                    Cyan

                             Magenta
                                                       White

                                                                      Y
                                              Black
                                                           Green

                                    Red               Yellow


                             X


                                 Hình 2.1. H màu RGB
  Ví d :

    Màu Red là (1, 0, 0)
    Màu Blue là (0, 0, 1)
    Red + Green = Yellow
    Red + Green + Blue = White
2.1.2. H CMY (Cyan, Magenta, Yellow)

  H này cũng ñư c xem như m t kh i ba chi u như h RGB. Nhưng h CMY trái
ngư c v i h RGB, ch ng h n:

    White có thành ph n (0, 0, 0)
    Cyan có thành ph n (1, 0, 0)
    Green có thành ph n (1, 0, 1) ...
  Sau ñây là công th c chuy n ñ i t h RGB → CMY :

                         C  1  R 
                         M  = 1 − G 
                            
                         Y  1  B 
                            
2.1.3. H YIQ

  H màu này ñư c ng d ng trong truy n hình màu băng t n r ng t i M , do ñó nó
có m i quan h ch t ch v i màn hình raster. YIQ là s thay ñ i c




                                                                                        26
Chương II. Tô màu

                         Y  0.299 0.587       0.114   R 
                          I  = 0.596 − 0.275 − 0.321 * G 
                                                      
                         Q  0.212 − 0.523 0.311   B 
                                                      

  Ma tr n ngh ch ñ o c a ma tr n bi n ñ i RGB thành h YIQ ñư c s d ng cho phép
bi n ñ i t h YIQ thành RGB.

2.1.4. H HSV (Hue, Saturation, Value)

  Mô hình màu này còn ñư c g i là h HSB v i B là Brightness (ñ sáng) d a trên cơ
s n n t ng tr c giác v tông màu, s c ñ và s c thái m thu t (Hình 2.2).
  Hue có giá tr t 00 → 3600
  S, V có giá tr t   0 →1
                                                     V
                                  Green                      Yellow
                                             1.0
                          Cyan                       White            Red

                                    Blue                     White
                                                                        H




                                                                                S
                                            0.0
                                             Black

                                   Hình 2.2. H màu HSV
Ví d :

Red ñư c bi u di n (00, 1, 1)
Green ñư c bi u di n (1200,1,1)
2.1.5. H HSL (Hue, Saturation, Lightness)
   H này ñư c xác ñ nh b i t p h p hình chóp sáu c nh ñôi c a không gian hình tr
(hình 2.3).
                                            1.0      L


                                                     White




                                  Green                      Yellow

                           Cyan             0.5                       Red

                                     Blue                    White
                                                                       H




                                                                            S
                                            0.0
                                             Black
                                    Hình 2.3. H màu HSL

                                                                                                  27
Chương II. Tô màu

2.2. CÁC THU T TOÁN TÔ MÀU

2.2.1. Bài toán
                                                                          P2
  Cho ña giác S xác ñ nh b i n ñ nh : P1, P2,
..., Pn. Hãy tô màu mi n S.                                      W
                                                                P1                     P3
* Phương pháp t ng quát :                                             S

  - Tìm hình ch nh t W nh nh t ch a S                   P5
(hình 2.4).
  - Duy t qua t t c các ñi m P(x, y) ∈ W.                                       P4
N u P ∈ S thì tô màu ñi m P.                                         Hình 2.4
2.2.2. Thu t toán xác ñ nh P ∈ S

2.2.2.1. S là ña giác l i

  - L y P ∈ W, n i P v i các ñ nh c a S thì ta ñư c n tam giác : Si= PPiPi+1, v i
Pn+1=P1.
               n

  -N u     ∑ dt(S )
              i =1
                     i   = dt(S) thì P ∈ S.

  Ta có công th c tính di n tích c a S:

                                       1 n
                                     S= | ∑xi yi+1 −xi+1yi) |
                                             (
                                       2 i=1

2.2.2.2. Trư ng h p t ng quát (Thu t toán Jordan)

   L y P(x, y) ∈ W, k n a ñư ng th ng ∆P xu t phát t P và không ñi qua các ñ nh
c a ña giác S.
  G i S(P) là s giao ñi m c a ∆P v i các biên c a S.
  N u S(P) l thì P ∈ S.
  * V n ñ còn l i là tìm S(P):

Bư c 1: K n a ñư ng th ng ∆P // 0y và hư ng v phía y>0.

Bư c 2: V i m i c nh Ci= PiPi+1 c a S:

  + N u x=xi thì xét 2 c nh có 1 ñ u là Pi:
     N u y<yi thì

                                                                                        28
Chương II. Tô màu

       • N u c 2 ñ u kia      cùng m t phía c a ∆P thì ta tính ∆P c t c 2 c nh.
       • Ngư c l i : ∆P c t 1 c nh.
  + Ngư c l i:
       • N u x>Max(xi,xi+1) ho c x<Min(xi,xi+1) thì ∆P không c t Ci
       • Ngư c l i:
          -N u y<= Min(yi, yi+1) thì ∆P c t Ci
          -Ngư c l i :
             Xét t a ñ giao ñi m (x0, y0) c a ∆P v i Ci
             N u y >= y0 thì ∆P không c t Ci. Ngư c l i ∆P c t Ci.
Thu t toán này có th ñư c cài ñ t b ng ño n chương trình như sau:

Type      ToaDo=record
              x,y:integer;
             End;
          Mang=array[0..30] of ToaDo;

Function SOGIAODIEM(a:Mang; n:Byte):Integer;
 var dem,i,j,s:Integer;
 Begin
   dem:=0;
   for i:=1 to n do       { Tim so giao diem }
    begin
     if i=n then j:=1 else j:=i+1;
     if i=1 then s:=n else s:=i-1;
     if x=a[i].x then
       begin
        if y<a[i].y then
         if (x<=Min(a[s].x ,a[j].x))OR
      (x>=Max(a[s].x,a[j].x)) then dem:=dem+2
         else dem:=dem+1;
       end
     else
        if (x>Min(a[i].x,a[j].x)) and
     (x<Max(a[j].x,a[i].x)) then
         if y<=Min(a[i].y,a[j].y) then dem:=dem+1
         else if y <= (x-a[j].x)*(a[i].y-a[j].y)/
        (a[i].x-a[j].x)+a[j].y then dem:=dem+1;
    end;
 SOGIAODIEM:=dem;
End;



                                                                                  29
Chương II. Tô màu

2.2.3. Thu t toán tô màu theo dòng quét (Scanline)

     ð t x0 = Min(xi), i∈ [1,n].
                                                y
Bư c 1: K Dy//0y ñi qua x0 (hình 2.5).
                                                    Dy
Bư c 2: Xác ñ nh các giao ñi m Mi-
(x,y) c a Dy v i các c nh Ci.

     N u có c nh Ci = PiPi+1 song song và
trùng v i Dy thì xem như Dy c t Ci t i
2 ñi m Pi và Pi+1.

Bư c 3: S p x p l i các ñi m Mi theo                x0        xi
th    t tăng d n ñ i v i yi (ñi m ñ u               x
                                                            Hình 2.5
tiên có th t là 1).

Bư c 4: Nh ng ñi m n m trên Dy         gi a giao ñi m l và giao ñi m ch n liên ti p là
nh ng ñi m n m trong ña giác và nh ng ñi m này s ñư c tô.

Bư c 5: Tăng x0 lên m t Pixel. N u x0 ≤ Max(xi) thì quay l i bư c 1.

2.2.4. Thu t toán tô màu theo v t d u loang

     L y P(x,y) ∈ S, tô màu P.                                            X
     Xét các ñi m lân c n c a P (Hình 2.6).                        X      O       X
                                                                   O
     N u các ñi m lân c n ñó v n còn thu c S và chưa                      X
ñư c tô màu thì tô màu các ñi m lân c n ñó...

     Thu t toán trên có th ñư c minh h a b ng th t c
                                                                       Hình 2.6
ñ qui:

Procedure TOLOANG(x,y:Integer; Color:Word);
     Begin
       If (P(x,y)∈S)and(P(x,y)chưa tô) Then
          Begin
             PutPixel(x,y,Color);
             TOLOANG(x+1,y,Color);
             TOLOANG(x-1,y,Color);

                                                                                      30
Chương II. Tô màu

              TOLOANG(x,y+1,Color);
              TOLOANG(x,y-1,Color);
        End;
  End;
BÀI T P

1. Vi t hàm DienTich(P:Array; n:Byte); ñ tính di n tích c a ña giác l i có n ñ nh
lưu trong m ng P.

2. Vi t hàm KiemTra(x,y:Integer; P:Array; n:Byte):Boolean; ñ ki m tra ñi m
(x,y) n m trong hay ngoài ña giác có n ñ nh ñư c lưu trong m ng P theo hai cách:

  -   Dùng công th c tính di n tích ña giác (ñ i v i ña giác l i).

  -   Dùng thu t toán Jordan (ñ i v i ña giác b t kỳ).

2. Vi t chương trình cài ñ t thu t toán tô màu m t ña giác theo thu t toán Scanline.

3. Vi t chương trình cài ñ t thu t toán tô màu m t ña giác theo v t d u loang theo hai
phương án:
   a. ð qui.
  b. Kh ñ qui.
4. Vi t th t c FillRec(x1,y1,x2,y2:Integer; color:Byte); ñ tô màu hình ch nh t xác
ñ nh b i 2 ñ nh (x1,y1) và (x2,y2).

5. Vi t th t c FillEllipse(x,y,Rx,Ry:Integer; color:Byte); ñ tô màu Ellipse có tâm
(x,y) và bán kính theo hai tr c là Rx và Ry.

6. Vi t th t c FillSector(x,y,Rx,Ry,g1,g2:Integer; color:Byte); ñ tô màu hình qu t
Ellipse có tâm (x,y), bán kính theo hai tr c là Rx và Ry, góc b t ñ u là g1 và góc k t
thúc là g2.

7. Vi t th t c Donut(x,y,Rmin,Rmax:Integer; color:Byte); ñ tô màu hình vành
khăn có tâm (x,y) và bán kính hai ñư ng tròn tương ng là Rmin và Rmax.

Bài t p l n: Xây d ng m t thư vi n ñ h a MYGRAPH tương t như thư vi n
GRAPH.TPU c a Turbo Pascal.




                                                                                       31
CHƯƠNG III

                                        XÉN HÌNH

3.1. ð T V N ð

   Cho m t mi n D ⊂ Rn và F là m t hình trong Rn (F ⊂ Rn). Ta g i F ∩ D là hình có
ñư c t F b ng cách xén vào trong D và ký hi u là ClipD(F).

   Bài toán ñ t ra là xác ñ nh ClipD(F).

3.2. XÉN ðO N TH NG VÀO VÙNG HÌNH CH                              NH T C A R2

3.2.1. C nh c a hình ch nh t song song v i các tr c t a ñ

   Lúc này:

                                      X min ≤ x ≤ X max 
               D = ( x, y ) ∈ R 2 |                     
                                      Y min ≤ y ≤ Y max 

và F là ño n th ng n i 2 ñi m (x1,y1), (x2,y2) nên phương trình c a F là:

                      x = x1 + ( x 2 − x1). t
                                                     t ∈ [0,1]
                      y = y1 + ( y 2 − y1). t

   Do ñó, F có th ñư c vi t dư i d ng:

        F = {(x,y) ∈ R2 | x = x1 + (x2 -x1).t; y = y1 + (y2 -y1).t; 0 ≤ t ≤ 1}

   Khi ñó, giao ñi m c a F và D chính là
                                                                     A
nghi m c a h b t phương trình (theo t):                         y           P
                                                             yMax
    Xmin ≤ x1+ (x2 - x1). t ≤ Xmax
                                                                                      Q
     Ymin ≤ y1+ (y2 - y1). t ≤ Ymax                         yMin
              0≤ t ≤1
                                                                                            B

   G i N là t p nghi m c a h phương trình                           xMin            xMax X
trên.
                                                                         Hình 3.1
   N u N = ∅ thì ClipD(F) = ∅
   N u N ≠ ∅ thì N = [t1, t2]             (t1 ≤ t2)
   G i P, Q là 2 giao ñi m xác ñ nh b i:
Chương III. Xén hình

           Px = x1 + ( x 2 − x1). t 1            Qx = x1 + ( x 2 − x1). t 2
                                                
           Py = y1 + ( y 2 − y1). t 1           Qy = y1 + ( y 2 − y1). t 2

thì:      ClipD(F) = PQ             (Hình 3.1)
3.2.1.1. Thu t toán Cohen - Sutherland

• Chia m t ph ng ra làm 9 vùng, m i vùng ñánh m t mã nh phân 4 bit (hình 3.2).

       Bit 1: Qui ñ nh vùng n m bên trái c a s
                                                                    100           100       101
                                                                    1             0         0
       Bit 2: Qui ñ nh vùng n m bên ph i c a s
                                                                     000          000       001
       Bit 3: Qui ñ nh vùng n m bên dư i c a s                       1            0         0

       Bit 4: Qui ñ nh vùng n m bên trên c a s                       010          010       011
                                                                     1            0         0
• Xét ñi m P ∈ R2 :                                                              Hình 3.2

                           1        nãúuPx < X min
          Pleft       = 
                           0        Ngæåüclaûi

                           1        nãúuP > X max
                                          x
          PRight      = 
                           0        Ngæåüc laûi

                           1        nãúuPy < Y min
          PBelow = 
                           0        Ngæåüclaûi

                           1        nãúuPy > Y max
          PAbove =         
                           0        Ngæåüclaûi

• Xét ño n th ng AB, ta có các trư ng h p sau:

       i/ N u Mã(A) = Mã(B) = 0000 thì AB ∈ D ⇒ ClipD(F) = AB

       ii/ N u Mã(A) AND Mã(B) ≠ 0000 thì ño n AB n m hoàn toàn bên ngoài hình
          ch nh t ⇒ ClipD(F) = ∅

       Chú ý: Phép toán AND là phép toán Logic gi a các bit.

       iii/ N u (Mã(A) AND Mã(B) = 0000) và (Mã(A) ≠ 0000 ho c Mã(B) ≠ 0000) thì:

          Gi s Mã(A) ≠ 0000 ⇔ A n m ngoài hình ch nh t.

        ♦ N u Aleft = 1 : thay A b i ñi m n m trên ño n AB và c t c nh trái (n i dài)
           c a hình ch nh t.
                                                                                                  33
Chương III. Xén hình

    ♦ N u Aright = 1: thay A b i ñi m n m trên ño n AB c t c nh ph i (n i dài) c a
        hình ch nh t.

    ♦ N u ABelow = 1: thay A b i ñi m n m trên ño n AB và c t c nh dư i (n i
        dài) c a hình ch nh t.

    ♦ N u AAbove = 1: thay A b i ñi m n m trên ño n AB và c t c nh trên (n i
        dài) c a hình ch nh t.

     Chú ý: Quá trình này ñư c l p l i: Sau m i l n l p, ta ph i tính l i mã c a A.
N u c n, ph i ñ i vai trò c a A và B ñ ñ m b o A luôn luôn n m bên ngoài hình ch
nh t. Quá trình s d ng khi x y ra m t trong 2 trư ng h p: i/ ho c ii/

3.2.1.2. Thu t toán chia nh phân

• Ý tư ng c a thu t toán này tương t như thu t toán tìm nghi m b ng phương pháp
   chia nh phân.

• M nh ñ : Cho M: trung ñi m c a ño n AB, Mã(A) ≠ 0000, Mã(B) ≠ 0000, Mã(M)
   ≠ 0000 thì ta có:

          [Mã(A) AND Mã(M)] ≠ 0000

   ho c [Mã(M) AND Mã(B)] ≠ 0000.

   Ý nghĩa hình h c c a m nh ñ : N u c ba ñi m A, B, M ñ u              ngoài hình ch
nh t thì có ít nh t m t ño n hoàn toàn n m ngoài hình ch nh t.

• Ta phát th o thu t toán như sau:

   i/ N u Mã(A) = 0000 và Mã(B) = 0000 thì ClipD(F) = AB

   ii/ N u Mã(A) AND Mã(B) ≠ 0000 thì ClipD(F) = ∅

   iii/ N u Mã(A) = 0000 và Mã(B) ≠ 0000 thì:

      P:=A; Q:=B;

      Trong khi |xP -xQ| + |yP - yQ| ≥ 2 thì:

          ♦ L y trung ñi m M c a PQ;

          ♦ N u Mã(M) ≠ 0000 thì Q:= M.


                                                                                   34
Chương III. Xén hình

             Ngư c l i: P:= M.

      ⇒ ClipD(F) = AP

   iv/ N u Mã(A) ≠ 0000 và Mã(B) = 0000 thì: ð i vai trò c a A, B và áp d ng ii/

   v/ N u Mã(A) ≠ 0000 ≠ Mã(B) và [Mã(A) AND Mã(B)]= 0000 thì:

      P:=A; Q:=B;

      L y M: trung ñi m PQ;

      Trong khi Mã(M) ≠ 0000 và |xP - xQ| + |yP - yQ| ≥ 2 thì:

          ♦ N u Mã(M) AND Mã(Q) ≠ 0000 thì Q:=M. Ngư c l i P:=M.

          ♦ L y M: trung ñi m PQ.

      N u Mã(M) ≠ 0000 thì ClipD(F) = ∅ . Ngư c l i, áp d ng ii/ ta có:

                  ClipD(MA) = MA1

                  ClipD(MB) = MB1

Suy ra:           ClipD(F) = A1B1
3.2.1.3. Thu t toán Liang - Barsky

   ð t    ∆x = x2 - x1              ∆y = y2 - y1

          p1 = - ∆x                 q1 = x1 - xMin

          p2 = ∆x                   q2 = xMax - x1

          p3 = - ∆y                 q3 = y1 - yMin

          p4 = ∆y                   q4 = yMax - y1

thì h b t phương trình giao ñi m c a F và D có th vi t l i:

          Pk .t ≤ Q k , k = 1..4
          
           0 ≤ t ≤1

   Xét các trư ng h p sau:

   i/ ∃k: Pk = 0 và Qk < 0: ( ðư ng th ng song song v i các biên và n m ngoài vùng
      hình ch nh t )


                                                                                   35
Chương III. Xén hình

      ⇒ ClipD(F) = ∅

      ii/ ∀k ∈ {1,2,3,4}: Pk ≠ 0 ho c Qk ≥ 0:

      ð t   K1 = {k | Pk > 0 }

            K2 = {k | Pk < 0 }

                          Qk
            u1 = Max({       | k ∈ K2} ∪ {0})
                          Pk

                         Qk
            u2 = Min({      | k ∈ K1} ∪ {1})
                         Pk

      N u u1 > u2 thì ClipD(F) = ∅

      Ngư c l i: G i P, Q là 2 ñi m th a

                 Px = x1 + ∆x.u1    Qx = x1 + ∆x.u2
                                 và 
                Py = y1 + ∆y.u1     Qy = y1 + ∆y.u2

      thì ClipD(F) = PQ

3.2.2. Khi c nh c a vùng hình ch nh t t o v i tr c hoành m t góc α∈(0,Π/2)
                                                                      Π

      Ta dùng phép quay tr c t a ñ ñ ñưa bài toán v trư ng h p các c nh c a hình
ch nh t song song v i các tr c t a ñ (hình 3.3).
                                                        y
      G i R là ma tr n quay c a phép ñ i tr c, ta có:

              X min        X min
                     = R.        
              Y min        Y min 
                                                                          α
              X max        X max
                     = R.        
              Y max        Y max 
                                                        O                      x
               cos(α ) sin(α ) 
v i      R=                                                 Hình 3.3
               − sin(α ) cos(α )




                                                                              36
Chương III. Xén hình

3.3. XÉN ðO N TH NG VÀO HÌNH TRÒN

   Gi s ta có ñư ng tròn tâm O(xc,yc) bán kính R và ño n th ng c n xén là AB v i
A(x1,y1), B(x2,y2) (Hình 3.4).
                                                           A
* Thu t toán:
                                                                                   B
   • Tính d(O,AB)

   • Xét các trư ng h p:

      i/ N u d > R thì ClipD(F) = ∅
                                                                     Hình 3.4
      ii/ N u d = R thì ClipD(F) = A0 v i A0 là
          chân ñư ng vuông góc h t O xu ng AB.

      iii/ N u d < R thì xét các trư ng h p sau:

          ♦ (OA < R) AND (OB < R) thì ClipD(F) = AB

          ♦ N u m t ñi m n m trong và ñi m kia n m ngoài hình tròn, ch ng h n
               OA<R và OB>R thì ClipD(F) = AI v i I là giao ñi m duy nh t gi a AB
               và ñư ng tròn.

          ♦ (OA > R) AND (OB > R) thì ClipD(F) = IJ v i I, J là hai giao ñi m c a
               AB v i ñư ng tròn.

   Sau ñây là phương pháp tìm giao ñi m gi a ño n th ng và ñư ng tròn:

   ◊ Phương trình ñư ng tròn: (x - xc)2 + (y - yc)2 = R2       (1)

                            x = x1 + ( x 2 − x1).λ
                           
   ◊ Phương trình ño n AB:  y = y1 + ( y 2 − y1).λ            (2)
                                 0 ≤ λ ≤1
                           

                                          − a ± a 2 − bc
   ◊ Thay (2) vào (1) ta suy ra: λ =
                                                b

   Trong ñó:

               a = ∆x.(x1 - xc) + ∆y.(y1 - yc)

               b = (∆x)2 + (∆y)2

               c = (x1 - xc)2 + (y1 - yc)2 - R2

                                                                                       37
Chương III. Xén hình

              ∆x = x2 - x1

              ∆y = y2 - y1

   ◊ D a vào ñi u ki n 0 ≤ λ ≤ 1 ñ ch n giao ñi m.

3.4. XÉN ðƯ NG TRÒN VÀO HÌNH CH                    NH T CÓ CÁC C NH SONG
  SONG V I TR C T A ð

   Lúc này:

      D = {(x,y)| xMin ≤ x ≤ xMax ; yMin ≤ y ≤ yMax }

      F = { (x,y)| (x - xC)2 + (y - yC)2 = R2}
                                                                  Hình
   *Trư c h t, ta ki m tra các trư ng h p ñ c bi t sau:           3.5

     i/   N u xMin ≤ xC -R; xC +R ≤ xMax;

               yMin ≤ yC -R; yC +R ≤ yMax;

      thì ClipD(F) = F (Hình 3.5)

    ii/   N u xC +R < xMin

          ho c xC -R > xMax

          ho c yC +R < yMin

          ho c yC - R > yMax
                                                             Hình
                                                             3.6
      thì ClipD(F) = ∅ (Hình 3.6)

   *Xét trư ng h p còn l i: Tìm các giao ñi m c a F và D. S p x p các giao ñi m ñó
theo chi u ngư c kim ñ ng h .

     • Các cung tròn ñư c t o b i 2 giao ñi m liên ti p s hoàn toàn n m trong D
          ho c hoàn toàn n m bên ngoài D.

     • ð xác ñ nh các cung này n m trong hay ngoài D, ta ch c n l y trung ñi m
          M c a cung ñó. N u M ∈ D thì cung ñó n m trong D, ngư c l i thì nó n m
          ngoài D.




                                                                               38
Chương III. Xén hình

3.5. XÉN ðA GIÁC VÀO HÌNH CH                 NH T




                          Hình 3.7. Xén ña giác vào hình ch nh t

Thu t toán SutherLand - Hodgman

  i/    N u t t c các ñ nh c a ña giác ñ u n m trong hình ch nh t thì hình c n xén
        chính là ña giác và bài toán coi như ñã ñư c gi i quy t.

                                                                                       Ai+
   Ai                          Ai                                Ai+

                            Ai+           Ai+
       Ai+                                                                     Ai
                                                            Ai

                Ai

                              Hình 3.8. Các trư ng h p c n xét

 ii/    Trư ng h p ngư c l i:

   - Xu t phát t m t ñ nh n m ngoài hình ch nh t, ta ch y theo d c biên c a ña
giác. V i m i c nh c a ña giác, ta có các trư ng h p sau:

             N u c hai ñ nh ñ u n m ngoài hình ch nh t thì:

             N u Ma(Ai) and Ma(Ai+1) ≠ 0000 thì không lưu ñ nh

             Ngư c l i thì lưu hai giao ñi m.

             Ai ngoài, Ai+1 trong: lưu giao ñi m P và Ai+1.

             C hai ñ nh ñ u n m trong hình ch nh t: lưu Ai và Ai+1.

             Ai trong, Ai+1 ngoài: lưu Ai và giao ñi m P.


                                                                                        39
Chương III. Xén hình

   - Sau khi duy t qua t t c các c nh c a ña giác thì ta có ñư c m t dãy các ñ nh m i
phát sinh: B1, B2, ..., Bn

   N u trong dãy các ñ nh m i này có hai ñ nh liên ti p không n m trên cùng m t
c nh c a hình ch nh t , gi s hai ñ nh ñó là Bi và Bi+1 thì ta ñi d c các c nh c a hình
ch nh t t Bi ñ n Bi+1 ñ tìm t t c các ñ nh c a hình ch nh t n m trong ña giác r i
b sung chúng vào gi a Bi và Bj.

   T p ñ nh m i tìm ñư c chính là ña giác xén ñư c.

   - N u t p ñ nh m i này là r ng: N u có m t ñ nh c a hình ch nh t n m trong ña
giác thì hình xén ñư c chính là toàn b hình ch nh t. Ngư c l i, hình xén ñư c là
r ng.

BÀI T P

1. Vi t hàm MA(P:ToaDo):Byte; ñ ñánh mã cho ñi m P.

2. Cài ñ t thu t toán xén m t ño n th ng vào m t hình ch nh t theo các thu t toán:
Liang-Barsky, Cohen-Sutherland, chia nh phân.

3. Cài ñ t thu t toán xén m t ño n th ng vào m t hình tròn.

4.Cài ñ t thu t toán xén m t ña giác vào m t vùng hình ch nh t.




                                                                                   40
CHƯƠNG IV

                           CÁC PHÉP BI N ð I

4.1. CÁC PHÉP BI N ð I TRONG M T PH NG

4.1.1. Cơ s toán h c

   Phép bi n ñ i Affine 2D s bi n ñi m P(x,y) thành ñi m Q(x’,y’) theo h phương
trình sau:

             x’ = Ax + Cy + trx

             y’ = Bx + Dy + try

   Dư i d ng ma tr n, h này có d ng:

                             A B
             (x’ y’) = (x y). 
                                 + (trx try)
                                 
                             C D

   Hay vi t g n hơn:        X’ = X.M + tr

   v i X’=(x’,y’); X=(x,y); tr=(trx,try) - vector t nh ti n;

              A B
       M= 
                  - ma tr n bi n ñ i.
                  
              C D

4.1.1.1. Phép ñ ng d ng

   Ma tr n c a phép ñ ng d ng là:

               A 0               x ' = Ax
       M=                 ⇔
               0 D               y ' = Dy

   Cho phép ta phóng to hay thu nh hình theo m t hay hai chi u.

4.1.1.2. Phép ñ i x ng

       ðây là trư ng h p ñ c bi t c a phép ñ ng d ng v i A và D ñ i nhau.

              −1 0
                          ñ i x ng qua Oy
              0 1
Chương IV. Các phép bi n ñ i

            1 0 
                         ñ i x ng qua Ox
             0 −1

             −1 0 
                         ñ i x ng qua g c t a ñ
             0 −1

4.1.1.3. Phép quay

                                                    Cos (α ) Sin(α ) 
   Ma tr n t ng quát c a phép quay là          R= 
                                                                       
                                                                        
                                                    − Sin(α ) Cos (α ) 

   Chú ý:

      • Tâm c a phép quay ñư c xét             ñây là g c t a ñ .

      • ð nh th c c a ma tr n phép quay luôn luôn b ng 1.

4.1.1.4. Phép t nh ti n

      Bi n ñ i (x,y) thành (x’,y’) theo công th c sau

                                x’ = x + M

                                y’ = y + N

   ð thu n ti n bi u di n dư i d ng ma tr n, ta có th bi u di n các t a ñ dư i d ng
t a ñ thu n nh t (Homogen):

                     1     0    0
                                 
            (x y 1).  0    1    0 = (x + M      y+N        1)
                                 
                     M    N     1

4.1.1.5. Phép bi n d ng

   Ma tr n t ng quát là: M =  1 g 
                                  
                                  h    
                                      1
                                        
   Trong ñó:

      g = 0: bi n d ng theo tr c x.

      h = 0: bi n d ng theo tr c y.

4.1.1.6. H p c a các phép bi n ñ i

      Có ma tr n bi n ñ i là tích c a các ma tr n c a các phép bi n ñ i.



                                                                                      .42
Chương IV. Các phép bi n ñ i

   Ví d : Phép quay quanh m t ñi m b t kỳ trong m t ph ng có th th c hi n b i tích
c a các phép bi n ñ i sau:

      ° Phép t nh ti n tâm quay ñ n g c t a ñ .

      ° Phép quay v i góc ñã cho.

      ° Phép t nh ti n k t qu v tâm quay ban ñ u.

   Như v y, ma tr n c a phép quay quanh m t ñi m b t kỳ ñư c th c hi n b i tích
c a ba phép bi n ñ i sau:

           1     0   0  Cos(α ) Sin (α ) 0  1         0   0
                                                           
           0     1   0 .  − Sin (α ) Cos(α ) 0 .  0   1   0
                                                           
          −M    −N   1        0        0     1  M     N   1

4.2. Ví d minh h a

   Vi t chương trình mô ph ng phép quay m t tam giác quanh g c t a ñ .

Uses crt,Graph;
Type ToaDo=Record
          x,y:real;
         End;
 var k,Alpha,goc:real;
       P,PP,PPP,P1,P2,P3:ToaDo;
       x0,y0:word;
       ch:char;
Procedure VeTruc;
  Begin
       Line(GetMaxX div 2,0,GetMaxX div 2,GetMaxY);
       Line(0,GetMaxY div 2,GetMaxX,GetMaxY div 2);
  End;
Procedure VeHinh(P1,P2,P3:ToaDo);
  Begin
   Line(x0+Round(P1.x*k),y0-Round(P1.y*k),
          x0+Round(P2.x*k),y0- Round(P2.y*k));
   Line(x0+Round(P2.x*k),y0-Round(P2.y*k),

                                                                                   .43
Chương IV. Các phép bi n ñ i

         x0+Round(P3.x*k),y0- Round(P3.y*k));
  Line(x0+Round(P3.x*k),y0-Round(P3.y*k),
         x0+Round(P1.x*k),y0- Round(P1.y*k));
  End;
Procedure QuayDiem(P:ToaDo;Alpha:real; var PMoi:ToaDo);
  Begin
    PMoi.x:=P.x*cos(Alpha)-P.y*sin(Alpha);
    PMoi.y:=P.x*sin(Alpha)+P.y*cos(Alpha);
  End;
Procedure QuayHinh(P1,P2,P3:ToaDo;Alpha:real;
                       var P1Moi,P2Moi,P3Moi:ToaDo);
  Begin
   QuayDiem(P1,Alpha,P1Moi);
   QuayDiem(P2,Alpha,P2Moi);
   QuayDiem(P3,Alpha,P3Moi);
  End;
BEGIN
  ThietLapDoHoa;
  x0:=GetMaxX div 2;
  y0:=GetMaxY div 2;
  k:=GetMaxX/50;
  Vetruc;
  P.x:=5; P.y:=3; PP.x:=2; PP.y:=6; PPP.x:=6; PPP.y:=-4;
  P1.x:=5; P1.y:=3; P2.x:=2; P2.y:=6; P3.x:=6; P3.y:=-4;
  Alpha:=0; goc:=Pi/180;
  SetWriteMode(XORPut);
  VeHinh(P,PP,PPP);
  Repeat
    ch:=readkey;
    if ord(ch)=0 then ch:=readkey;
    case Upcase(ch) of
          #75: Begin


                                                                .44
Chương IV. Các phép bi n ñ i

                           VeHinh(P1,P2,P3);
                           Alpha:=Alpha-goc;
                           QuayHinh(P,PP,PPP,Alpha,P1,P2,P3);
                           VeHinh(P1,P2,P3);
                       End;
               #77: Begin
                           VeHinh(P1,P2,P3);
                           Alpha:=Alpha+goc;
                           QuayHinh(P,PP,PPP,Alpha,P1,P2,P3);
                           VeHinh(P1,P2,P3);
                       End;
       End;
  Until ch=#27;
  CloseGraph;
END.
4.2. CÁC PHÉP BI N ð I TRONG KHÔNG GIAN

4.2.1. Các h tr c t a ñ

   ð ñ nh v m t ñi m trong không gian, ta có th ch n nhi u h tr c t a ñ :

                           Z                                        Z




                                                                               Y



                                         Y
                       O




           X
                   H tr c ti p                               H gián ti p

                                             Hình 4.1

       •       H   t a ñ tr c ti p : n u tay ph i c m tr c Z sao cho ngón cái hư ng theo
   chi u dương c a tr c Z thì b n ngón còn l i s quay t tr c X sang tr c Y (Qui t c
   bàn tay ph i).

                                                                                    .45
Chương IV. Các phép bi n ñ i

       •    H   t a ñ gián ti p : ngư c l i (Qui t c bàn tay trái).

Thông thư ng, ta luôn luôn ñ nh v m t ñi m trong không gian qua h tr c ti p.

   Trong h t a ñ tr c ti p, ta chia ra làm 2 lo i sau:

                          Z                                             Z




                                       P(x,y,z)                                      P(R,θ,φ)
                                                                            R
                                             Y                                  φ          Y
                      O                                             O

                                                                        θ



            X                                               X

                    H t a ñ Descarter                                       H c u
                                                  Hình 4.2
   Ta có công th c chuy n ñ i t a ñ t h này sang h khác:
                          θ      Φ
                x = R.Cos(θ).Cos(Φ)
                          θ      Φ
                y = R.Sin(θ).Cos(Φ)
                          Φ
                z = R.Sin(Φ)
                R 2 = x2 + y 2 + z 2
   ð thu n ti n cho vi c tính toán, t t c các ñi m trong không gian ñ u ñư c mô t
dư i d ng ma tr n 1x4, t c là (x,y,z,1). Vì v y, t t c các phép bi n ñ i trong không
gian ñ u ñư c bi u di n b i các ma tr n vuông 4x4 (Ma tr n Homogen).

4.2.2. Các công th c bi n ñ i

   Phép bi n ñ i Affine 3D có d ng: X’=X.M + tr

   v i X’=(x’,y’,z’);         X=(x,y,z);     M - ma tr n bi n ñ i;          tr=(trx,try,trz) - vector
t nh ti n

4.2.2.1. Phép thay ñ i t l

                A 0 0 0
                                                   x ' = A. x
                0 B 0 0                           
            M=                          ⇔            y ' = B. y
                0 0 C 0
                                                   z ' = C. z
                                                    
                0 0 0 1


                                                                                                .46
Chương IV. Các phép bi n ñ i

4.2.2.2. Phép ñ i x ng

               1     0    0
                           0
                           
                 0    1    0
                           0
          Mz =                        ñ i x ng qua m t (XY)
               0     0 −1 0
                           
               0     0 0 1

              1 0         0 0
                             
                0 −1       0 0
          My=                      ñ i x ng qua m t (XZ)
              0 0         1 0
                             
              0 0         0 1

                −1       0 0 0
                              
                 0        1 0 0
          Mx =                        ñ i x ng qua m t (YZ)
               0         0 1 0
                              
               0         0 0 1

4.2.2.3. Phép t nh ti n

             1       0     0 0
                                           x ' = x + M
               0      1     0 0             
          M=                          ⇔      y' = y + N
             0       0     1 0
                                            z' = z + P
                                             
             M       N     P 1

4.2.2.4. Phép quay

   Ta nh n th y r ng, n u phép quay quay quanh m t tr c nào ñó thì t a ñ c a v t
th t i tr c ñó s không thay ñ i. Do ñó, ta có ma tr n c a các phép quay như sau:

            Cos (θ ) Sin(θ )      0 0
                                     
            − Sin(θ ) Cos (θ )    0 0
      RZ = 
                0        0         1 0
                                     
                                  0 1
               0        0            

           1     0        0         0
                                     
            0 Cos (θ ) Sin(θ )      0
      RX = 
             0 − Sin(θ ) Cos (θ )    0
                                     
           0                        1
                  0       0          




                                                                                   .47
Chương IV. Các phép bi n ñ i

            Cos (θ )    0   Sin(θ )0
                                     
                0       1   0      0
      RY = 
             − Sin(θ )   0 Cos (θ ) 0 
                                     
                                   1
                0       0   0        

Chú ý: Tích c a 2 ma tr n nói chung không giao hoán nên k t qu c a 2 phép quay liên
      ti p tùy thu c vào th t th c hi n tích s .

          Ví d : RX.RY ≠ RY.RX

4.2.3. Ma tr n ngh ch ñ o

   ð nh nghĩa: Hai ma tr n ñư c g i là ngh ch ñ o c a nhau n u tích s c a chúng là
                   ma tr n ñơn v .

                   Ma tr n ngh ch ñ o c a ma tr n M ký hi u là M-1

      Ví d :

                    1 2 3  6 −2 −3  1 0 0
                                             
                    1 3 3 .  −1 1 0  =  0 1 0
                                             
                    1 2 4  −1 0 1   0 0 1

   Ngư i ta ch ng minh ñư c r ng: T t c các ma tr n c a các phép bi n ñ i ñã nêu
trên ñ u có ma tr n ngh ch ñ o.

   • Ma tr n ngh ch ñ o c a phép t nh ti n có ñư c b ng cách thay M, N, P b ng -
      M, -N, -P.

   • Ma tr n ngh ch ñ o c a phép thay ñ i t l có ñư c b ng cách thay A, B, C b ng
      1/A, 1/B, 1/C.

   • Ma tr n ngh ch ñ o c a phép quay có ñư c b ng cách thay góc θ b ng -θ .
                                                                         θ

4.3. CÁC PHÉP CHI U C A V T TH TRONG KHÔNG GIAN LÊN M T PH NG

4.3.1. Phép chi u ph i c nh (Perspective)

   Phép chi u này cho hình nh gi ng như khi nhìn v t th .

   ð tìm hình chi u P’(y’,z’) c a P(x,y,z), ta n i P v i m t (tâm chi u). Giao ñi m
c a ñư ng này v i m t quan sát chính là P’ (hình 4.3).

   Gi s P n m phía trư c m t, t c là P.x < E.

                                                                                 .48
Chương IV. Các phép bi n ñ i

                                                      Z




                                                                             P(x,y,z)


                                                 z'
                                                            P'



                                                      y'

                        (E,0,0)
                            Maét
                    X                                                                    Y


                                                           Maët phaún g chieáu



                                                Hình 4.3

   Phương trình c a tia ñi qua m t và P là: r(t) = (E,0,0).(1-t) + (x,y,z).t                         (*)

   Giao ñi m v i m t ph ng quan sát có thành ph n x’ = 0.

                                                                                    1
   Do thành ph n x’ c a tia r là E.(1-t) + x.t = 0 nên t =                                . Thay t vào (*) ta
                                                                                 1− x / E
tính ñư c:

                       y                z
             y’ =            va z’ =
                    1− x / E         1− x / E

NH N XÉT

   i/ Phép chi u ph i c nh không gi nguyên hình d ng c a v t th .

   ii/ Ch có nh ng ñư ng th ng song song v i m t ph ng chi u thì m i song song
      v i nhau.

   iii/ Phép chi u ph i c nh ñư c qui ñ nh b i 5 bi n:

      • Hư ng c a m t ph ng chi u so v i v t th .
      • ð cao c a tâm chi u so v i v t th .
      • Kho ng cách t tâm chi u ñ n v t th (R).
      • Kho ng cách t m t ph ng chi u ñ n tâm chi u (D).
      • ð d ch chuy n ngang c a tâm chi u so v i v t th .
   Chú ý: V i t a ñ c u, ta ch c n 4 tham s : R, Φ, θ, D.

                                                                                                           .49
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa
Ly thuyetdohoa

Más contenido relacionado

La actualidad más candente

800 meo vat_trong_cuoc_song
800 meo vat_trong_cuoc_song800 meo vat_trong_cuoc_song
800 meo vat_trong_cuoc_songHung Pham Thai
 
Giáo trình tin học đại cương đỗ thị mơ[bookbooming.com]
Giáo trình tin học đại cương   đỗ thị mơ[bookbooming.com]Giáo trình tin học đại cương   đỗ thị mơ[bookbooming.com]
Giáo trình tin học đại cương đỗ thị mơ[bookbooming.com]bookbooming1
 
Giao trinh-phan-cung-dien-tu[bookbooming.com]
Giao trinh-phan-cung-dien-tu[bookbooming.com]Giao trinh-phan-cung-dien-tu[bookbooming.com]
Giao trinh-phan-cung-dien-tu[bookbooming.com]bookbooming1
 
Giáo trình đào tạo visual basic 6.0 fpt software solution[bookbooming.com]
Giáo trình đào tạo visual basic 6.0   fpt software solution[bookbooming.com]Giáo trình đào tạo visual basic 6.0   fpt software solution[bookbooming.com]
Giáo trình đào tạo visual basic 6.0 fpt software solution[bookbooming.com]bookbooming1
 
Giao trinh sap 2000 v14
Giao trinh sap 2000 v14Giao trinh sap 2000 v14
Giao trinh sap 2000 v14Le Duy
 
7. sach etabs viet
7. sach etabs viet7. sach etabs viet
7. sach etabs viet256355
 
Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++Trần Thiên Đại
 
Huong dan do an chi tiet may sao đỏ
Huong dan do an chi tiet may sao đỏHuong dan do an chi tiet may sao đỏ
Huong dan do an chi tiet may sao đỏMạc Văn Giang
 
Đề cương môn xử lý ảnh
Đề cương môn xử lý ảnhĐề cương môn xử lý ảnh
Đề cương môn xử lý ảnhJean Valjean
 
Giao trinh cau truc du lieu va giai thuat
Giao trinh cau truc du lieu va giai thuatGiao trinh cau truc du lieu va giai thuat
Giao trinh cau truc du lieu va giai thuatPham Minh Hai
 
Bài giảng-mạng-viễn-thông-2016
Bài giảng-mạng-viễn-thông-2016Bài giảng-mạng-viễn-thông-2016
Bài giảng-mạng-viễn-thông-2016Huynh MVT
 
thuyết minh đồ án thép 2
thuyết minh đồ án thép 2 thuyết minh đồ án thép 2
thuyết minh đồ án thép 2 Ho Ngoc Thuan
 
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự Nhiên
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự NhiênLập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự Nhiên
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự NhiênMasterCode.vn
 

La actualidad más candente (17)

800 meo vat_trong_cuoc_song
800 meo vat_trong_cuoc_song800 meo vat_trong_cuoc_song
800 meo vat_trong_cuoc_song
 
Giáo trình tin học đại cương đỗ thị mơ[bookbooming.com]
Giáo trình tin học đại cương   đỗ thị mơ[bookbooming.com]Giáo trình tin học đại cương   đỗ thị mơ[bookbooming.com]
Giáo trình tin học đại cương đỗ thị mơ[bookbooming.com]
 
Giao trinh-phan-cung-dien-tu[bookbooming.com]
Giao trinh-phan-cung-dien-tu[bookbooming.com]Giao trinh-phan-cung-dien-tu[bookbooming.com]
Giao trinh-phan-cung-dien-tu[bookbooming.com]
 
Giáo trình đào tạo visual basic 6.0 fpt software solution[bookbooming.com]
Giáo trình đào tạo visual basic 6.0   fpt software solution[bookbooming.com]Giáo trình đào tạo visual basic 6.0   fpt software solution[bookbooming.com]
Giáo trình đào tạo visual basic 6.0 fpt software solution[bookbooming.com]
 
Giao trinh sap 2000 v14
Giao trinh sap 2000 v14Giao trinh sap 2000 v14
Giao trinh sap 2000 v14
 
7. sach etabs viet
7. sach etabs viet7. sach etabs viet
7. sach etabs viet
 
Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++
 
Đề tài: Ứng dụng công nghệ Lidar thành lập bản đồ 3D ở đô thị, 9đ
Đề tài: Ứng dụng công nghệ Lidar thành lập bản đồ 3D ở đô thị, 9đĐề tài: Ứng dụng công nghệ Lidar thành lập bản đồ 3D ở đô thị, 9đ
Đề tài: Ứng dụng công nghệ Lidar thành lập bản đồ 3D ở đô thị, 9đ
 
Huong dan do an chi tiet may sao đỏ
Huong dan do an chi tiet may sao đỏHuong dan do an chi tiet may sao đỏ
Huong dan do an chi tiet may sao đỏ
 
Đề cương môn xử lý ảnh
Đề cương môn xử lý ảnhĐề cương môn xử lý ảnh
Đề cương môn xử lý ảnh
 
Luận văn tốt nghiệp: Nhà làm việc đại sứ quán nước ngoài, HAY
Luận văn tốt nghiệp: Nhà làm việc đại sứ quán nước ngoài, HAYLuận văn tốt nghiệp: Nhà làm việc đại sứ quán nước ngoài, HAY
Luận văn tốt nghiệp: Nhà làm việc đại sứ quán nước ngoài, HAY
 
Giao trinh cau truc du lieu va giai thuat
Giao trinh cau truc du lieu va giai thuatGiao trinh cau truc du lieu va giai thuat
Giao trinh cau truc du lieu va giai thuat
 
Creative computing textbook
Creative computing textbookCreative computing textbook
Creative computing textbook
 
Đề tài: Tải trọng động do gió và động đất tác dụng lên nhà cao tầng
Đề tài: Tải trọng động do gió và động đất tác dụng lên nhà cao tầngĐề tài: Tải trọng động do gió và động đất tác dụng lên nhà cao tầng
Đề tài: Tải trọng động do gió và động đất tác dụng lên nhà cao tầng
 
Bài giảng-mạng-viễn-thông-2016
Bài giảng-mạng-viễn-thông-2016Bài giảng-mạng-viễn-thông-2016
Bài giảng-mạng-viễn-thông-2016
 
thuyết minh đồ án thép 2
thuyết minh đồ án thép 2 thuyết minh đồ án thép 2
thuyết minh đồ án thép 2
 
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự Nhiên
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự NhiênLập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự Nhiên
Lập trình ứng dụng web asp.net Trung Tâm Tin Học Khoa Học Tự Nhiên
 

Similar a Ly thuyetdohoa

Thuyet minh datn hoang cao khai - 373052 - 52cb1
Thuyet minh datn   hoang cao khai - 373052 - 52cb1Thuyet minh datn   hoang cao khai - 373052 - 52cb1
Thuyet minh datn hoang cao khai - 373052 - 52cb1luuguxd
 
DATN K52
DATN K52DATN K52
DATN K52luuguxd
 
Ứng dụng Etabs 9.7 trong tính toán công trình - Trần An Bình
Ứng dụng Etabs 9.7 trong tính toán công trình - Trần An BìnhỨng dụng Etabs 9.7 trong tính toán công trình - Trần An Bình
Ứng dụng Etabs 9.7 trong tính toán công trình - Trần An BìnhHuytraining
 
Xây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạo
Xây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạoXây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạo
Xây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạoMan_Ebook
 
Thuyet minh tahaka- du an dau tu
Thuyet minh tahaka- du an dau tuThuyet minh tahaka- du an dau tu
Thuyet minh tahaka- du an dau tuMỵ Dương
 
Sach kinh te luat ts le net
Sach kinh te luat ts le netSach kinh te luat ts le net
Sach kinh te luat ts le netHung Nguyen
 
Bai giang he thong nhung 2010
Bai giang he thong nhung 2010Bai giang he thong nhung 2010
Bai giang he thong nhung 2010Cao Toa
 
Dgthcv Bctttn Anh Nguyet
Dgthcv Bctttn Anh NguyetDgthcv Bctttn Anh Nguyet
Dgthcv Bctttn Anh NguyetÁnh Nguyệt
 
Mô hình điều khiển
Mô hình điều khiểnMô hình điều khiển
Mô hình điều khiểnDv Dv
 
Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...
Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...
Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...nataliej4
 
Giao trinh csdl[bookbooming.com]
Giao trinh csdl[bookbooming.com]Giao trinh csdl[bookbooming.com]
Giao trinh csdl[bookbooming.com]bookbooming1
 
Giáo trình nhập môn tin học đỗ thị mơ[bookbooming.com]
Giáo trình nhập môn tin học   đỗ thị mơ[bookbooming.com]Giáo trình nhập môn tin học   đỗ thị mơ[bookbooming.com]
Giáo trình nhập môn tin học đỗ thị mơ[bookbooming.com]bookbooming1
 
Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...
Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...
Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...Viết thuê trọn gói ZALO 0934573149
 
F:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication Skills
F:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication SkillsF:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication Skills
F:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication Skillslehuuhien99
 

Similar a Ly thuyetdohoa (20)

Giao trinh ly thuyet do hoa
Giao trinh ly thuyet do hoaGiao trinh ly thuyet do hoa
Giao trinh ly thuyet do hoa
 
Thuyet minh datn hoang cao khai - 373052 - 52cb1
Thuyet minh datn   hoang cao khai - 373052 - 52cb1Thuyet minh datn   hoang cao khai - 373052 - 52cb1
Thuyet minh datn hoang cao khai - 373052 - 52cb1
 
DATN K52
DATN K52DATN K52
DATN K52
 
Ứng dụng Etabs 9.7 trong tính toán công trình - Trần An Bình
Ứng dụng Etabs 9.7 trong tính toán công trình - Trần An BìnhỨng dụng Etabs 9.7 trong tính toán công trình - Trần An Bình
Ứng dụng Etabs 9.7 trong tính toán công trình - Trần An Bình
 
3 dmax
3 dmax3 dmax
3 dmax
 
Xây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạo
Xây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạoXây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạo
Xây dựng Robot tự hành dạng Nonholonomic và tổng hợp bộ điều khiển bám quỹ đạo
 
Thuyet minh tahaka- du an dau tu
Thuyet minh tahaka- du an dau tuThuyet minh tahaka- du an dau tu
Thuyet minh tahaka- du an dau tu
 
Sach kinh te luat ts le net
Sach kinh te luat ts le netSach kinh te luat ts le net
Sach kinh te luat ts le net
 
Bai giang he thong nhung 2010
Bai giang he thong nhung 2010Bai giang he thong nhung 2010
Bai giang he thong nhung 2010
 
Dgthcv Bctttn Anh Nguyet
Dgthcv Bctttn Anh NguyetDgthcv Bctttn Anh Nguyet
Dgthcv Bctttn Anh Nguyet
 
Mô hình điều khiển
Mô hình điều khiểnMô hình điều khiển
Mô hình điều khiển
 
Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...
Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...
Biện pháp đẩy mạnh chăm sóc khách hàng tại Bưu điện Trung tâm 1 – Bưu điện th...
 
Huong dan su_dung_midas
Huong dan su_dung_midasHuong dan su_dung_midas
Huong dan su_dung_midas
 
Giao trinh csdl[bookbooming.com]
Giao trinh csdl[bookbooming.com]Giao trinh csdl[bookbooming.com]
Giao trinh csdl[bookbooming.com]
 
Basics Of Document Processing
Basics Of Document ProcessingBasics Of Document Processing
Basics Of Document Processing
 
Giáo trình nhập môn tin học đỗ thị mơ[bookbooming.com]
Giáo trình nhập môn tin học   đỗ thị mơ[bookbooming.com]Giáo trình nhập môn tin học   đỗ thị mơ[bookbooming.com]
Giáo trình nhập môn tin học đỗ thị mơ[bookbooming.com]
 
Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...
Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...
Luận án: Nâng cao chất lượng nguồn nhân lực đáp ứng nhu cầu xuất khẩu lao độn...
 
F:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication Skills
F:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication SkillsF:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication Skills
F:\Lehuuhien\Tai Lieu Giao Tiep Kinh Doanh\Business Communication Skills
 
36 Kế nhân hòa (2)
36 Kế nhân hòa (2)36 Kế nhân hòa (2)
36 Kế nhân hòa (2)
 
Đồ án môn học thiết kế hệ thống truyền động cơ khí, HAY
Đồ án môn học thiết kế hệ thống truyền động cơ khí, HAYĐồ án môn học thiết kế hệ thống truyền động cơ khí, HAY
Đồ án môn học thiết kế hệ thống truyền động cơ khí, HAY
 

Último

BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
CD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh choCD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh chonamc250
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảohoanhv296
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...Nguyen Thanh Tu Collection
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢImyvh40253
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 

Último (20)

BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
CD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh choCD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh cho
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 

Ly thuyetdohoa

  • 1.
  • 2. M CL C Chương 1: CÁC Y U T CƠ S C A ð H A 1.1. T ng quan v ñ h a máy tính ............................................................................... 1 1.1.1. Gi i thi u v ñ h a máy tính ................................................................................ 1 1.1.2. Các k thu t ñ h a ................................................................................................ 1 1.1.2.1. K thu t ñ h a ñi m........................................................................................ 1 1.1.2.2. K thu t ñ h a vector...................................................................................... 2 1.1.3. ng d ng c a ñ h a máy tính............................................................................... 2 1.1.4. Các lĩnh v c c a ñ h a máy tính .......................................................................... 3 1.1.5. T ng quan v m t h ñ h a .................................................................................. 4 1.2. Màn hình ñ h a ...................................................................................................... 6 1.3. Các khái ni m........................................................................................................... 6 1.3.1. ði m..................................................................................................................... 6 1.3.2. Các bi u di n t a ñ ............................................................................................ 8 1.3.3. ðo n th ng........................................................................................................... 8 1.4. Các thu t toán v ño n th ng................................................................................. 8 1.4.1. Bài toán ................................................................................................................ 8 1.4.2. Thu t toán DDA................................................................................................... 9 1.4.3. Thu t toán Bresenham ....................................................................................... 10 1.4.4. Thu t toán MidPoint .......................................................................................... 12 1.5. Thu t toán v ñư ng tròn ..................................................................................... 14 1.5.1. Thu t toán Bresenham ....................................................................................... 14 1.5.2. Thu t toán MidPoint .......................................................................................... 16 1.6. Thu t toán v Ellipse............................................................................................. 17 1.6.1. Thu t toán Bresenham ....................................................................................... 17 1.6.2. Thu t toán MidPoint .......................................................................................... 20 1.7. Phương pháp v ñ th hàm s ............................................................................. 21 Bài t p ............................................................................................................................ 23 Chương 2: TÔ MÀU 2.1. Gi i thi u các h màu............................................................................................ 25 2.2. Các thu t toán tô màu .......................................................................................... 28 2.2.1. Bài toán .............................................................................................................. 28 2.2.2. Thu t toán xác ñ nh P ∈ S ................................................................................. 28 2.2.3. Thu t toán tô màu theo dòng quét ..................................................................... 30 2.2.4. Thu t toán tô màu theo v t d u loang................................................................ 30 Bài t p ............................................................................................................................ 31 Chương 3: XÉN HÌNH 3.1. ð t v n ñ ............................................................................................................... 32
  • 3. 3.2. Xén ño n th ng vào vùng hình ch nh t............................................................. 32 3.2.1. C nh c a hình ch nh t song song v i các tr c t a ñ ..................................... 32 3.2.1.1. Thu t toán Cohen – Sutherland ...................................................................... 33 3.2.1.2. Thu t toán chia nh phân................................................................................. 34 3.2.1.3. Thu t toán Liang – Barsky ............................................................................. 35 3.2.2. Khi c nh c a hình ch nh t t o v i tr c hoành m t góc α................................ 36 3.3. Xén ño n th ng vào hình tròn .............................................................................. 37 3.4. Xén ñư ng tròn vào hình ch nh t...................................................................... 38 3.5. Xén ña giác vào hình ch nh t ............................................................................. 39 Bài t p ............................................................................................................................ 40 Chương 4: CÁC PHÉP BI N ð I 4.1. Các phép bi n ñ i trong m t ph ng..................................................................... 41 4.1.1. Cơ s toán h c ................................................................................................... 41 4.1.2. Ví d minh h a .................................................................................................. 43 4.2. Các phép bi n ñ i trong không gian .................................................................... 45 4.2.1. Các h tr c t a ñ .............................................................................................. 45 4.2.2. Các công th c bi n ñ i ...................................................................................... 46 4.2.3. Ma tr n ngh ch ñ o ............................................................................................ 48 4.3. Các phép chi u c a v t th trong không gian lên m t ph ng ........................... 48 4.3.1. Phép chi u ph i c nh ......................................................................................... 48 4.3.2. Phép chi u song song......................................................................................... 50 4.4. Công th c c a các phép chi u lên màn hình....................................................... 50 4.5. Ph l c .................................................................................................................... 56 4.6. Ví d minh h a....................................................................................................... 59 Bài t p ............................................................................................................................ 61 Chương 5: BI U DI N CÁC ð I TƯ NG BA CHI U 5.1. Mô hình WireFrame.............................................................................................. 63 5.2. V mô hình WireFrame v i các phép chi u........................................................ 64 5.3. V các m t toán h c............................................................................................... 65 Bài t p ............................................................................................................................ 68 Chương 6: THI T K ðƯ NG VÀ M T CONG BEZIER VÀ B-SPLINE 6.1. ðư ng cong Bezier và m t Bezier ........................................................................ 69 6.1.1. Thu t toán Casteljau .......................................................................................... 70 6.1.2. D ng Bernstein c a ñư ng cong Bezier ............................................................ 70 6.1.3. D ng bi u di n ma tr n c a ñư ng Bezier ........................................................ 71 6.1.4. T o và v ñư ng cong Bezier ............................................................................ 72 6.1.5. Các tính ch t c a ñư ng Bezier ......................................................................... 74 6.1.6. ðánh giá các ñư ng cong Bezier ....................................................................... 76 6.2. ðư ng cong Spline và B-Spline ............................................................................ 77 6.2.1. ð nh nghĩa.......................................................................................................... 77
  • 4. 6.2.2. Các tính ch t h u ích trong vi c thi t k các ñư ng cong B-Spline ................. 78 6.2.3. Thi t k các m t Bezier và B-Spline ................................................................. 79 6.2.4. Các băng Bezier ................................................................................................. 80 6.2.5. Dán các băng Bezier v i nhau ........................................................................... 81 6.2.6. Các băng B-Spline ............................................................................................. 81 Chương 7: KH ðƯ NG VÀ M T KHU T 7.1. Các khái ni m......................................................................................................... 83 7.2. Các phương pháp kh m t khu t ........................................................................ 85 7.2.1. Gi i thu t s p x p theo chi u sâu ...................................................................... 85 7.2.2. Gi i thu t BackFace........................................................................................... 88 7.2.3. Gi i thu t vùng ñ m ñ sâu ............................................................................... 90 Bài t p .......................................................................................................................... 103 Chương 8: T O BÓNG V T TH 3D 8.1. Khái ni m ............................................................................................................. 104 8.2. Ngu n sáng xung quanh...................................................................................... 104 8.3. Ngu n sáng ñ nh hư ng ...................................................................................... 105 8.4. Ngu n sáng ñi m.................................................................................................. 109 8.5. Mô hình bóng Gouraud....................................................................................... 110 Bài t p .......................................................................................................................... 121 Ph l c: M T S CHƯƠNG TRÌNH MINH H A I. Các thu t toán tô màu ............................................................................................ 122 II. Các thu t toán xén hình ........................................................................................ 129 III. V các ñ i tư ng 3D............................................................................................. 136 Tài li u tham kh o...................................................................................................... 143
  • 5. L IM ð U ð h a là m t trong nh ng lĩnh v c phát tri n r t nhanh c a ngành Công ngh thông tin. Nó ñư c ng d ng r ng rãi trong nhi u lĩnh v c khoa h c và công ngh . Ch ng h n như y h c, ki n trúc, gi i trí... ð h a máy tính ñã giúp chúng ta thay ñ i cách c m nh n và s d ng máy tính, nó ñã tr thành nh ng công c tr c quan quan tr ng không th thi u trong ñ i s ng h ng ngày. Vì v y môn “ð h a” ñã tr thành m t trong nh ng môn h c chính trong các chuyên ngành Công ngh thông tin các trư ng ñ i h c. Cu n sách “Giáo trình lý thuy t ñ h a” ñư c biên so n theo sát n i dung chương trình ñào t o c nhân Công ngh thông tin. N i dung c a giáo trình này cung c p m t s ki n th c cơ b n v lý thuy t và thu t toán xây d ng các công c ñ h a 2D và 3D. T ñó giúp sinh viên có th ñ c l p xây d ng nh ng thư vi n ñ h a cho riêng mình và phát tri n các ph n m m ng d ng ñ h a cao hơn. Giáo trình ñư c chia làm 8 chương và ph n ph l c, sau m i chương ñ u có ph n bài t p ñ ki m tra ki n th c và rèn luy n kh năng l p trình cho b n ñ c. ð thu n ti n cho vi c trình bày thu t toán m t cách d hi u, các gi i thu t trong giáo trình ñư c vi t trên ngôn ng “t a Pascal” và các mã ngu n ñư c cài ñ t trên Turbo Pascal 7.0. Nh m giúp b n ñ c b t lúng túng trong quá trình cài ñ t các gi i thu t, ph n ph l c li t kê m t s mã ngu n cài ñ t các thu t toán trong các chương. Tuy nhiên, b n ñ c nên t cài ñ t các thu t toán ph n lý thuy t, n u c m th y khó khăn l m m i nên tham kh o ph n ph l c này. Chương 1, 2 và 3 trình bày v các y u t cơ s c a ñ h a như: màn hình ñ h a, ñi m, ño n th ng, ñư ng tròn, các h màu và các thu t toán tô màu, xén hình ... Chương 4 trang b các ki n th c toán h c v các phép bi n ñ i trong không gian 2D và 3D. Chương 5, 6 và 7 gi i thi u các mô hình ñ h a 3D, các gi i thu t kh m t khu t và t o bóng cho v t th ... Chương 8 trình bày v phương pháp thi t k các ñư ng cong Bezier và B-Spline. M c dù ñã r t c g ng trong quá trình biên so n nhưng ch c ch n giáo trình này v n không th tránh kh i nh ng thi u sót. Chúng tôi r t mong nh n ñư c nh ng ý ki n ñóng góp c a b n ñ c cũng như các b n ñ ng nghi p trong lĩnh v c ð h a ñ giáo trình ngày càng ñư c hoàn thi n hơn trong l n tái b n sau. ð a ch liên l c: Khoa Công ngh Thông tin, trư ng ð i h c Khoa h c Hu . ði n tho i: 054.826767. Email: paphuong@hueuni.edu.vn nhtai@hueuni.edu.vn Hu , tháng 08 năn 2003 Các tác gi
  • 6. Updatesofts.com Ebooks Team CHƯƠNG I CÁC Y U T CƠ S C Að H A 1.1. T NG QUAN V ð H A MÁY TÍNH ð h a máy tính là m t lãnh v c phát tri n nhanh nh t trong Tin h c. Nó ñư c áp d ng r ng rãi trong nhi u lãnh v c khác nhau thu c v khoa h c, k ngh , y khoa, ki n trúc và gi i trí. Thu t ng ñ h a máy tính (Computer Graphics) ñư c ñ xu t b i nhà khoa h c ngư i M tên là William Fetter vào năm 1960 khi ông ñang nghiên c u xây d ng mô hình bu ng lái máy bay cho hãng Boeing. Các chương trình ñ h a ng d ng cho phép chúng ta làm vi c v i máy tính m t cách tho i mái, t nhiên. 1.1.1 Gi i thi u v ñ h a máy tính ð h a máy tính là m t ngành khoa h c Tin h c chuyên nghiên c u v các phương pháp và k thu t ñ có th mô t và thao tác trên các ñ i tư ng c a th gi i th c b ng máy tính. V b n ch t: ñó là m t quá trình xây d ng và phát tri n các công c trên c hai lĩnh v c ph n c ng và ph n m m h tr cho các l p trình viên thi t k các chương trình có kh năng ñ h a cao. V i vi c mô t d li u thông qua các hình nh và màu s c ña d ng c a nó, các chương trình ñ h a thư ng thu hút ngư i s d ng b i tính thân thi n, d dùng,... kích thích kh năng sáng t o và nâng cao năng su t làm vi c. 1.1.2. CÁC K THU T ð H A D a vào các phương pháp x lý d li u trong h th ng, ta phân ra làm hai k thu t ñ h a: 1.1.2.1. K thu t ñ h a ñi m
  • 7. Chương I. Các y u t cơ s c a ñ h a Nguyên lý c a k thu t này như sau: các hình nh ñư c hi n th thông qua t ng pixel (t ng m u r i r c). V i k thu t này, chúng ta có th t o ra, xóa ho c thay ñ i thu c tính c a t ng pixel c a các ñ i tư ng. Các hình nh ñư c hi n th như m t lư i ñi m r i r c (grid), t ng ñi m ñ u có v trí xác ñ nh ñư c hi n th v i m t giá tr nguyên bi u th màu s c ho c d sáng c a ñi m ñó. T p h p t t c các pixel c a grid t o nên hình nh c a ñ i tư ng mà ta mu n bi u di n. 1.1.2.2. K thu t ñ h a vector Nguyên lý c a k thu t này là xây d ng mô hình hình h c (geometrical model) cho hình nh ñ i tư ng, xác ñ nh các thu c tính c a mô hình hình h c, sau ñó d a trên mô hình này ñ th c hi n quá trình tô trát (rendering) ñ hi n th t ng ñi m c a mô hình, hình nh c a ñ i tư ng. k thu t này, chúng ta ch lưu tr mô hình toán h c c a các thành ph n trong mô hình hình h c cùng v i các thu c tính tương ng mà không c n lưu l i toàn b t t c các pixel c a hình nh ñ i tư ng. 1.1.3. ng d ng c a ñ h a máy tính hi n nay Ngày nay, ñ h a máy tính ñư c s d ng r ng rãi trong nhi u lĩnh v c khác nhau như: Công nghi p, thương m i, qu n lý, giáo d c, gi i trí,... Sau ñây là m t s ng d ng tiêu bi u: 1.1.3.1. T o giao di n (User Interfaces): như các chương trình ng d ng WINDOWS, WINWORD, EXCEL ... ñang ñư c ña s ngư i s d ng ưa chu ng nh tính thân thi n, d s d ng. 1.1.3.2. T o ra các bi u ñ dùng trong thương m i, khoa h c và k thu t: Các bi u ñ ñư c t o ra r t ña d ng, phong phú bao g m c hai chi u l n ba chi u góp ph n thúc ñ y xu hư ng phát tri n các mô hình d li u h tr ñ c l c cho vi c phân tích thông tin và tr giúp ra quy t ñ nh. 1.1.3.3. T ñ ng hóa văn phòng và ch b n ñi n t : dùng nh ng ng d ng c a ñ h a ñ in n các tài li u v i nhi u lo i d li u khác nhau như: văn b n, bi u ñ , ñ th và nhi u lo i hình nh khác ... 1.1.3.4. Thi t k v i s tr giúp c a máy tính (Computer aided design): M t trong nh ng l i ích l n nh t c a máy tính là tr giúp con ngư i trong vi c thi t k . Các ng 2
  • 8. Chương I. Các y u t cơ s c a ñ h a d ng ñ h a cho phép chúng ta thi t k các thi t b cơ khí, ñi n, ñi n t , ô tô, máy bay, ... như ph n m m AUTOCAD ... 1.1.3.5. Lĩnh v c gi i trí, ngh thu t: cho phép các h a sĩ t o ra các hình nh ngay trên màn hình c a máy tính. Ngư i h a sĩ có th t pha màu, tr n màu, th c hi n m t s thao tác: c t, dán, t y, xóa, phóng to, thu nh ... như các ph n m m PAINTBRUSH, CORELDRAW,... 1.1.3.6. Lĩnh v c b n ñ : xây d ng và in n các b n ñ ñ a lý. M t trong nh ng ng d ng hi n nay c a ñ h a là h th ng thông tin ñ a lý (GIS - Geographical Information System). 1.1.4. Các lĩnh v c c a ñ h a máy tính 1.1.4.1. Các h CAD/CAM (CAD – Computer Aided Design, CAM – Computer Aided Manufacture) Các h này xây d ng t p h p các công c ñ h a tr giúp cho vi c thi t k các chi ti t và các h th ng khác nhau: các thi t b cơ khí, ñi n t ... Ch ng h n như ph n m m Auto Cad c a h ng AutoDesk... 1.1.4.2. X lý nh (Image Processing) ðây là lĩnh v c x lý các d li u nh trong cu c s ng. Sau quá trình x lý nh, d li u ñ u ra là nh c a ñ i tư ng. Trong quá trình x lý nh, chúng ta s s d ng r t nhi u các k thu t ph c t p: khôi ph c nh, xác ñ nh biên... Ví d : ph n m m PhotoShop, Corel Draw, ... 1.1.4.3. Khoa h c nh n d ng (Pattern Recognition) Nh n d ng là m t lĩnh v c trong k thu t x lý nh. T nh ng m u nh có s n, ta phân lo i theo c u trúc ho c theo các phương pháp xác ñ nh nào ñó và b ng các thu t toán ch n l c ñ có th phân tích hay t ng h p nh ñã cho thành m t t p h p các nh g c, các nh g c này ñư c lưu trong m t thư vi n và căn c vào thư vi n này ñ nh n d ng các nh khác. Ví d : Ph n m m nh n d ng ch vi t (VnDOCR) c a vi n Công ngh Thông tin Hà N i, nh n d ng vân tay, nh n d ng m t ngư i trong khoa h c hình s ... 1.1.4.4. ð h a minh h a (Presentation Graphics) 3
  • 9. Chương I. Các y u t cơ s c a ñ h a ðây là lĩnh v c ñ h a bao g m các công c tr giúp cho vi c hi n th các s li u th ng kê m t cách tr c quan thông qua các m u ñ th ho c bi u ñ có s n. Ch ng h n như các bi u ñ (Chart) trong các ph n m m Word, Excel... 1.1.4.5. Ho t hình và ngh thu t Lĩnh v c ñ h a này bao g m các công c giúp cho các h a sĩ, các nhà thi t k phim nh chuyên nghi p th c hi n các công vi c c a mình thông qua các k x o v tranh, ho t hình ho c các k x o ñi n nh khác... Ví d : Ph n m m x lý các k x o ho t hình như: 3D Animation, 3D Studio Max..., ph n m m x lý các k x o ñi n nh: Adobe Primiere, Cool 3D,... 1.1.5. T ng quan v m t h ñ h a (Graphics System) 1.1.5.1. H th ng ñ h a Ph n m m ñ h a: Là t p h p các câu l nh ñ h a c a h th ng. Các câu l nh l p trình dùng cho các thao tác ñ h a không ñư c các ngôn ng l p trình thông d ng như PASCAL, C, ... h tr . Thông thư ng, nó ch cung c p như là m t t p công c thêm vào trong ngôn ng . T p các công c này dùng ñ t o ra các thành ph n cơ s c a m t hình nh ñ h a như: ði m, ño n th ng, ñư ng tròn, màu s c,... Qua ñó, các nhà l p trình ph i t o ra các chương trình ñ h a có kh năng ng d ng cao hơn. Ph n c ng ñ h a: Là các thi t b ñi n t : CPU, Card, màn hình, chu t, phím... giúp cho vi c th c hi n và phát tri n các ph n m m ñ h a. 1.1.5.2. Các thành ph n c a m t h th ng ñ h a T p h p các công c này ñư c phân lo i d a trên nh ng công vi c trong t ng hoàn c nh c th : xu t, nh p, bi n ñ i nh, ... bao g m: • T p công c t o ra nh g c (output primitives): cung c p các công c cơ b n nh t cho vi c xây d ng các hình nh. Các nh g c bao g m các chu i ký t , các th c th hình h c như ñi m, ñư ng th ng, ña giác, ñư ng tròn,... • T p các công c thay ñ i thu c tính (attributes): dùng ñ thay ñ i thu c tính c a các nh g c. Các thu c tính c a nh g c bao g m màu s c (color), ki u ñư ng th ng (line style), ki u văn b n (text style), m u tô vùng (area filling pattern),... 4
  • 10. Chương I. Các y u t cơ s c a ñ h a • T p các công c thay ñ i h quan sát (viewing transformation): M t khi mà các nh g c và các thu c tính c a nó ñư c xác ñ nh trong h t a ñ th c, ta c n ph i chi u ph n quan sát c a nh sang m t thi t b xu t c th . Các công c này cho phép ñ nh nghĩa các vùng quan sát trên h t a ñ th c ñ hi n th hình nh ñó. • T p các công c ph c v cho các thao tác nh p d li u (input operations): Các ng d ng ñ h a có th s d ng nhi u lo i thi t b nh p khác nhau như bút v , b ng, chu t, ... Chính vì v y, c n xây d ng thêm các công c này ñ ñi u khi n và x lý các d li u nh p sao cho có hi u qu . M t yêu c u v ph n c ng không th thi u ñ t ra cho các ph n m m ñ h a là: tính d mang chuy n (portability), có nghĩa là chương trình có th chuy n ñ i m t cách d dàng gi a các ki u ph n c ng khác nhau. N u không có s chu n hóa, các chương trình thi t k thư ng không th chuy n ñ i ñ n các h th ng ph n c ng khác mà không vi t l i g n như toàn b chương trình. Sau nh ng n l c c a các t ch c chu n hóa qu c t , m t chu n cho vi c phát tri n các ph n m m ñ h a ñã ra ñ i: ñó là GKS (Graphics Kernel System - H ñ h a cơ s ). H th ng này ban ñ u ñư c thi t k như là m t t p các công c ñ h a hai chi u, sau ñó ñư c phát tri n ñ m r ng trong ñ h a ba chi u. Ngoài ra, còn có m t s chu n ñ h a ph bi n như: • CGI (Computer Graphics Interface System): h chu n cho các phương pháp giao ti p v i các thi t b ngo i vi. • OPENGL: thư vi n ñ h a c a h ng Silicon Graphics. • DIRECTX: thư vi n ñ h a c a h ng Microsoft. 1.2. MÀN HÌNH ð H A M i máy tính ñ u có m t CARD dùng ñ qu n lý màn hình, g i là Video Adapter hay Graphics Adapter. Có nhi u lo i adapter như: CGA, MCGA, EGA, VGA, Hercules... Các adapter có th làm vi c hai ch ñ : văn b n (Text Mode) và ñ h a (Graphics Mode). Có nhi u cách ñ kh i t o các mode ñ h a. Ta có th s d ng hàm $00 ng t $10 c a BIOS v i các Mode sau: 5
  • 11. Chương I. Các y u t cơ s c a ñ h a • Mode $12: ch ñ phân gi i 640x480x16 • Mode $13: ch ñ phân gi i 320x200x256 Ta có th vi t m t th t c ñ kh i t o ch ñ ñ h a như sau: Procedure InitGraph(Mode:Word); var Reg:Registers; Begin reg.ah := 0; reg.al := mode; intr($10,reg); End; Các b n có th tham kh o thêm các tài li u v l p trình h th ng. 1.3. CÁC KHÁI NI M 1.3.1. ði m (Pixel) Trong các h th ng ñ h a, m t ñi m ñư c bi u th b i các t a ñ b ng s . Ví du: Trong m t ph ng, m t ñi m là m t c p (x,y) Trong không gian ba chi u, m t ñi m là b ba (x,y,z) Trên màn hình c a máy tính, m t ñi m là m t v trí trong vùng nh màn hình dùng ñ lưu tr các thông tin v ñ sáng c a ñi m tương ng trên màn hình. S ñi m v trên màn hình ñư c g i là ñ phân gi i c a màn hình (320x200, 480x640, 1024x1024,...) Cách hi n th thông tin lên màn hình ñ h a: Vùng ñ m màn hình hay còn g i là b nh hi n th ñư c b t ñ u t ñ a ch A000h:$0000h. Vì v y, ñ hi n th thông tin ra màn hình thì ta ch c n ñưa thông tin vào vùng ñ m màn hình b t ñ u t ñ a ch trên là ñư c. Có nhi u cách ñ v m t ñi m ra màn hình: có th dùng các ph c v c a BIOS ho c cũng có th truy xu t tr c ti p vào vùng nh màn hình. • N u dùng ph c v c a BIOS, ta dùng hàm $0C ng t $10: Procedure PutPixel(Col,Row:Word; Color:Byte); Var reg:Registers; Begin reg.ah:=$0C; reg.al:=Color; 6
  • 12. Chương I. Các y u t cơ s c a ñ h a reg.bh:=0; reg.cx:=Col; reg.dx:=Row; Intr($10,reg); End; • N u mu n truy xu t tr c ti p vào vùng ñ m màn hình: Gi s m t ñi m (x,y) ñư c v trên màn hình v i ñ phân gi i 320x200x256 (mode 13h), ñi m ñó s ñư c ñ nh v trong vùng ñ m b t ñ u t ñ a ch segment A000h và ñ a ch offset ñư c tính theo công th c: Offset = y*320 + x. Ta có th vi t th t c như sau: Procedure PutPixel(x,y:Word; Color:Byte); Var Offset:Word; Begin Offset:=(y shl 8) + (y shl 6) + x; Mem[$A000:Offset]:=Color; End; 1.3.2. Các bi u di n t a ñ H u h t các chương trình ñ h a ñ u dùng h t a ñ Decartes (Hình 1.1). Ta bi n ñ i: O MaxX Y Y O X X MaxY T a ñ th gi i th c T a ñ thi t b màn hình. Hình 1.1 1.3.3. ðo n th ng Trong các h th ng ñ h a, các ño n th ng ñư c bi u th b i vi c “tô” ño n th ng b t ñ u t ñi m ñ u mút này kéo dài cho ñ n khi g p ñi m ñ u mút kia. 1.4. CÁC THU T TOÁN V ðO N TH NG 7
  • 13. Chương I. Các y u t cơ s c a ñ h a 1.4.1. Bài toán: V ño n th ng ñi qua 2 ñi m A(x1,y1) và B(x2,y2) * Trư ng h p x1=x2 ho c y1=y2: r t ñơn gi n. * Trư ng h p ñư ng th ng có h s góc m: Ý tư ng: Vì các Pixel ñư c v các v trí nguyên nên ñư ng th ng ñư c v gi ng như hình b c thang (do làm tròn). V n ñ ñ t ra là ch n các t a ñ nguyên g n v i ñư ng th ng nh t. 1.4.2. Thu t toán DDA (Digital differential analyzer) Xét ñư ng th ng có h s góc 0<m≤1(gi s ñi m ñ u A n m bên trái và ñi m cu i B n m bên ph i). N u ta ch n ∆x=1và tính giá tr y k ti p như sau: yk+1 = yk + ∆y = yk + m.∆x = yk + m V i h s góc m>1: ta hoán ñ i vai trò c a x,y cho nhau. N u ch n ∆y=1 thì: xk+1 = xk + 1/m Tương t , n u ñi m B n m bên trái và A n m bên ph i thì: yk+1 = yk - m (0<m≤1, ∆x= -1) xk+1 = xk - 1/m (m>1, ∆y= -1) Tóm l i: Ta có thu t toán v ñư ng th ng DDA như sau: Nh p A(x1,y1) B(x2,y2) Tính ∆x = x2 - x1 ∆y = y2 - y1 Step = Max(|∆x| , |∆y|) Kh i t o các giá tr : IncX = ∆x/Step; IncY = ∆y/Step; {bư c tăng khi v } x = x1; y = y1; {Ch n ñi m v ñ u tiên} V ñi m (x,y); Cho i ch y t 1 ñ n Step: x = x + IncX; y = y + IncY; V ñi m (Round(x),Round(y)) T ñó ta có th t c v ño n th ng theo thu t toán DDA như sau: Procedure DDALine(x1,y1,x2,y2:Integer); var dx,dy,step,i:integer; 8
  • 14. Chương I. Các y u t cơ s c a ñ h a xInc,yInc,x,y:real; Begin dx:=x2-x1; dy:=y2-y1; If abs(dx)>abs(dy) Then step:=abs(dx) else step:=abs(dy); xInc:=dx/step; yInc:=dy/step; x:=x1; y:=y1; Putpixel(round(x),round(y),15); for i:=1 to step do Begin x:=x+xInc; y:=y+yInc; Putpixel(round(x),round(y),15); End; End; 1.4.3. Thu t toán Bresenham Phương trình ñư ng th ng có th phát bi u dư i d ng: y = m.x + b (1) yi+ Phương trình ñư ng th ng qua 2 ñi m: 1 x − x1 y − y1 y = (*) x 2 − x1 y 2 − y1 yi ð t ∆x = x2 - x1 ∆y = y2 - y1 xi xi+1 ∆y ∆y (*) ⇔ y = x. + y1 - x1. Hình 1.2 ∆x ∆x ∆y Suy ra m = nên ∆y = m. ∆x (2) ∆x b = y1 - m.x1 (3) Ta ch xét trư ng h p h s góc 0<m<1. Gi s ñi m (xi,yi) ñã ñư c v . Ta ph i ch n ñi m k ti p là: 9
  • 15. Chương I. Các y u t cơ s c a ñ h a (xi + 1,yi) ho c (xi +1,yi +1) (Xem hình 1.2) Xét kho ng cách gi a 2 ñi m ch n v i ñi m n m trên ñư ng th c. N u kho ng cách nào bé hơn thì ta l y ñi m ñó. ð t: d1 = y - yi = m.(xi +1) + b - yi d2 = (yi +1) - y = yi + 1 - m.(xi + 1) - b Suy ra: d1 - d2 = 2m.(xi + 1) - 2yi + 2b - 1 ∆y = 2. .(xi + 1) - 2yi + 2b - 1 ∆x ⇔ ∆x(d1 - d2) = 2∆y.xi - 2∆x.yi + 2∆y + ∆x.(2b - 1) ð t pi = ∆x(d1 - d2) và C = 2∆y + ∆x.(2b - 1) thì pi = 2∆y.xi - 2∆x.yi + C (4) pi+1 = 2∆y.xi+1 - 2∆x.yi+1 + C Suy ra: pi+1 - pi = 2∆y(xi+1 - xi) - 2∆x(yi - yi+1) = 2∆y - 2∆x(yi+1 - yi) (5) ( vì xi+1 - xi = 1 ) * Nh n xét: . N u pi < 0: Ch n yi+1 = yi T (5) ⇒ pi+1 = pi + 2∆y. (d1<d2) . N u pi ≥ 0: Ch n yi+1 = yi + 1 T (5) ⇒ pi+1 = pi + 2∆y - 2∆x. (d1>d2) V i ñi m mút ñ u tiên, theo (4) ta có: p1 = 2∆y.x1 - 2∆x.y1 + 2∆y + ∆x[2.(y1 - m.x1) - 1] = 2∆y - ∆x T ñó, ta có th tóm t t thu t toán v ñư ng th ng theo Bresenham cho trư ng h p h s góc 0<m<1 như sau: • Bư c 1: Nh p các ñi m ñ u mút. ði m ñ u mút bên trái ch a t a ñ (x1,y1), ñi m ñ u mút bên ph i ch a t a ñ (x2,y2). • Bư c 2: ði m ñư c ch n ñ v ñ u tiên là (x1,y1). • Bư c 3: Tính ∆x = |x2 - x1| , ∆y = |y2 - y1| và P1 = 2∆y - ∆x N u pi < 0 thì ñi m k ti p là (xi + 1,yi) Ngư c l i: ñi m k ti p là (xi + 1,yi + 1) 10
  • 16. Chương I. Các y u t cơ s c a ñ h a • Bư c 4: Ti p t c tăng x lên 1 Pixel. v trí xi +1, ta tính: pi+1 = pi + 2∆y n u pi < 0 pi+1 = pi + 2.( ∆y - ∆x) n u pi ≥ 0 N u pi+1 < 0 thì ta ch n to ñ y k ti p là yi+1 Ngư c l i thì ta ch n yi+1 +1 • Bư c 5: L p l i bư c 4 cho ñ n khi x = x2. Sau ñây là th t c cài ñ t thu t toán: Procedure LINE(x1,y1,x2,y2:integer); { 0<m<1} var dx,dy,x,y,p,c1,c2,xMax:integer; Begin dx:=abs(x1-x2); dy:=abs(y1-y2); c1:=2*dy; c2:=2*(dy-dx); p:=2*dy-dx; if x1>x2 then begin x:=x2; y:=y2; xMax:=x1; end else begin x:=x1;y:=y1;xMax:=x2; end; putpixel(x,y,red); while x<xMax do begin x:=x+1; if p<0 then p:=p+c1 else begin y:=y+1; p:=p+c2; end; 11
  • 17. Chương I. Các y u t cơ s c a ñ h a putpixel(x,y,red); end; end; 1.4.4. Thu t toán MidPoint Ta ch xét trư ng h p h s góc 0<m<1. Thu t toán này ñưa ra cách ch n ñi m S(xi+1,yi) hay P(xi+1,yi+1) b ng cách so sánh ñi m th c Q(xi+1,y) v i ñi m M (trung ñi m c a S và P). N u ñi m Q n m dư i ñi m M thì ch n ñi m S Ngư c l i, ch n ñi m P. (Xem hình 1.3) Ta có d ng t ng quát c a phương trình ñư ng th ng: Ax + By + C = 0 v i A = y2 – y1 , B = –(x2 – x1) , C = x2.y1 – x1.y2 ð t F(x,y) = Ax + By + C, ta có nh n xét: < 0 n u (x,y) n m phía trên ñư ng th ng F(x,y) = 0 n u (x,y) thu c v ñư ng th ng > 0 n u (x,y) n m phía dư i ñư ng th ng Lúc này, vi c ch n các ñi m S hay P ñư c ñưa v vi c xét d u c a: 1 pi = F(M) = F(xi + 1,yi + ) 2 N u pi < 0 ⇒ M n m trên ño n th ng ⇒ Q n m dư i M ⇒ Ch n S P N u pi ≥ 0 ⇒ M n m dư i ño n yi+ 1 Q th ng ⇒ Q n m trên M ⇒ Ch n P M M t khác: yi S 1 pi = F(xi + 1,yi + ) 2 1 xi pi+1 = F(xi+1 + 1,yi+1 + ) xi+1 2 Hình 1.3 nên 1 1 pi+1 - pi = F(xi+1 + 1,yi+1 + ) - F(xi + 1,yi + ) 2 2 12
  • 18. Chương I. Các y u t cơ s c a ñ h a 1 1 = A(xi+1+1) + B(yi+1 + ) + C - A(xi+1) - B(yi + ) - C 2 2 = A(xi+1 - xi) + B(yi+1 - yi) = A + B(yi+1 - yi) (vì xi+1 - xi =1) Suy ra: pi+1 = pi + A + B(yi+1 - yi) (*) *Nh n xét: . N u pi < 0: Ch n ñi m S: yi+1 = yi T (*) suy ra pi+1 = pi + A . N u pi ≥ 0: Ch n ñi m P: yi+1 = yi + 1 T (*) suy ra pi+1 = pi + A + B V i ñi m mút ñ u tiên, ta có: 1 1 p1 = F(x1 + 1,y1 + ) = A(x1+1) + B(y1 + ) + C 2 2 B B = Ax1 + Bx1 + C + A + =A+ (vì Ax1 + Bx1 + C = 0) 2 2 Thu t toán MidPoint cho k t qu tương t như thu t toán Bresenham. 1.5. THU T TOÁN V ðƯ NG TRÒN Xét ñư ng tròn (C) tâm O(xc,yc) bán kính R. (- (y,x Phương trình t ng quát c a ñư ng tròn có d ng: y,x) ) (x - xc)2 + (y - yc)2 = R2 (*) (- (x,y x,y) ) ⇔ y = yc ± R2 − ( x − xC ) 2 (1) (-x,- (x,- ð ñơn gi n thu t toán, ñ u tiên ta xét ñư ng y) y) (-y,- ( tròn có tâm g c t a ñ (xc=0 và yc=0). x) y,- * Ý tư ng: Hình Do tính ñ i x ng c a ñư ng tròn nên n u ñi m 1.4 (x,y)∈(C) thì các ñi m (y,x), (-y,x), (-x,y), (-x,-y), (-y,-x), (y,-x), (x,-y) cũng ∈ (C) (Hình 1.4) Vì v y, ta ch c n v m t ph n tám cung tròn r i l y ñ i x ng qua g c O và 2 tr c to ñ thì ta có ñư c toàn b ñư ng tròn. 1.5.1. Thu t toán Bresenham Gi s (xi,yi) ñã v ñư c. C n ch n ñi m k ti p là (xi +1,yi) ho c (xi +1,yi -1) (Hình 1.5) T phương trình: x2 + y2 = R2 ta tính ñư c giá tr y th c ng v i xi +1 là: 13
  • 19. Chương I. Các y u t cơ s c a ñ h a y2 = R2 - (xi +1)2 ð t: d1 = yi2 - y2 = yi2 - R2 + (xi + 1)2 d2 = y2 - (yi - 1)2 = R2 - (xi + 1)2 - (yi - 1)2 yi y Suy ra: yi- pi = d1 - d2 = 2.(xi + 1)2 + yi2 + (yi - 1)2 - 2R2 (2) 1 ⇒ pi+1 = 2.(xi+1 + 1)2 + y2i+1 + (yi+1 - 1)2 - 2R2 (3) T (2) và (3) ta có: xi xi+1 pi+1 - pi = 4xi + 6 + 2.(y2i+1 - yi2) - 2.(yi+1 - yi) Hình 1.5 ⇒ pi+1 = pi + 4xi + 6 + 2.(y2i+1 - yi2) - 2.(yi+1 - yi) (4) * Nh n xét: N u pi < 0: ch n yi+1 = yi (4) ⇒ pi+1 = pi + 4xi + 6 N u pi ≥ 0: ch n yi+1 = yi - 1 (4) ⇒ pi+1 = pi + 4.(xi - yi) + 10 Ta ch n ñi m ñ u tiên c n v (0,R), theo (2) ta có: p1 = 3 - 2R Tóm l i: Ta có thu t toán v ñư ng tròn: • Bư c 1: Ch n ñi m ñ u c n v (x1,y1) = (0,R) • Bư c 2: Tính P ñ u tiên: p1 = 3 - 2R N u p < 0: ch n ñi m k ti p là (xi +1,yi). Ngư c l i ch n ñi m (xi + 1,yi - 1) • Bư c 3: x:=x + 1, tính l i p: N u pi < 0: pi+1 = pi + 4xi + 6. Ngư c l i: pi+1 = pi + 4.(xi - yi) + 10 Khi ñó: N u pi+1 < 0: ch n ñi m k ti p là (xi +1,yi+1). Ngư c l i ch n ñi m (xi+1,yi+1-1) • Bư c 4: L p l i bư c 3 cho ñ n khi x = y. Sau ñây là th t c ñ cài ñ t thu t toán: Procedure Circle(x0,y0,r:Integer); Var p,x,y:Integer; Procedure VeDiem; Begin PutPixel( x0 + x , y0 + y , color); PutPixel( x0 - x , y0 + y , color); PutPixel( x0 + x , y0 - y , color); PutPixel( x0 - x , y0 - y , color); 14
  • 20. Chương I. Các y u t cơ s c a ñ h a PutPixel( x0 + y , y0 + x , color); PutPixel( x0 - y , y0 + x , color); PutPixel( x0 + y , y0 - x , color); PutPixel( x0 - y , y0 - x , color); End; Begin x:=0; y:=r; p:=3 - 2*r; While x<=y do Begin VeDiem; If p<0 then p:=p + 4*x + 6 Else Begin p:=p + 4*(x-y) + 10; y:=y-1; End; x:=x+1; End; End; 1.5.2. Thu t toán MidPoint T phương trình ñư ng tròn: x2 + y2 = R2 S 2 2 2 yi ð t F(x,y) = x + y - R ,ta có: M < 0 n u (x,y) trong ñư ng tròn Q yi- P F(x,y) = 0 n u (x,y) trên ñư ng tròn 1 > 0 n u (x,y) ngoàiñư ng tròn Lúc này, vi c ch n các ñi m S(xi+1,yi) hay xi xi+1 P(xi+1,yi-1) ñư c ñưa v vi c xét d u c a: Hình 1.6 1 pi = F(M) = F(xi + 1,yi - ) (Hình 1.6) 2 N u pi < 0 ⇒ M n m trong ñư ng tròn ⇒ Q g n S hơn ⇒ Ch n S N u pi ≥ 0 ⇒ M n m ngoài ñư ng tròn ⇒ Q g n P hơn ⇒ Ch n P 15
  • 21. Chương I. Các y u t cơ s c a ñ h a M t khác: 1 pi = F(xi + 1,yi - ) 2 1 pi+1 = F(xi+1 + 1,yi+1 - ) 2 nên 1 1 pi+1 - pi = F(xi+1 + 1,yi+1 - ) - F(xi + 1,yi - ) 2 2 1 2 1 = [(xi+1+1)2 + (yi+1 - ) - R2] - [(xi+1)2 + (yi - )2 - R2] 2 2 1 2 1 = [(xi+2)2 + (yi+1 - ) - R2] - [(xi+1)2 + (yi - )2 - R2] 2 2 = 2xi + 3 + (yi+12 - yi2) - (yi+1 - yi) Suy ra: pi+1 = pi + 2xi + 3 + (yi+12 - yi2) - (yi+1 - yi) (*) *Nh n xét: . N u pi < 0: Ch n ñi m S : yi+1 = yi T (*) ⇒ pi+1 = pi + 2xi + 3 . N u pi ≥ 0: Ch n ñi m P: yi+1 = yi - 1 T (*) ⇒ pi+1 = pi + 2(xi - yi) + 5 V i ñi m ñ u tiên (0,R), ta có: 1 1 1 5 p1 = F(x1 + 1,y1 - ) = F(1,R - ) = 1 + (R - )2 - R2 = - R 2 2 2 4 1.6. THU T TOÁN V ELLIPSE ð ñơn gi n, ta ch n Ellipse có tâm g ct a ñ . Phương trình c a nó có d ng: x2 y2 + 2 =1 a2 b b2 2 Ta có th vi t l i: y2 = - 2 .x + b2 (*) a *Ý tư ng: Gi ng như thu t toán v ñư ng tròn. Hình 1.7 Ch có s khác bi t ñây là ta ph i v 2 nhánh: M t nhánh t trên xu ng và m t nhánh t dư i lên và 2 nhánh này s g p nhau t i ñi m mà ñó h s góc c a ti p tuy n v i Ellipse = -1 (Hình 1.7). Phương trình ti p tuy n v i Ellipse t i ñi m (x0,y0) ∈ (E) : 16
  • 22. Chương I. Các y u t cơ s c a ñ h a x y x0 . 2 + y0. 2 = 1 a b x 0 .b 2 Suy ra, h s góc c a ti p tuy n t i ñi m ñó là: - . y0 a 2 1.6.1. Thu t toán Bresenham ñây, ta ch xét nhánh v t trên xu ng. Gi s ñi m (xi,yi) ñã ñư c v . ði m ti p theo c n ch n s là (xi+1,yi) ho c (xi+1,yi-1) b2 Thay (xi +1) vào (*): y2 = - 2 .(xi +1)2 + b2 a ð t: b2 d1= yi2 - y2 = yi2 + 2 .(xi +1)2 -b2 a b2 d2= y2 - (yi -1)2 = - 2 .(xi +1)2 + b2 - (yi -1)2 a b2 ⇒ pi = d1 - d2 = 2.[ 2 .(xi +1)2 - b2] + 2.(yi2 + yi) -1 a b2 pi+1 = 2.[ 2 .(xi+1 +1)2 - b2] + 2.(yi+12 + yi+1) -1 a Suy ra: b2 pi+1 - pi = 2. 2 .[(xi+1 +1)2 - (xi +1)2] + 2.( yi+12 - yi2 + yi+1 - yi) (**) a *Nh n xét: • pi < 0: Ch n yi+1 = yi b2 (**) ⇒ pi+1 = pi + 2. .(2x + 3) a2 • pi ≥ 0: Ch n yi+1 = yi -1 b2 (**) ⇒ pi+1 = pi + 2. .(2x + 3) - 4yi a2 V i ñi m ñ u tiên (0,b), ta có: b2 p1 = 2 - 2b + 1 a2 T ñó, ta có th t c v Ellipse như sau: 17
  • 23. Chương I. Các y u t cơ s c a ñ h a Procedure Ellipse(xc,yc,a,b:Integer;Color:Byte); Var p,a2,b2:real; x,y:integer; (*-------------------*) Procedure VeDiem; Begin PutPixel(xc+x,yc+y,Color); PutPixel(xc-x,yc+y,Color); PutPixel(xc-x,yc-y,Color); PutPixel(xc+x,yc-y,Color); End; (*-------------------*) Begin a2:=a*a; b2:=b*b; {Nhanh 1} x:=0; y:=b; p:=2*b2/a2 - 2*b + 1; While (b2/a2)*(x/y)<1 do Begin VeDiem; If p<0 then p:=p + 2*(b2/a2)*(2*x+3) else Begin p:=p - 4*y + 2*(b2/a2)*(2*x+3); y:=y-1; End; x:=x+1; End; {Nhanh 2} y:=0; x:=a; p:=2*(a2/b2) - 2*a + 1; While (a2/b2)*(y/x)<=1 do 18
  • 24. Chương I. Các y u t cơ s c a ñ h a Begin VeDiem; If p<0 then p:=p + 2*(a2/b2)*(2*y+3) else Begin p:=p - 4*x + 2*(a2/b2)*(2*y+3); x:=x-1; End; y:=y+1; End; End; 1.6.2. Thu t toán MidPoint G i ý: x2 y2 Phương trình Ellipse: + 2 =1 a2 b Nhánh 1: 1 2 p1 = b2 - a 2 b + .a 4 If pi < 0 Then pi+1 = pi + b2 + 2b2xi+1 else pi+1 = pi + b2 + 2b2xi+1 - 2a2yi+1 Nhánh 2: 1 2 p1 = b2(xi + ) + a2(yi - 1)2 - a2b2 2 If pi > 0 Then pi+1 = pi + a2 - 2a2yi+1 else pi+1 = pi + a2 + 2b2xi+1 - 2a2yi+1 Procedure MidEllipse(xc,yc,a,b:Integer;Color:Byte); Var p,a2,b2:real; x,y:Integer; (*-------------------*) Procedure VeDiem; Begin PutPixel(xc+x,yc+y,Color); PutPixel(xc-x,yc+y,Color); PutPixel(xc-x,yc-y,Color); 19
  • 25. Chương I. Các y u t cơ s c a ñ h a PutPixel(xc+x,yc-y,Color); End; (*-------------------*) Begin a2:=a*a; b2:=b*b; {Nhanh 1} x:=0; y:=b; Vediem; p:=b2 - a2*b + 0.25*a2; While (b2/a2)*(x/y)<1 do Begin x:=x+1; If p<0 Then p:=p + b2 + 2*b2*x else begin y:=y-1; p:=p + b2 + 2*b2*x - 2*a2*y; end; Vediem; End; {Nhanh 2} p:=b2*(x+0.5)*(x+0.5) + a2*(y-1)*(y-1)- a2*b2 ; While y>0 do Begin y:=y-1; If p>0 Then p:=p + a2 - 2*a2*y else begin x:=x+1; p:=p + a2 + 2*b2*x - 2*a2*y; end; Vediem; End; 20
  • 26. Chương I. Các y u t cơ s c a ñ h a End; 1.7. PHƯƠNG PHÁP V ð TH HÀM S 1.7.1. Bài toán: V ñ th c a hàm s y = f(x) trên ño n [Min,Max]. *Ý tư ng: Cho x ch y t ñ u ñ n cu i ñ l y các t a ñ (x,f(x)) sau ñó làm tròn thành s nguyên r i n i các ñi m ñó l i v i nhau. 1.7.2. Gi i thu t: • Bư c 1: Xác ñ nh ño n c n v [Min,Max]. • Bư c 2: - ð t g c t a ñ lên màn hình (x0,y0). - Chia t l v trên màn hình theo h s k. - Ch n bư c tăng dx c a m i ñi m trên ño n c n v . • Bư c 3: Ch n ñi m ñ u c n v : x = Min, tính f(x) ð i qua t a ñ màn hình và làm tròn: x1:=x0 + Round(x.k); y1:=y0 - Round(y.k); Di chuy n ñ n (x1,y1): MOVETO(x1,y1); • Bư c 4: Tăng x lên v i s gia dx: x:=x + dx; ð i qua t a ñ màn hình và làm tròn: x2:=x0 + Round(x.k); y2:=y0 - Round(y.k); V ñ n (x2,y2): LINETO(x2,y2); • Bư c 5: L p l i bư c 4 cho ñ n khi x > Max thì d ng. Ví d : V ñ th hàm s f(x) = Sin(x) Uses crt,Graph; Var dau,cuoi:real; Gd,Gm:Integer; Function F(x:real):real; Begin F:=Sin(x); End; Procedure VeHinhSin(ChukyDau,ChuKyCuoi:real); 21
  • 27. Chương I. Các y u t cơ s c a ñ h a var x1,y1,x2,y2:integer; a,x,k:real; x0,y0:word; Begin x0:=GetMaxX div 2; y0:=GetMaxY div 2; K:=GetMaxX/30; a:=Pi/180; x:=ChuKyDau; x1:=x0 + Round(x*k); y1:=y0 - Round(F(x)*k); Moveto(x1,y1); While x<ChuKyCuoi do Begin x:=x+a; x2:=x0 + Round(x*k); y2:=y0 - Round(F(x)*k); LineTo(x2,y2); End; End; BEGIN Gd:=0; InitGraph(Gd,Gm,’C:BPBGI’); Dau:=-4*Pi; cuoi:=4*Pi; VeHinhSin(Dau,cuoi); repeat until KeyPressed; CloseGraph; END. BÀI T P 1. Cho hai ñi m A(20,10) và B(25,13). Hãy tính các giá tr Pi, xi, yi m i bư c khi v ño n th ng AB theo thu t toán Bresenham/MidPoint và k t q a ñi n vào b ng sau: i 1 2 3 4 5 6 22
  • 28. Chương I. Các y u t cơ s c a ñ h a Pi ? ? ? ? ? ? xi ? ? ? ? ? ? yi ? ? ? ? ? ? 2. Cài ñ t th t c v ño n th ng theo thu t toán Bresenham và MidPoint cho các trư ng h p h s góc m>1, m<-1, -1<m<0. 3. Vi t th t c LineTo(x,y:Integer); ñ v ño n th ng t v trí hi n th i ñ n ñi m có t a ñ (x,y). 4. Vi t th t c LineRel(dx,dy:Integer); ñ v ño n th ng t v trí hi n th i ñ n ñi m m i cách ñi m hi n th i m t kho ng theo tr c x là dx và theo tr c y là dy. 5. Cài ñ t th t c v ñư ng tròn theo thu t toán MidPoint. 6. Vi t th t c Arc(x0,y0,g1,g2:Integer; R:Word); ñ v cung tròn có tâm (x0,y0) bán kính R v i góc b t ñ u là g1 và góc k t thúc là g2. 7. Vi t th t c Sector(x0,y0,g1,g2:Integer; Rx,Ry:Word); ñ v cung Ellipse có tâm (x0,y0) bán kính theo tr c X là Rx, bán kính theo tr c Y là Ry v i góc b t ñ u là g1 và góc k t thúc là g2. 8. Vi t th t c DrawPoly(P:Array; n:Byte; xc,yc,R:Word); ñ v m t ña giác ñ u có n ñ nh lưu trong m ng P n i ti p trong ñư ng tròn tâm (xc,yc) bán kính R. 9. Vi t th t c Circle3P(A,B,C:ToaDo2D); ñ v ñư ng tròn ñi qua 3 ñi m A,B,C. 10. Vi t th t c Arc3P(A,B,C:ToaDo2D); ñ v cung tròn ñi qua 3 ñi m A,B,C. 11. V ñ th các hàm s sau: y = ax2 + bx + c, y = ax3 + bx2 + cx + d, y = ax4 + bx3 + cx2 + dx + e ax + b ax 2 + bx + c y= , y= . cx + d dx + e 12. V các ñư ng cong sau: x2 y2 x2 y2 2 y = 2px + 2 =1 - 2 = ±1 a2 b a2 b Bài t p l n: Vi t chương trình kh o sát và v ñ th các hàm s sơ c p bài t p s 11. 23
  • 29. CHƯƠNG 2 TÔ MÀU 2.1. GI I THI U V CÁC H MÀU Giác quan c a con ngư i c m nh n ñư c các v t th xung quanh thông qua các tia sáng màu t t hơn r t nhi u so v i 2 màu tr ng ñen. Vì v y, vi c xây d ng nên các chu n màu là m t trong nh ng lý thuy t cơ b n c a lý thuy t ñ h a. Vi c nghiên c u v màu s c ngoài các y u t v m t v t lý như bư c sóng, cư ng ñ , còn có 3 y u t khác liên quan ñ n c m nh n sinh lý c a m t ngư i dư i tác ñ ng c a chùm sáng màu ñi ñ n t v t th là: Hue (s c màu), Saturation (ñ b o hòa), Lightness (ñ sáng). M t trong nh ng h màu ñư c s d ng r ng rãi ñ u tiên do A.H.Munsell ñưa ra vào năm 1976, bao g m 3 y u t : Hue, Lightness và Saturation. Ba mô hình màu ñư c s d ng và phát tri n nhi u trong các ph n c ng là: RGB - dùng v i các màn hình CRT (Cathode ray bube), YIQ – dùng trong các h th ng ti vi màu băng t n r ng và CMY - s d ng trong m t s thi t b in màu. Ngoài ra, còn có nhi u h màu khác như: HSV, HSL, YIQ, HVC, ... 2.1.1.H RGB (Red, Green, Blue) M t c a chúng ta c m nh n ba màu rõ nh t là Red (ñ ), Green (l c), Blue (xanh). Vì v y, ngư i ta ñã xây d ng mô hình màu RGB (Red,Green, Blue) là t p t t c các màu ñư c xác ñ nh thông qua ba màu v a nêu. Chu n này ñ u tiên ñư c xây d ng cho các h vô tuy n truy n hình và trong các máy vi tính. T t nhiên, không ph i là t t c các màu ñ u có th bi u di n qua ba màu nói trên nhưng h u h t các màu ñ u có th chuy n v ñư c. H này ñư c xem như m t kh i ba chi u v i màu Red là tr c X, màu Green là tr c Y và màu Blue là tr c Z. M i màu trong h này ñư c xác ñ nh theo ba thành ph n RGB (Hình 2.1).
  • 30. Chương II. Tô màu Z Blue Cyan Magenta White Y Black Green Red Yellow X Hình 2.1. H màu RGB Ví d : Màu Red là (1, 0, 0) Màu Blue là (0, 0, 1) Red + Green = Yellow Red + Green + Blue = White 2.1.2. H CMY (Cyan, Magenta, Yellow) H này cũng ñư c xem như m t kh i ba chi u như h RGB. Nhưng h CMY trái ngư c v i h RGB, ch ng h n: White có thành ph n (0, 0, 0) Cyan có thành ph n (1, 0, 0) Green có thành ph n (1, 0, 1) ... Sau ñây là công th c chuy n ñ i t h RGB → CMY :  C  1  R   M  = 1 − G        Y  1  B       2.1.3. H YIQ H màu này ñư c ng d ng trong truy n hình màu băng t n r ng t i M , do ñó nó có m i quan h ch t ch v i màn hình raster. YIQ là s thay ñ i c 26
  • 31. Chương II. Tô màu Y  0.299 0.587 0.114   R   I  = 0.596 − 0.275 − 0.321 * G        Q  0.212 − 0.523 0.311   B        Ma tr n ngh ch ñ o c a ma tr n bi n ñ i RGB thành h YIQ ñư c s d ng cho phép bi n ñ i t h YIQ thành RGB. 2.1.4. H HSV (Hue, Saturation, Value) Mô hình màu này còn ñư c g i là h HSB v i B là Brightness (ñ sáng) d a trên cơ s n n t ng tr c giác v tông màu, s c ñ và s c thái m thu t (Hình 2.2). Hue có giá tr t 00 → 3600 S, V có giá tr t 0 →1 V Green Yellow 1.0 Cyan White Red Blue White H S 0.0 Black Hình 2.2. H màu HSV Ví d : Red ñư c bi u di n (00, 1, 1) Green ñư c bi u di n (1200,1,1) 2.1.5. H HSL (Hue, Saturation, Lightness) H này ñư c xác ñ nh b i t p h p hình chóp sáu c nh ñôi c a không gian hình tr (hình 2.3). 1.0 L White Green Yellow Cyan 0.5 Red Blue White H S 0.0 Black Hình 2.3. H màu HSL 27
  • 32. Chương II. Tô màu 2.2. CÁC THU T TOÁN TÔ MÀU 2.2.1. Bài toán P2 Cho ña giác S xác ñ nh b i n ñ nh : P1, P2, ..., Pn. Hãy tô màu mi n S. W P1 P3 * Phương pháp t ng quát : S - Tìm hình ch nh t W nh nh t ch a S P5 (hình 2.4). - Duy t qua t t c các ñi m P(x, y) ∈ W. P4 N u P ∈ S thì tô màu ñi m P. Hình 2.4 2.2.2. Thu t toán xác ñ nh P ∈ S 2.2.2.1. S là ña giác l i - L y P ∈ W, n i P v i các ñ nh c a S thì ta ñư c n tam giác : Si= PPiPi+1, v i Pn+1=P1. n -N u ∑ dt(S ) i =1 i = dt(S) thì P ∈ S. Ta có công th c tính di n tích c a S: 1 n S= | ∑xi yi+1 −xi+1yi) | ( 2 i=1 2.2.2.2. Trư ng h p t ng quát (Thu t toán Jordan) L y P(x, y) ∈ W, k n a ñư ng th ng ∆P xu t phát t P và không ñi qua các ñ nh c a ña giác S. G i S(P) là s giao ñi m c a ∆P v i các biên c a S. N u S(P) l thì P ∈ S. * V n ñ còn l i là tìm S(P): Bư c 1: K n a ñư ng th ng ∆P // 0y và hư ng v phía y>0. Bư c 2: V i m i c nh Ci= PiPi+1 c a S: + N u x=xi thì xét 2 c nh có 1 ñ u là Pi: N u y<yi thì 28
  • 33. Chương II. Tô màu • N u c 2 ñ u kia cùng m t phía c a ∆P thì ta tính ∆P c t c 2 c nh. • Ngư c l i : ∆P c t 1 c nh. + Ngư c l i: • N u x>Max(xi,xi+1) ho c x<Min(xi,xi+1) thì ∆P không c t Ci • Ngư c l i: -N u y<= Min(yi, yi+1) thì ∆P c t Ci -Ngư c l i : Xét t a ñ giao ñi m (x0, y0) c a ∆P v i Ci N u y >= y0 thì ∆P không c t Ci. Ngư c l i ∆P c t Ci. Thu t toán này có th ñư c cài ñ t b ng ño n chương trình như sau: Type ToaDo=record x,y:integer; End; Mang=array[0..30] of ToaDo; Function SOGIAODIEM(a:Mang; n:Byte):Integer; var dem,i,j,s:Integer; Begin dem:=0; for i:=1 to n do { Tim so giao diem } begin if i=n then j:=1 else j:=i+1; if i=1 then s:=n else s:=i-1; if x=a[i].x then begin if y<a[i].y then if (x<=Min(a[s].x ,a[j].x))OR (x>=Max(a[s].x,a[j].x)) then dem:=dem+2 else dem:=dem+1; end else if (x>Min(a[i].x,a[j].x)) and (x<Max(a[j].x,a[i].x)) then if y<=Min(a[i].y,a[j].y) then dem:=dem+1 else if y <= (x-a[j].x)*(a[i].y-a[j].y)/ (a[i].x-a[j].x)+a[j].y then dem:=dem+1; end; SOGIAODIEM:=dem; End; 29
  • 34. Chương II. Tô màu 2.2.3. Thu t toán tô màu theo dòng quét (Scanline) ð t x0 = Min(xi), i∈ [1,n]. y Bư c 1: K Dy//0y ñi qua x0 (hình 2.5). Dy Bư c 2: Xác ñ nh các giao ñi m Mi- (x,y) c a Dy v i các c nh Ci. N u có c nh Ci = PiPi+1 song song và trùng v i Dy thì xem như Dy c t Ci t i 2 ñi m Pi và Pi+1. Bư c 3: S p x p l i các ñi m Mi theo x0 xi th t tăng d n ñ i v i yi (ñi m ñ u x Hình 2.5 tiên có th t là 1). Bư c 4: Nh ng ñi m n m trên Dy gi a giao ñi m l và giao ñi m ch n liên ti p là nh ng ñi m n m trong ña giác và nh ng ñi m này s ñư c tô. Bư c 5: Tăng x0 lên m t Pixel. N u x0 ≤ Max(xi) thì quay l i bư c 1. 2.2.4. Thu t toán tô màu theo v t d u loang L y P(x,y) ∈ S, tô màu P. X Xét các ñi m lân c n c a P (Hình 2.6). X O X O N u các ñi m lân c n ñó v n còn thu c S và chưa X ñư c tô màu thì tô màu các ñi m lân c n ñó... Thu t toán trên có th ñư c minh h a b ng th t c Hình 2.6 ñ qui: Procedure TOLOANG(x,y:Integer; Color:Word); Begin If (P(x,y)∈S)and(P(x,y)chưa tô) Then Begin PutPixel(x,y,Color); TOLOANG(x+1,y,Color); TOLOANG(x-1,y,Color); 30
  • 35. Chương II. Tô màu TOLOANG(x,y+1,Color); TOLOANG(x,y-1,Color); End; End; BÀI T P 1. Vi t hàm DienTich(P:Array; n:Byte); ñ tính di n tích c a ña giác l i có n ñ nh lưu trong m ng P. 2. Vi t hàm KiemTra(x,y:Integer; P:Array; n:Byte):Boolean; ñ ki m tra ñi m (x,y) n m trong hay ngoài ña giác có n ñ nh ñư c lưu trong m ng P theo hai cách: - Dùng công th c tính di n tích ña giác (ñ i v i ña giác l i). - Dùng thu t toán Jordan (ñ i v i ña giác b t kỳ). 2. Vi t chương trình cài ñ t thu t toán tô màu m t ña giác theo thu t toán Scanline. 3. Vi t chương trình cài ñ t thu t toán tô màu m t ña giác theo v t d u loang theo hai phương án: a. ð qui. b. Kh ñ qui. 4. Vi t th t c FillRec(x1,y1,x2,y2:Integer; color:Byte); ñ tô màu hình ch nh t xác ñ nh b i 2 ñ nh (x1,y1) và (x2,y2). 5. Vi t th t c FillEllipse(x,y,Rx,Ry:Integer; color:Byte); ñ tô màu Ellipse có tâm (x,y) và bán kính theo hai tr c là Rx và Ry. 6. Vi t th t c FillSector(x,y,Rx,Ry,g1,g2:Integer; color:Byte); ñ tô màu hình qu t Ellipse có tâm (x,y), bán kính theo hai tr c là Rx và Ry, góc b t ñ u là g1 và góc k t thúc là g2. 7. Vi t th t c Donut(x,y,Rmin,Rmax:Integer; color:Byte); ñ tô màu hình vành khăn có tâm (x,y) và bán kính hai ñư ng tròn tương ng là Rmin và Rmax. Bài t p l n: Xây d ng m t thư vi n ñ h a MYGRAPH tương t như thư vi n GRAPH.TPU c a Turbo Pascal. 31
  • 36. CHƯƠNG III XÉN HÌNH 3.1. ð T V N ð Cho m t mi n D ⊂ Rn và F là m t hình trong Rn (F ⊂ Rn). Ta g i F ∩ D là hình có ñư c t F b ng cách xén vào trong D và ký hi u là ClipD(F). Bài toán ñ t ra là xác ñ nh ClipD(F). 3.2. XÉN ðO N TH NG VÀO VÙNG HÌNH CH NH T C A R2 3.2.1. C nh c a hình ch nh t song song v i các tr c t a ñ Lúc này:  X min ≤ x ≤ X max  D = ( x, y ) ∈ R 2 |   Y min ≤ y ≤ Y max  và F là ño n th ng n i 2 ñi m (x1,y1), (x2,y2) nên phương trình c a F là:  x = x1 + ( x 2 − x1). t  t ∈ [0,1]  y = y1 + ( y 2 − y1). t Do ñó, F có th ñư c vi t dư i d ng: F = {(x,y) ∈ R2 | x = x1 + (x2 -x1).t; y = y1 + (y2 -y1).t; 0 ≤ t ≤ 1} Khi ñó, giao ñi m c a F và D chính là A nghi m c a h b t phương trình (theo t): y P yMax Xmin ≤ x1+ (x2 - x1). t ≤ Xmax  Q  Ymin ≤ y1+ (y2 - y1). t ≤ Ymax yMin  0≤ t ≤1  B G i N là t p nghi m c a h phương trình xMin xMax X trên. Hình 3.1 N u N = ∅ thì ClipD(F) = ∅ N u N ≠ ∅ thì N = [t1, t2] (t1 ≤ t2) G i P, Q là 2 giao ñi m xác ñ nh b i:
  • 37. Chương III. Xén hình  Px = x1 + ( x 2 − x1). t 1  Qx = x1 + ( x 2 − x1). t 2    Py = y1 + ( y 2 − y1). t 1 Qy = y1 + ( y 2 − y1). t 2 thì: ClipD(F) = PQ (Hình 3.1) 3.2.1.1. Thu t toán Cohen - Sutherland • Chia m t ph ng ra làm 9 vùng, m i vùng ñánh m t mã nh phân 4 bit (hình 3.2). Bit 1: Qui ñ nh vùng n m bên trái c a s 100 100 101 1 0 0 Bit 2: Qui ñ nh vùng n m bên ph i c a s 000 000 001 Bit 3: Qui ñ nh vùng n m bên dư i c a s 1 0 0 Bit 4: Qui ñ nh vùng n m bên trên c a s 010 010 011 1 0 0 • Xét ñi m P ∈ R2 : Hình 3.2 1 nãúuPx < X min Pleft =  0 Ngæåüclaûi 1 nãúuP > X max x PRight =  0 Ngæåüc laûi 1 nãúuPy < Y min PBelow =  0 Ngæåüclaûi 1 nãúuPy > Y max PAbove =  0 Ngæåüclaûi • Xét ño n th ng AB, ta có các trư ng h p sau: i/ N u Mã(A) = Mã(B) = 0000 thì AB ∈ D ⇒ ClipD(F) = AB ii/ N u Mã(A) AND Mã(B) ≠ 0000 thì ño n AB n m hoàn toàn bên ngoài hình ch nh t ⇒ ClipD(F) = ∅ Chú ý: Phép toán AND là phép toán Logic gi a các bit. iii/ N u (Mã(A) AND Mã(B) = 0000) và (Mã(A) ≠ 0000 ho c Mã(B) ≠ 0000) thì: Gi s Mã(A) ≠ 0000 ⇔ A n m ngoài hình ch nh t. ♦ N u Aleft = 1 : thay A b i ñi m n m trên ño n AB và c t c nh trái (n i dài) c a hình ch nh t. 33
  • 38. Chương III. Xén hình ♦ N u Aright = 1: thay A b i ñi m n m trên ño n AB c t c nh ph i (n i dài) c a hình ch nh t. ♦ N u ABelow = 1: thay A b i ñi m n m trên ño n AB và c t c nh dư i (n i dài) c a hình ch nh t. ♦ N u AAbove = 1: thay A b i ñi m n m trên ño n AB và c t c nh trên (n i dài) c a hình ch nh t. Chú ý: Quá trình này ñư c l p l i: Sau m i l n l p, ta ph i tính l i mã c a A. N u c n, ph i ñ i vai trò c a A và B ñ ñ m b o A luôn luôn n m bên ngoài hình ch nh t. Quá trình s d ng khi x y ra m t trong 2 trư ng h p: i/ ho c ii/ 3.2.1.2. Thu t toán chia nh phân • Ý tư ng c a thu t toán này tương t như thu t toán tìm nghi m b ng phương pháp chia nh phân. • M nh ñ : Cho M: trung ñi m c a ño n AB, Mã(A) ≠ 0000, Mã(B) ≠ 0000, Mã(M) ≠ 0000 thì ta có: [Mã(A) AND Mã(M)] ≠ 0000 ho c [Mã(M) AND Mã(B)] ≠ 0000. Ý nghĩa hình h c c a m nh ñ : N u c ba ñi m A, B, M ñ u ngoài hình ch nh t thì có ít nh t m t ño n hoàn toàn n m ngoài hình ch nh t. • Ta phát th o thu t toán như sau: i/ N u Mã(A) = 0000 và Mã(B) = 0000 thì ClipD(F) = AB ii/ N u Mã(A) AND Mã(B) ≠ 0000 thì ClipD(F) = ∅ iii/ N u Mã(A) = 0000 và Mã(B) ≠ 0000 thì: P:=A; Q:=B; Trong khi |xP -xQ| + |yP - yQ| ≥ 2 thì: ♦ L y trung ñi m M c a PQ; ♦ N u Mã(M) ≠ 0000 thì Q:= M. 34
  • 39. Chương III. Xén hình Ngư c l i: P:= M. ⇒ ClipD(F) = AP iv/ N u Mã(A) ≠ 0000 và Mã(B) = 0000 thì: ð i vai trò c a A, B và áp d ng ii/ v/ N u Mã(A) ≠ 0000 ≠ Mã(B) và [Mã(A) AND Mã(B)]= 0000 thì: P:=A; Q:=B; L y M: trung ñi m PQ; Trong khi Mã(M) ≠ 0000 và |xP - xQ| + |yP - yQ| ≥ 2 thì: ♦ N u Mã(M) AND Mã(Q) ≠ 0000 thì Q:=M. Ngư c l i P:=M. ♦ L y M: trung ñi m PQ. N u Mã(M) ≠ 0000 thì ClipD(F) = ∅ . Ngư c l i, áp d ng ii/ ta có: ClipD(MA) = MA1 ClipD(MB) = MB1 Suy ra: ClipD(F) = A1B1 3.2.1.3. Thu t toán Liang - Barsky ð t ∆x = x2 - x1 ∆y = y2 - y1 p1 = - ∆x q1 = x1 - xMin p2 = ∆x q2 = xMax - x1 p3 = - ∆y q3 = y1 - yMin p4 = ∆y q4 = yMax - y1 thì h b t phương trình giao ñi m c a F và D có th vi t l i: Pk .t ≤ Q k , k = 1..4   0 ≤ t ≤1 Xét các trư ng h p sau: i/ ∃k: Pk = 0 và Qk < 0: ( ðư ng th ng song song v i các biên và n m ngoài vùng hình ch nh t ) 35
  • 40. Chương III. Xén hình ⇒ ClipD(F) = ∅ ii/ ∀k ∈ {1,2,3,4}: Pk ≠ 0 ho c Qk ≥ 0: ð t K1 = {k | Pk > 0 } K2 = {k | Pk < 0 } Qk u1 = Max({ | k ∈ K2} ∪ {0}) Pk Qk u2 = Min({ | k ∈ K1} ∪ {1}) Pk N u u1 > u2 thì ClipD(F) = ∅ Ngư c l i: G i P, Q là 2 ñi m th a  Px = x1 + ∆x.u1 Qx = x1 + ∆x.u2  và  Py = y1 + ∆y.u1 Qy = y1 + ∆y.u2 thì ClipD(F) = PQ 3.2.2. Khi c nh c a vùng hình ch nh t t o v i tr c hoành m t góc α∈(0,Π/2) Π Ta dùng phép quay tr c t a ñ ñ ñưa bài toán v trư ng h p các c nh c a hình ch nh t song song v i các tr c t a ñ (hình 3.3). y G i R là ma tr n quay c a phép ñ i tr c, ta có:  X min  X min   = R.    Y min   Y min  α  X max  X max   = R.    Y max   Y max  O x  cos(α ) sin(α )  v i R=   Hình 3.3  − sin(α ) cos(α ) 36
  • 41. Chương III. Xén hình 3.3. XÉN ðO N TH NG VÀO HÌNH TRÒN Gi s ta có ñư ng tròn tâm O(xc,yc) bán kính R và ño n th ng c n xén là AB v i A(x1,y1), B(x2,y2) (Hình 3.4). A * Thu t toán: B • Tính d(O,AB) • Xét các trư ng h p: i/ N u d > R thì ClipD(F) = ∅ Hình 3.4 ii/ N u d = R thì ClipD(F) = A0 v i A0 là chân ñư ng vuông góc h t O xu ng AB. iii/ N u d < R thì xét các trư ng h p sau: ♦ (OA < R) AND (OB < R) thì ClipD(F) = AB ♦ N u m t ñi m n m trong và ñi m kia n m ngoài hình tròn, ch ng h n OA<R và OB>R thì ClipD(F) = AI v i I là giao ñi m duy nh t gi a AB và ñư ng tròn. ♦ (OA > R) AND (OB > R) thì ClipD(F) = IJ v i I, J là hai giao ñi m c a AB v i ñư ng tròn. Sau ñây là phương pháp tìm giao ñi m gi a ño n th ng và ñư ng tròn: ◊ Phương trình ñư ng tròn: (x - xc)2 + (y - yc)2 = R2 (1)  x = x1 + ( x 2 − x1).λ  ◊ Phương trình ño n AB:  y = y1 + ( y 2 − y1).λ (2)  0 ≤ λ ≤1  − a ± a 2 − bc ◊ Thay (2) vào (1) ta suy ra: λ = b Trong ñó: a = ∆x.(x1 - xc) + ∆y.(y1 - yc) b = (∆x)2 + (∆y)2 c = (x1 - xc)2 + (y1 - yc)2 - R2 37
  • 42. Chương III. Xén hình ∆x = x2 - x1 ∆y = y2 - y1 ◊ D a vào ñi u ki n 0 ≤ λ ≤ 1 ñ ch n giao ñi m. 3.4. XÉN ðƯ NG TRÒN VÀO HÌNH CH NH T CÓ CÁC C NH SONG SONG V I TR C T A ð Lúc này: D = {(x,y)| xMin ≤ x ≤ xMax ; yMin ≤ y ≤ yMax } F = { (x,y)| (x - xC)2 + (y - yC)2 = R2} Hình *Trư c h t, ta ki m tra các trư ng h p ñ c bi t sau: 3.5 i/ N u xMin ≤ xC -R; xC +R ≤ xMax; yMin ≤ yC -R; yC +R ≤ yMax; thì ClipD(F) = F (Hình 3.5) ii/ N u xC +R < xMin ho c xC -R > xMax ho c yC +R < yMin ho c yC - R > yMax Hình 3.6 thì ClipD(F) = ∅ (Hình 3.6) *Xét trư ng h p còn l i: Tìm các giao ñi m c a F và D. S p x p các giao ñi m ñó theo chi u ngư c kim ñ ng h . • Các cung tròn ñư c t o b i 2 giao ñi m liên ti p s hoàn toàn n m trong D ho c hoàn toàn n m bên ngoài D. • ð xác ñ nh các cung này n m trong hay ngoài D, ta ch c n l y trung ñi m M c a cung ñó. N u M ∈ D thì cung ñó n m trong D, ngư c l i thì nó n m ngoài D. 38
  • 43. Chương III. Xén hình 3.5. XÉN ðA GIÁC VÀO HÌNH CH NH T Hình 3.7. Xén ña giác vào hình ch nh t Thu t toán SutherLand - Hodgman i/ N u t t c các ñ nh c a ña giác ñ u n m trong hình ch nh t thì hình c n xén chính là ña giác và bài toán coi như ñã ñư c gi i quy t. Ai+ Ai Ai Ai+ Ai+ Ai+ Ai+ Ai Ai Ai Hình 3.8. Các trư ng h p c n xét ii/ Trư ng h p ngư c l i: - Xu t phát t m t ñ nh n m ngoài hình ch nh t, ta ch y theo d c biên c a ña giác. V i m i c nh c a ña giác, ta có các trư ng h p sau: N u c hai ñ nh ñ u n m ngoài hình ch nh t thì: N u Ma(Ai) and Ma(Ai+1) ≠ 0000 thì không lưu ñ nh Ngư c l i thì lưu hai giao ñi m. Ai ngoài, Ai+1 trong: lưu giao ñi m P và Ai+1. C hai ñ nh ñ u n m trong hình ch nh t: lưu Ai và Ai+1. Ai trong, Ai+1 ngoài: lưu Ai và giao ñi m P. 39
  • 44. Chương III. Xén hình - Sau khi duy t qua t t c các c nh c a ña giác thì ta có ñư c m t dãy các ñ nh m i phát sinh: B1, B2, ..., Bn N u trong dãy các ñ nh m i này có hai ñ nh liên ti p không n m trên cùng m t c nh c a hình ch nh t , gi s hai ñ nh ñó là Bi và Bi+1 thì ta ñi d c các c nh c a hình ch nh t t Bi ñ n Bi+1 ñ tìm t t c các ñ nh c a hình ch nh t n m trong ña giác r i b sung chúng vào gi a Bi và Bj. T p ñ nh m i tìm ñư c chính là ña giác xén ñư c. - N u t p ñ nh m i này là r ng: N u có m t ñ nh c a hình ch nh t n m trong ña giác thì hình xén ñư c chính là toàn b hình ch nh t. Ngư c l i, hình xén ñư c là r ng. BÀI T P 1. Vi t hàm MA(P:ToaDo):Byte; ñ ñánh mã cho ñi m P. 2. Cài ñ t thu t toán xén m t ño n th ng vào m t hình ch nh t theo các thu t toán: Liang-Barsky, Cohen-Sutherland, chia nh phân. 3. Cài ñ t thu t toán xén m t ño n th ng vào m t hình tròn. 4.Cài ñ t thu t toán xén m t ña giác vào m t vùng hình ch nh t. 40
  • 45. CHƯƠNG IV CÁC PHÉP BI N ð I 4.1. CÁC PHÉP BI N ð I TRONG M T PH NG 4.1.1. Cơ s toán h c Phép bi n ñ i Affine 2D s bi n ñi m P(x,y) thành ñi m Q(x’,y’) theo h phương trình sau: x’ = Ax + Cy + trx y’ = Bx + Dy + try Dư i d ng ma tr n, h này có d ng: A B (x’ y’) = (x y).    + (trx try)  C D Hay vi t g n hơn: X’ = X.M + tr v i X’=(x’,y’); X=(x,y); tr=(trx,try) - vector t nh ti n; A B M=    - ma tr n bi n ñ i.  C D 4.1.1.1. Phép ñ ng d ng Ma tr n c a phép ñ ng d ng là:  A 0  x ' = Ax M=   ⇔  0 D  y ' = Dy Cho phép ta phóng to hay thu nh hình theo m t hay hai chi u. 4.1.1.2. Phép ñ i x ng ðây là trư ng h p ñ c bi t c a phép ñ ng d ng v i A và D ñ i nhau.  −1 0   ñ i x ng qua Oy  0 1
  • 46. Chương IV. Các phép bi n ñ i 1 0    ñ i x ng qua Ox  0 −1  −1 0    ñ i x ng qua g c t a ñ  0 −1 4.1.1.3. Phép quay  Cos (α ) Sin(α )  Ma tr n t ng quát c a phép quay là R=      − Sin(α ) Cos (α )  Chú ý: • Tâm c a phép quay ñư c xét ñây là g c t a ñ . • ð nh th c c a ma tr n phép quay luôn luôn b ng 1. 4.1.1.4. Phép t nh ti n Bi n ñ i (x,y) thành (x’,y’) theo công th c sau x’ = x + M y’ = y + N ð thu n ti n bi u di n dư i d ng ma tr n, ta có th bi u di n các t a ñ dư i d ng t a ñ thu n nh t (Homogen): 1 0 0   (x y 1).  0 1 0 = (x + M y+N 1)   M N 1 4.1.1.5. Phép bi n d ng Ma tr n t ng quát là: M =  1 g   h   1  Trong ñó: g = 0: bi n d ng theo tr c x. h = 0: bi n d ng theo tr c y. 4.1.1.6. H p c a các phép bi n ñ i Có ma tr n bi n ñ i là tích c a các ma tr n c a các phép bi n ñ i. .42
  • 47. Chương IV. Các phép bi n ñ i Ví d : Phép quay quanh m t ñi m b t kỳ trong m t ph ng có th th c hi n b i tích c a các phép bi n ñ i sau: ° Phép t nh ti n tâm quay ñ n g c t a ñ . ° Phép quay v i góc ñã cho. ° Phép t nh ti n k t qu v tâm quay ban ñ u. Như v y, ma tr n c a phép quay quanh m t ñi m b t kỳ ñư c th c hi n b i tích c a ba phép bi n ñ i sau:  1 0 0  Cos(α ) Sin (α ) 0  1 0 0        0 1 0 .  − Sin (α ) Cos(α ) 0 .  0 1 0       −M −N 1  0 0 1  M N 1 4.2. Ví d minh h a Vi t chương trình mô ph ng phép quay m t tam giác quanh g c t a ñ . Uses crt,Graph; Type ToaDo=Record x,y:real; End; var k,Alpha,goc:real; P,PP,PPP,P1,P2,P3:ToaDo; x0,y0:word; ch:char; Procedure VeTruc; Begin Line(GetMaxX div 2,0,GetMaxX div 2,GetMaxY); Line(0,GetMaxY div 2,GetMaxX,GetMaxY div 2); End; Procedure VeHinh(P1,P2,P3:ToaDo); Begin Line(x0+Round(P1.x*k),y0-Round(P1.y*k), x0+Round(P2.x*k),y0- Round(P2.y*k)); Line(x0+Round(P2.x*k),y0-Round(P2.y*k), .43
  • 48. Chương IV. Các phép bi n ñ i x0+Round(P3.x*k),y0- Round(P3.y*k)); Line(x0+Round(P3.x*k),y0-Round(P3.y*k), x0+Round(P1.x*k),y0- Round(P1.y*k)); End; Procedure QuayDiem(P:ToaDo;Alpha:real; var PMoi:ToaDo); Begin PMoi.x:=P.x*cos(Alpha)-P.y*sin(Alpha); PMoi.y:=P.x*sin(Alpha)+P.y*cos(Alpha); End; Procedure QuayHinh(P1,P2,P3:ToaDo;Alpha:real; var P1Moi,P2Moi,P3Moi:ToaDo); Begin QuayDiem(P1,Alpha,P1Moi); QuayDiem(P2,Alpha,P2Moi); QuayDiem(P3,Alpha,P3Moi); End; BEGIN ThietLapDoHoa; x0:=GetMaxX div 2; y0:=GetMaxY div 2; k:=GetMaxX/50; Vetruc; P.x:=5; P.y:=3; PP.x:=2; PP.y:=6; PPP.x:=6; PPP.y:=-4; P1.x:=5; P1.y:=3; P2.x:=2; P2.y:=6; P3.x:=6; P3.y:=-4; Alpha:=0; goc:=Pi/180; SetWriteMode(XORPut); VeHinh(P,PP,PPP); Repeat ch:=readkey; if ord(ch)=0 then ch:=readkey; case Upcase(ch) of #75: Begin .44
  • 49. Chương IV. Các phép bi n ñ i VeHinh(P1,P2,P3); Alpha:=Alpha-goc; QuayHinh(P,PP,PPP,Alpha,P1,P2,P3); VeHinh(P1,P2,P3); End; #77: Begin VeHinh(P1,P2,P3); Alpha:=Alpha+goc; QuayHinh(P,PP,PPP,Alpha,P1,P2,P3); VeHinh(P1,P2,P3); End; End; Until ch=#27; CloseGraph; END. 4.2. CÁC PHÉP BI N ð I TRONG KHÔNG GIAN 4.2.1. Các h tr c t a ñ ð ñ nh v m t ñi m trong không gian, ta có th ch n nhi u h tr c t a ñ : Z Z Y Y O X H tr c ti p H gián ti p Hình 4.1 • H t a ñ tr c ti p : n u tay ph i c m tr c Z sao cho ngón cái hư ng theo chi u dương c a tr c Z thì b n ngón còn l i s quay t tr c X sang tr c Y (Qui t c bàn tay ph i). .45
  • 50. Chương IV. Các phép bi n ñ i • H t a ñ gián ti p : ngư c l i (Qui t c bàn tay trái). Thông thư ng, ta luôn luôn ñ nh v m t ñi m trong không gian qua h tr c ti p. Trong h t a ñ tr c ti p, ta chia ra làm 2 lo i sau: Z Z P(x,y,z) P(R,θ,φ) R Y φ Y O O θ X X H t a ñ Descarter H c u Hình 4.2 Ta có công th c chuy n ñ i t a ñ t h này sang h khác: θ Φ x = R.Cos(θ).Cos(Φ) θ Φ y = R.Sin(θ).Cos(Φ) Φ z = R.Sin(Φ) R 2 = x2 + y 2 + z 2 ð thu n ti n cho vi c tính toán, t t c các ñi m trong không gian ñ u ñư c mô t dư i d ng ma tr n 1x4, t c là (x,y,z,1). Vì v y, t t c các phép bi n ñ i trong không gian ñ u ñư c bi u di n b i các ma tr n vuông 4x4 (Ma tr n Homogen). 4.2.2. Các công th c bi n ñ i Phép bi n ñ i Affine 3D có d ng: X’=X.M + tr v i X’=(x’,y’,z’); X=(x,y,z); M - ma tr n bi n ñ i; tr=(trx,try,trz) - vector t nh ti n 4.2.2.1. Phép thay ñ i t l  A 0 0 0    x ' = A. x  0 B 0 0  M= ⇔  y ' = B. y  0 0 C 0    z ' = C. z   0 0 0 1 .46
  • 51. Chương IV. Các phép bi n ñ i 4.2.2.2. Phép ñ i x ng 1 0 0 0   0 1 0 0 Mz =  ñ i x ng qua m t (XY) 0 0 −1 0   0 0 0 1 1 0 0 0   0 −1 0 0 My=  ñ i x ng qua m t (XZ) 0 0 1 0   0 0 0 1  −1 0 0 0   0 1 0 0 Mx =  ñ i x ng qua m t (YZ) 0 0 1 0   0 0 0 1 4.2.2.3. Phép t nh ti n 1 0 0 0   x ' = x + M 0 1 0 0  M=  ⇔  y' = y + N 0 0 1 0    z' = z + P  M N P 1 4.2.2.4. Phép quay Ta nh n th y r ng, n u phép quay quay quanh m t tr c nào ñó thì t a ñ c a v t th t i tr c ñó s không thay ñ i. Do ñó, ta có ma tr n c a các phép quay như sau:  Cos (θ ) Sin(θ ) 0 0    − Sin(θ ) Cos (θ ) 0 0 RZ =  0 0 1 0    0 1  0 0  1 0 0 0    0 Cos (θ ) Sin(θ ) 0 RX =  0 − Sin(θ ) Cos (θ ) 0   0 1  0 0  .47
  • 52. Chương IV. Các phép bi n ñ i  Cos (θ ) 0 Sin(θ )0    0 1 0 0 RY =  − Sin(θ ) 0 Cos (θ ) 0     1  0 0 0  Chú ý: Tích c a 2 ma tr n nói chung không giao hoán nên k t qu c a 2 phép quay liên ti p tùy thu c vào th t th c hi n tích s . Ví d : RX.RY ≠ RY.RX 4.2.3. Ma tr n ngh ch ñ o ð nh nghĩa: Hai ma tr n ñư c g i là ngh ch ñ o c a nhau n u tích s c a chúng là ma tr n ñơn v . Ma tr n ngh ch ñ o c a ma tr n M ký hi u là M-1 Ví d :  1 2 3  6 −2 −3  1 0 0        1 3 3 .  −1 1 0  =  0 1 0        1 2 4  −1 0 1   0 0 1 Ngư i ta ch ng minh ñư c r ng: T t c các ma tr n c a các phép bi n ñ i ñã nêu trên ñ u có ma tr n ngh ch ñ o. • Ma tr n ngh ch ñ o c a phép t nh ti n có ñư c b ng cách thay M, N, P b ng - M, -N, -P. • Ma tr n ngh ch ñ o c a phép thay ñ i t l có ñư c b ng cách thay A, B, C b ng 1/A, 1/B, 1/C. • Ma tr n ngh ch ñ o c a phép quay có ñư c b ng cách thay góc θ b ng -θ . θ 4.3. CÁC PHÉP CHI U C A V T TH TRONG KHÔNG GIAN LÊN M T PH NG 4.3.1. Phép chi u ph i c nh (Perspective) Phép chi u này cho hình nh gi ng như khi nhìn v t th . ð tìm hình chi u P’(y’,z’) c a P(x,y,z), ta n i P v i m t (tâm chi u). Giao ñi m c a ñư ng này v i m t quan sát chính là P’ (hình 4.3). Gi s P n m phía trư c m t, t c là P.x < E. .48
  • 53. Chương IV. Các phép bi n ñ i Z P(x,y,z) z' P' y' (E,0,0) Maét X Y Maët phaún g chieáu Hình 4.3 Phương trình c a tia ñi qua m t và P là: r(t) = (E,0,0).(1-t) + (x,y,z).t (*) Giao ñi m v i m t ph ng quan sát có thành ph n x’ = 0. 1 Do thành ph n x’ c a tia r là E.(1-t) + x.t = 0 nên t = . Thay t vào (*) ta 1− x / E tính ñư c: y z y’ = va z’ = 1− x / E 1− x / E NH N XÉT i/ Phép chi u ph i c nh không gi nguyên hình d ng c a v t th . ii/ Ch có nh ng ñư ng th ng song song v i m t ph ng chi u thì m i song song v i nhau. iii/ Phép chi u ph i c nh ñư c qui ñ nh b i 5 bi n: • Hư ng c a m t ph ng chi u so v i v t th . • ð cao c a tâm chi u so v i v t th . • Kho ng cách t tâm chi u ñ n v t th (R). • Kho ng cách t m t ph ng chi u ñ n tâm chi u (D). • ð d ch chuy n ngang c a tâm chi u so v i v t th . Chú ý: V i t a ñ c u, ta ch c n 4 tham s : R, Φ, θ, D. .49