1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng: Môn Đồ Họa Máy Tính 2017

81 196 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 630,65 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài Giảng về thuật toán vẽ các đường thẳng, đường tròn, elip.. Đem đến kiến thức dễ tiếp cận nhất để sinh viên tiếp thu hiệu quả. Nhờ đó mà phát huy được năng lực của sinh viên cũng như mong muốn của nhà trường đặt ra.

Trang 1

Chương 2

Các thu

Các thuậật toán đ t toán đồồ ho hoạạ ccơơ ssởở

Trang 2

Nộội dung i dung

2.1 Các thuật toán vẽ đoạn thẳng 2.2 Các thuật toán vẽ đường tròn 2.3 Các thuật toán vẽ elip

2.4 Các thuật toán clipping

2.5 Các thuật toán tô màu

Trang 3

2.1 Các thu

2.1 Các thuậật toán v t toán vẽẽ đo đoạạn th n thẳẳng ng

 Bài toán:

 Input: Cho đoạn thẳng P1P2 : P1(x1; y1), P2(x2; y2).

 Output: Vẽ đoạn thẳng AB trên màn hình.

 Giải quyết bài toán

Thuật toán làm tròn số

 Thuật toán làm tròn số

 Thuật toán Bresenham

 Thuật toán Midpoint

Trang 4

1

x x

1

2

x x

y

y m

 x x1 y1m

Trang 5

Thuậật toán làm tròn s t toán làm tròn sốố

 Chia thành 4 trường hợp:

 TH1: P1P2 song song với Oy

 TH2: P1P2 song song với Ox

Trang 9

Thuậật toán làm tròn s t toán làm tròn sốố

 TH4 TH4: |m| > 1 tương tự TH3

khi đổi vai trò x, y.

 Bước 1: Nếu y1 > y2 thì: Hoán

Trang 11

Thuậật toán Breseham t toán Breseham

 TH3 TH3: 0 < m 0 < m  11

x O(0,0)

d1d

Trang 12

Thuậật toán Breseham t toán Breseham

 Cơ sở toán học xây dựng thuật toán:

Trang 15

Thuậật toán Breseham t toán Breseham

 Xét p1= 2dy.x1-2dx.y1+ 2dy(1-x1)+2dx.y1-dx

= 2dy.x1-2dx.y1+2dy -2dy.x1+2dx.y1-dx

= 2dy 2dy dx dx =const

Trang 16

Thuậật toán Bresenham t toán Bresenham

 Thuật Thuật toán toán::

 Bước 1: Nếu x1>x2 thì: Hoán đổi P1, P2

Trang 17

Thuậật toán Breseham t toán Breseham

 TH4: TH4: 1 1  m <0 m <0

Sinh viên tự xây dựng

thuật toán tương tự TH3:

Trang 19

Thuậậtt toán toán Midpoint Midpoint

 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 vẽ tiếp theo là

S(xi+1, yi) hay K(xi+1, yi+1)

bằng cách so sánh với điểm

K Q

Trang 20

Thuậậtt toán toán Midpoint Midpoint

 Phương trình dạng tổng quát của đườ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 thấy

 F(x,y) < 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

 F(x,y) > 0 nếu (x,y) nằm phía dưới đường thẳng

 Việc chọn điểm S hay K dựa vào việc xét dấu của Pi =2F(M) =2F(xi+1,yi+1/2)

Trang 21

xi

yi

Trang 22

Thuậậtt toán toán Midpoint Midpoint

 Mặt khác Pi = 2F(xi+1,yi+1/2)

Pi+1 = 2F(xi+1+1,yi+1+1/2)

 Nên Pi+1-Pi=2F(xi+1+1,yi+1+1/2) - 2F(xi+1,yi+1/2)

= 2[ A(xi+1i+1+1)+B(yi+1i+1+1/2)+C] –2[A(xii+1)+B(yii+1/2) +C]

= 2A(xi+1-xi) + 2B(yi+1-yi)

= 2A + 2B(yi+1-yi) (vì xi+1-xi = 1)

