1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình thực tại ảo BKHN lession 3:Các giải thuật sinh các thực thể cơ sở

31 220 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 31
Dung lượng 906,36 KB

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

Nội dung

Rời rạc hoá điểm ảnh Scan Conversion rasterization phương pháp xấp xỉ dựa trên lưới phân giải của màn hình... Midpoint Circle Algorithm  As with the line, we determine the value of the

Trang 1

Các giải thuật sinh các thực thể

cơ sở

Le Tan Hung hunglt@it-hut.edu.vn

0913030731

Trang 2

Rời rạc hoá điểm ảnh

(Scan Conversion rasterization)

phương pháp xấp xỉ dựa trên lưới phân giải của màn hình

Trang 3

Biểu diễn đoạn thẳng

(y-y1)/( x-x1) = ( y2-y1)/( x2-x1)1

y = kx + m

– k = (y2-y1)/( x2-x1) – m = y1- kx1

–  y = k  x

(y2-y1)x - (x2-x1)y + x2y1 - x1y2 = 0

hay rx + sy + t = 0

– s = -(x2-x1 ) – r = (y2-y1) và t = x2y1 - x1y2

Biểu diễn tham biến

Trang 4

If f(x,y) = 0 then it is on the circle

f(x,y) > 0 then it is outside the circle

f(x,y) < 0 then it is inside the circle

Usually, we draw a quarter circle by

incrementing x from 0 to R in unit steps

and solving for +y for each step

- by stepping the angle from 0 to 90

- avoids large gaps but still insufficient

Trang 5

5

Thuật toán DDA

(Digital Differential Analizer)

Giải thuật DDA

k : hệ số góc x,y,m :biến

x = x+1;

y = y+k;

putpixel(x,round(y));

Giải thuật thông thường