=> Pi+1 = Pi + 2A +2B(yi+1-yi) = Pi + 2Dy-2Dx(yi+1-yi)

Trang 23

Thuậậtt toán toán Midpoint Midpoint

 Nếu Pi< 0: Chọn điểm S: yi+1 = yi

Pi+1 = Pi + 2A = Pi + 2Dy

 Nếu Pi  0: Chọn điểm K: yi+1 = yi+ 1

Pi+1i+1 = Pii +2A + 2B = Pii + 2Dy -2Dx

 Với điểm mút đầu tiên ta có

P1=2F(x1+1,y1+1/2)=2A(x1+1)+2B(y1+1/2) +2C

= 2(Ax1+By1+C)+2A+B = 2A+B = 2Dy - Dx (vì Ax1+By1+C = 0)

Trang 24

Thuậậtt toán toán Midpoint Midpoint

Thu

Thuậậtt toántoán MidpointMidpoint

 Bước 1: Nhập P1(x1,y1), P2(x2,y2)

 Bước 2:Tính A=(y2-y1), B=-(x2 - x1), P=2A+B= 2Dy-Dx, x=x1, y=y1

 Bước 3: Vẽ điểm (x,y)

 Bước 4: x=x+1;

 Bước 5: Nếu x<x2 thì

Nếu P<0 thì P = P+A = P+2Dy;

Ngược lại thì

P=P+2A+2B = 2Dy-2Dx y=y+1;

Quay lại bước 3Ngược lại thì kết thúc

Trang 25

2.2 Các thu

2.2 Các thuậật toán v t toán vẽẽ đ đườ ường tròn

 Xét đường tròn tâm O(0;0),

y

x x

M1(x1;y1)

xA

yA

Trang 27

2.2 Các thu

2.2 Các thuậật toán v t toán vẽẽ đ đườ ường tròn

 Bài Bài toán toán::

 Input: Cho tâm O(0,0), bán kính r

 Output: Vẽ đường tròn tâm O, bán kính r.

 Giải Giải quyết quyết bài bài toán toán::

 Thuật toán làm tròn số

 Thuật toán Bresenham

 Thuật toán Midpoint

Trang 28

Thuậật toán làm tròn s t toán làm tròn sốố

 Theo phương trình đại số:

 Cung AB:

 Xét trên cung AB: nếu x=1 thì

|y|1 nên lấy cơ sở theo x

 Thuật toán:

B

O y

M1(x,y), M2(y;x),M3(y;-x), M4(x;-y),

M5(-x;-y), M6(-y;-x), M7(-y;x), M8(-x;y)

Trang 29

Thuậật toán làm tròn s t toán làm tròn sốố

 Theo phương trình lượng giác Theo phương trình lượng giác:

 Bước 1: alpha=0; step=1/r;

 Bước 3: alpha=alpha+step;

x=r.cos(alpha); y=r.sin(alpha);

 Bước 4: Nếu x>=y: Bước 2;

 Bước 5: Kết thúc

Trang 30

Thuậậtt toán toán Bresenham Bresenham

 Phương trình đường tròn có tọa độ tâm O(x0,y0) bán kính R là: (x-x0)2 + (y-y0)2 = R2 hay

 Để đơn giản ta xét đường tròn có tâm là gốc tọa độ O(0,0).

2 0

2

0 R ( x x ) y

 Do tính đối xứng của hình tròn nên khi vẽ hình tròn

ta chỉ tính các điểm cần vẽ trên cung 1/8 đường tròn rồi lấy đối xứng để vẽ thêm được 7 điểm đối xứng nữa.

Trang 31

Thuậậtt toán toán Bresenham Bresenham

(y,x)0

(-y,-x)

Trang 32

Thuậậtt toán toán Bresenham Bresenham

 Giả sử (xi,yi) đã vẽ được, ta cần chọn điểm kế tiếp là(xi+1,yi) hoặc (xi+1,yi-1) tùy thuộc vào điểm nào gầntọa thực (x,y) hơn

yi

yiy

yi - 1

xi xi + 1

Trang 34

Thuậậtt toán toán Bresenham Bresenham

 Vậy Pi+1– Pi= 4xi + 6 +2(yi+12 - yi2) – 2(yi+1 – yi)

=> Pi+1– Pi = 4xi + 6 +2(yi+12 - yi2) – 2(yi+1– yi)

 Ta thấy:

Nếu Pi < 0 thì d1<d2: chọn yi+1= yi

=> P = P + 4x + 6

=> Pi+1 = Pi+ 4xi + 6 Nếu Pi ≥ 0 thì d1 ≥ d2: chọn yi+1 = yi – 1

=> Pi+1 = Pi+ 4(xi – yi) +10 Chọn điểm đầu tiên cần vẽ là (0, R), ta có P1 = 3-2R

Trang 35

Thuậậtt toán toán Bresenham Bresenham

 Bước 1: Chọn điểm cần vẽ (x,y) = (0,R)

Trang 36

F(x,y)>0 nếu (x,y) nằm ngoài đường tròn

 Khi đó việc chọn điểm vẽ tiếp theo là S(xi+1,yi) hay K(xi+1,yi-1) được đưa về việc xét dấu của:

 Pi=F(M)=F(xi+1,yi-1/2)

Trang 37

 Nếu Pi<0 => M nằm trong đường tròn => Q gần

Trang 38

Thuậậtt toán toán Midpoint Midpoint

 Nếu Pi0 => M nằm ngoài đường tròn => Q gần K hơn => chọn K

Trang 40

Thuậậtt toán toán Midpoint Midpoint

=>Pi+1-Pi= [(xi+2)2+(yi+1-1/2)2-R2] –

Trang 41

Thuậậtt toán toán Midpoint Midpoint

Trang 42

Thuậậtt toán toán Midpoint Midpoint

 Bước 1:Tính P=5/4-R (1-R), x=0, y=R

 Bước 2: Vẽ điểm (x,y) //Vẽ 8 điểm

 Bước 4: Nếu x<=y thì

Nếu P<0 thì P = P+2x+3;Ngược lại thì:

y=y-1; P=P+2(x-y)+5;x=x+1;

Quay lại bước 2Ngược lại thì kết thúc

Trang 43

2.3

2.3 Các Các thu thuậậtt toán toán v vẽẽ elip elip

 Để đơn giản, ta chọn elipse có tâm là gốc tọa

độ Phương trình của nó có dạng:

1

2

2 2

2

 b

y a

Trang 44

Các thu thuậậtt toán toán v vẽẽ elip elip

 Ý tưởng:

xuống và một nhánh từ dưới lên, 2 nhánh gặp nhau tại điểm mà tiếp tuyến với elipse tại điểm đó

có hệ số góc = -1.

 Phương trình tiếp tuyến với elipse tại (xT,yT)

=> Hệ số góc của tiếp tuyến là:

b x

T T

Trang 45

Thuậậtt toán toán Bresenham Bresenham

 Xét trường hợp vẽ nhánh từ trên xuống

 Giả sử điểm (xi , yi ) đã được vẽ.

 Điểm tiếp theo cần chọn là (xi +1, yi) hoặc (xi +1,

yi -1)

 Thay xii +1 vào (*) ta được:

2 2

Trang 47

2

) 1 (

) 1

2 2

2

2 2

) 1