DrawLine(int x1,int y1, int x2,int y2,

Trang 6

Giải thuật Bresenham

IBM

dựa trên độ phân giai hưu

Trang 7

Giải thuật Bresenham

i+1

yi

yi+1

Trang 9

y i+1

M

( x i , y i )

x i x i+1

Giải thuật trung điểm-Midpoint

 Jack Bresenham 1965 / Pitteway 1967

 VanAken áp dụng cho việc sinh các đường

thẳng và đường tròn 1985

 Các công thức đơn giản hơn, tạo được các

điểm tương tự như với Bresenham

 d = F (xi + 1, yi+ 1/2) là trung điểm của đoạn

AB

 Việc so sánh, hay kiểm tra M sẽ được thay

bằng việc xét giá trị d

– Nếu d > 0 điểm B được chọn, yi+1 = yi

– nếu d < 0 điểm A được chọn  yi+1 = yi

Trang 10

Bresenham’s Algorithm: Midpoint

Algorithm

Sử dụng phương pháp biểu diễn không tường minh

Tại mỗi trung điểm của đoạn thẳng giá trị được tính là:

Chúng ta gọi di là biến quyết định của bước thứ i

i i i

i

i i i

i

y x c

by ax

y x c

by ax

y x c

by ax

, 0

, 0

, 0

Trang 11

Bresenham’s Algorithm: Midpoint Algorithm

If d i > 0 then chọn điểm A  trung điểm tiếp theo sẽ có dạng:

b a d

c y

b x

a d

y x

i

i i

i i

2

3 ,

Trang 12

Bresenham’s Algorithm: Midpoint

2

1,

1

b a

c by

ax

c y

b x

a d

y x

start start

start start

start start

c y

b x

a d

y x

i

i i

i i

2

1 ,

C

x x

y y

x C c

x x

x b

y y

y a

start end

start end

Trang 13

Midpoint Line Algorithm

initialisation

choose B

choose A

Trang 14

 Nếu điểm A được chọn thi` M tăng

theo 2 hướng x và y với cùng một đơn

Trang 15

Midpoint Circle Algorithm

 Sử dụng phương pháp biểu diễn

không tường minh trong giải thuật

 Thực hiện giải thuật trên 1/8

đường tròn và lấy đối xứng xho

0

circle

on is,

if 0

circleinside

is,

if 0

i i

i i i

y x

y x

y x d

Trang 16

Midpoint Circle Algorithm

 As with the line, we determine the value of the decision variable

by substituting the mid-point of the next pixel into the implicit form of the circle:

If d i < 0 we choose pixel A otherwise we choose pixel B

– Note: we currently assume the circle is centered at the origin

2 2

Trang 17

Midpoint Circle Algorithm

 Again, as with the line algorithm, the choice of A or B can be

used to determine the new value of d i+1

 If A chosen then next midpoint has the following decision

2

1 2

2

1 ,

2 2

i i

i i

i

x d

r y

x d

y x

5 2

2

2

3 2

2

3 ,

2 2

i

i i

i i

i

y x

d

r y

x d

y x

Trang 18

Midpoint Circle Algorithm

If we assume that the radius is an integral value, then the first pixel drawn is (0, r) and the initial value for the decision variable

is given by:

Although the initial value is fractional, we note that all other

values are integers

 we can round down:

r

r r

r d

4

1 1

2

1 ,

r

d0  1 

Trang 19

Midpoint Circle Algorithm

d = 1-r

x = 0

y = r while y < x

initialisation

choose B choose A

Translate to the circle center

stop at diagonal  end of octant

Trang 20

Scan Converting Ellipses

lies in the first quadrant, the other three quadrants can

be drawn by symmetry

2 2 2 2 2 2

Trang 21

Scan Converting Ellipses: Algorithm

 Firstly we divide the quadrant into two regions

 Boundary between the two regions is

– the point at which the curve has a slope of -1

– the point at which the gradient vector has the i and j components of equal magnitude

B C

M

i

Trang 22

Ellipses: Algorithm (cont.)

At the next midpoint, if a 2 (y p -0.5)<=b 2 (x p +1), we switch region 1=>2

 In region 1, choices are E and SE

– Initial condition: dinit = b 2 +a 2 (-b+0.25)

– For a move to E, dnew = dold+DeltaE with DeltaE = b 2 (2xp+3)

– For a move to SE, dnew = dold+DeltaSE with DeltaSE = b 2 (2xp+3)+a 2 (-2yp+2)

 In region 2, choices are S and SE

– Initial condition: dinit = b 2 (xp+0.5) 2 +a 2 ((y-1) 2 -b 2 )

– For a move to S, dnew = dold+Deltas with Deltas = a 2 (-2yp+3)

– For a move to SE, dnew = dold+DeltaSE with DeltaSE = b 2 (2xp+2)+a 2 (-2yp+3)

 Stop in region 2 when the y value is zero

Trang 23

Ký tự Bitmap

với một font chư cho trước là

Trang 24

Cấu trúc font chữ

Typedef struct

{

int leftx,

int width;

} Char location; //Vị trí của text

Typedef struct

{

CacheId;

cách giữa các ký tự Charlocation Table [128];

} fontcache

Trang 25

Ký tự vector

pháp định nghĩa các ký tự bởi đường cong mềm bao ngoài của chúng

toán

Trang 26

So sánh

tự ( copypixel)

scale) đòi hỏi lưu trữ thêm

phương trình)

các công thức biến đổi

môi trường ( ko có kích thước cố định)

Trang 27

Giải thuật đường quét sinh đa giác

Polygon Scan Conversion

 Tồn tại rất nhiều giải thuật sinh đa giác

 M ỗi giải thuật phục vụ cho 1 loại đa giác nhất định:

some algorithms allow triangular polygons only

others require that the polygons are convex and non

self-intersecting and have no holes

triangular convex non-convex self-intersecting religious

Trang 28

Polygon Scan Conversion

Polygon scan conversion là giải thuật chung kinh điển cho các loại khác nhau

 Cho mỗi đoạn thẳng quét, chúng ta xác định các cạnh của đa

giác cắt đoạn thẳng compute spans representing the interior portions of the polygons along this scan-line and fill the

associated pixels

This represents the heart of a scan-line rendering algorithm

used in many commercial products including Renderman and 3D Studio MAX

Trang 29

Polygon Scan Conversion

 Dùng giải thuật (trung điểm) để xác

định các điểm biên cho mỗi đa giác theo thứ tự tăng của x

 Đảm bảo các đa giác chia sẻ điểm

biên mà không chia sẻ các điểm ảnh bên trong của mình

Trang 30

Polygon Scan Conversion

– Xác định giao của đường thẳng quét với cạnh đa giác

– Sắp xếp các giao điểm theo mức độ tăng dần của x value

– Điền các điểm ảnh vào giữa cặp các điểm x

 if inside (on left of span) round up, if outside (on right) round down

 if on left of span assume its interior otherwise exterior

ignore pixel associated with y max of an edge

 handled as a result of previous rule (lower edges not drawn)

Trang 31

Polygon Scan Conversion

rounded down for A rounded up for B

integer x value is on

right = exterior

ymax not included horizontal edge

removed

Ngày đăng: 24/10/2014, 01:37

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w