( 2 )

) 1 (

Trang 48

( 2 )

) 1 (

(

1 2

 P[i+1] - P[i] =

) ) 1 (

) 1 ((

1 2

) (

2 yi 12  yi2  yi 1  yi

Trang 49

4 )

3 (

2

1   b 

a b P

Trang 50

Thuậậtt toán toán Bresenham Bresenham

 Bước 1: Nhập O(x0,y0), a,b

 Bước 2: Tính a2=a*a; b2=b*b ; P=2*b2/a2-2*b+1;

 Bước 3: Đặt x=0; y=b;

 Bước 4: Vẽ điểm (x,y)

 Bước 5: x=x+1

Nếu P<0 thìP=P+2*b2/a2*(2*x+3);

Ngược lại thì

y=y-1; P=P+2*b2/a2*(2*x+3)-4*y;

 Bước 6: Nếu (b2/a2)*(x/y)<1 thì quay lại bước 4

Ngược lại thì Kết thúc

Trang 51

 b

y a

x

1

2

2 2

2

 b

y a

x

 Ta thấy:

F(x,y)<0 nếu (x,y) nằm trong ellipse F(x,y)=0 nếu (x,y) thuộc đường ellipse F(x,y)>0 nếu (x,y) nằm ngoài ellipse

Trang 52

Thuậậtt toán toán Midpoint Midpoint

 Giả sử đã vẽ được điểm (xi , yi)

 Khi đó việc chọn điểm vẽ tiếp theo là S(xi+1,yi) hay K(xi+1,yi-1) được đưa về việc xét dấu của: Đặt Pi = a2b2F(M)=a2b2F(xi+1,yi-1/2)

P = a2b2F(x +1,(y -1/2)

Pi+1 = a2b2F(xi+1+1,(yi+1-1/2)

Trang 53

Thuậậtt toán toán Midpoint Midpoint

 Nếu Pi<0 => M nằm trong ellipse => Q gần S hơn => chọn S

S

Q

yiy

Trang 54

Thuậậtt toán toán Midpoint Midpoint

 Nếu Pi 0 => M nằm ngoài ellipse => Q gần K hơn => chọn K

Trang 55

1 (

) 1

(

2 1

2 2

b

y a

x b

1 (

) 1

(

2 2

2

b

y a

x b

Trang 56

) (

)

(

2 2

1 2

2

b

y y

y

y b

a i 

1

2 2

P Hay

Trang 57

2 2

Trang 58

Thuậậtt toán toán Midpoint Midpoint

Quay lại bước 3

Ngược lại thì kết thúc

Trang 60

KOD(P1) and KOD(P2)<>0000:

P1P2 nằm hoàn toàn ngoài cửa sổ

1010 1000

1001

ymax

Trang 61

 Xác định Pnew(xnew;ynew)=?:

 Nếu b1=1: Pnew= P1P2 (x=xmin)

1 2

min

y x x

x x

y y y

x x

new new

max 1

2

1 2

max

y x

x x x

y y

y

x x

new new

Trang 62

Thuậật toán Cohen t toán Cohen Surtheland Surtheland

 Nếu b3=1: Pnew= P1P2 (y=ymin)

 Nếu b4=1: A1= P1P2 (y=ymax)

min 1

2

1 2

min

x y

y y y

x x x

y y

new new

 Gán P1=Pnew ta được đoạn P1 P2 mới.

max 1

2

1 2

max

x y

y y y

x x

x

y y

new new

Trang 63

Thuậật toán Cohen t toán Cohen Surtheland Surtheland

 Thuật Thuật toán toán::

 Bước 1: Tính KOD(P1),KOD(P2)

 Bước 2: Nếu KOD(P1)=KOD(P2)

x x

max 1

2

1 2

x x

y x

x x x

y y

y

new new

min 1

2

1 2

x x

y x

x x x

y y

y

new new

 Nếu b4=1:P1=Pnew=P1P2  (y=y2)

min 1

2

y y

y y

new new

max 1

2

1 2

y y

x y

y y y

x x x

new new

Trang 64

Thuậật toán Liang t toán Liang Basky Basky

 Phương trình đoạn AB dạng tham số:

 Điểm M(x, y) thuộc cửa sổ

; 0 [

y y

dy tdy

y y

x x

dx tdx

x x

A B

A

A B

2 1

x

y y

y

x x

2 1

2 1

t

y tdy

y y

x tdx

x x

A A

(1)

Trang 65

2 1 2 1

t

yy

tdy

yy

tdy

xx

tdx

xx

tdx

A A A A

4

;

1 )

2

(

t

i q

}4

;1,

0

|{

}4

;1,

0

|{

iL

ip

iK

i i

4

1 3

3

2 2

2

1 1

1

y y

q dy

p

y y

q dy

p

x x

q dx

p

x x

q dx

p

A A A A

/

/)

3

(

t

Li

pq

t

Ki

pq

t

i i

i i

(4)

Trang 66

q t

K

i p

q t

i i i i

0 max

1 min

1 min

q t

K i p t

i i i

1

2 t t

Trang 67

1 3

3

2 2

2

1 1

dy p

y y q dy

p

x x q

dx p

x x q dx

p

y y dy x

x dx

A A A A

A B A

dx t x

x B

dy t y y

dx t x

x A

A B

A A

A A

2 1

1

1 1

1 1 1

; 0

;

1

2 4

1 1

; max

, min

t p

q t

t p

q t

i i i i

Trang 68

2.5 Các thu

2.5 Các thuậật toán tô màu t toán tô màu

 Thuật toán vết dầu loang

 Thuật toán tô màu theo đường biên

 Thuật toán tô màu theo dòng quét.

Trang 69

Thuậật toán v t toán vếết d t dầầu loang u loang

 Bài toán:

 Input:

 Miền khép kín xác định bởi mầu biên: mb

 Một điểm M(x; y) thuộc miền cần tô

 Mầu tô: mt

 Mầu tô: mt

 Output: Tô màu miền khép kín trên bằng mầu tô.

Trang 71

}

Trang 72

Thuậật toán tô màu theo đ t toán tô màu theo đườ ường biên

 Bài toán Bài toán: giống thuật toán vết dầu loang

 Input:

 Miền khép kín xác định bởi mầu biên: mb

 Một điểm M(x; y) thuộc miền cần tô

 Mầu tô: mt

 Output: Output: Tô màu miền khép kín trên bằng mầu tô.

Trang 74

Thuậậtt toán toán tô tô màu màu theo theo đ đườ ường

biên

trong đa giác từ Xmin, đến Xmax

dòng về phía trái P, 1 dòng về phía phải P gặp cạnh đa giác thì dừng lại

Trang 75

Thuậật toán tô màu theo đ t toán tô màu theo đườ ường biên

 Thuật toán: (áp dụng với i={1, -1})

 Bước 1: Tìm biên trái nhất và biên phải nhất

x1=x; x2=x;

while (màu(x1-1,y)!=mb) x1=x1-1;

while (màu(x2+1,y)!=mb) x2=x2+1;

 Bước 2: Vẽ đoạn (x1,y) và (x2,y) bằng màu tô (mt)

 Bước 2: Vẽ đoạn (x1,y) và (x2,y) bằng màu tô (mt)

 Bước 3: Tính điểm phát triển tiếp theo:

Trang 76

Thuậật toán tô màu theo dòng quét t toán tô màu theo dòng quét

 Tô màu hình thang cơ bản

 Tô màu n giác

Trang 77

Thuậật toán tô màu theo dòng quét t toán tô màu theo dòng quét

 Tô màu hình thang cơ bản:

 Định nghĩa hình thang cơ bản: là hình thang có đáy song

song với một trục toạ độ

y y y

xA xD

1

xB y

y y y

xB xC

Trang 78

Thuậật toán tô màu theo dòng quét t toán tô màu theo dòng quét

 Tô màu hình thang cơ bản:

 Áp dụng: Tô màu đa giác A1A2 A9

 Gọi thủ tục tô màu hình

thang cơ bản cho các hình

Trang 79

Thuậật toán tô màu theo dòng quét t toán tô màu theo dòng quét

 Tô màu n giác tổng quát:

 Cho màu tô (mt)

 Output: Tô màu n giác

A6

A7 A8

Trang 80

Thuậật toán tô màu theo dòng quét t toán tô màu theo dòng quét

 Tô màu n giác tổng quát:

 Bước 4: Nối các giao điểm M2i+1 và M2i+2 bằng mt

với i={0,1, ,k-1}

 Bước 5: y=y+1

 Bước 6: Nếu y ymax: Bước 3;

 Bước 7: Kết thúc

Trang 81

Thuậật toán tô màu theo dòng quét t toán tô màu theo dòng quét

 Tô màu n giác tổng quát:

 Cài đặt: tham khảo tài liệu

Ngày đăng: 10/08/2017, 09:49

TỪ KHÓA LIÊN QUAN

w