Tải bản đầy đủ (.pdf) (10 trang)

ĐỒ HỌA MÁY TÍNH - CƠ BẢN pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (624.54 KB, 10 trang )

3/28/2011
1
Trƣơng Văn Quốc Nhật
1
CHƢƠNG 1. CƠ BẢN
Nội dung
2
1. Điểm, đoạn thẳng
2. Hệ màu
3. Thuật toán vẽ đoạn thẳng
4. Thuật toán vẽ đƣờng tròn
5. Thuật toán vẽ elíp
6. Thuật toán vẽ đồ thị hàm số bất kỳ
7. Vẽ trong .NET, Bài tập
3/28/2011
2
Điểm, đoạn thẳng
3
Hệ màu
4
 RGB
 CMY, CMYK
 HSV, HSB
3/28/2011
3
5
Vẽ đoạn thẳng – DDA
(Digital Differential Analyser)
1
1 ii
xx


baxy
xayyyy
iii 1
ay
i
11
, yxA
1
1 ii
yy
y
a
xxxx
iii
1
1
a
x
i
1
B1. Tính:
12
xxx
22
, yxB
'A
'B
12
yyy
yxstep ,max

B2. Khởi tạo:
11
, yyxx
step
y
dy
step
x
dx
Vẽ điểm
B3. for i=1step:
dyydxx ,
Vẽ điểm
)(),( yroundxround
yx,
6
d
1
d
2
i
y
1
i
y
i
x
1
i
x

P
Q
M
21
ddxp
i
1212
11 ii
yxyxxyxy
11
121222 xyyxxyyx
ii
11
, yxA
22
, yxB
bxay
iM
1
12
1
12
1
yy
yy
xx
xx
x
y
xx

yy
a
12
12
x
y
xyb
11
,
cxyyxp
iii 111
22
iiii
yyxypp
11
22
iM
yyd
1
Mi
yyd 1,
2
122
21 iM
yydd
0
i
p
Chọn P
ypp

ii
2
1
0
i
p
Chọn Q
xypp
ii
22
1
xyp 2
1
?
?
3/28/2011
4
7
12
xxx
12
yyy
xyp 2
21
xxxfor
Vẽ điểm
yx,
1
yy
0pif

yp 2
else
xyp 22
y
{
}
{
}
12
xxdx
12
yydy
dxcp
1
21
xxxfor
Vẽ điểm
yx,
1
yy
0pif
1
cp
else
2
cp
y
{
}
{

}
dyc 2
1
dxdyc 22
2
0
i
p
Chọn P,
ypp
ii
2
1
0
i
p
Chọn Q,
xypp
ii
22
1
xyp 2
1
Vẽ đoạn thẳng
ttoán Bresenham
Vẽ đoạn thẳng – ttoán MidPoint
8
i
y
1

i
y
i
x
1
i
x
P
Q
M
cbyaxyxf ),(
=0
>0
<0
1
-2
?
?
3/28/2011
5
Nội dung
9
1. Điểm, đoạn thẳng
2. Hệ màu
3. Thuật toán vẽ đoạn thẳng
4. Thuật toán vẽ đƣờng tròn
5. Thuật toán vẽ elíp
6. Thuật toán vẽ đồ thị hàm số bất kỳ
7. Vẽ trong .NET, Bài tập
Vẽ đƣờng tròn – ttoán MidPoint

10
(0,R)
(0,-R)
(R,0)
(-R,0)
222
),( Ryxyxf
x
O
y
0),( yxf
0),( yxf
0),( yxf
:trên
:trong
:ngoài
AB
3/28/2011
6
Thuật toán MidPoint
11
M
(x, y) (x+1, y)
(x+1, y+1)
P
Q
 M ngoài chọn P
5.0,1)( yxfMfd
0d
 M …  chọn Q

0d
M ở đâu?
cumoi
ddd
M
mới
s
12
(x,y) (x+1, y)
(x+1,y+1)
P
Q
M

M
mới
M

(x,y)
(x+1, y)
(x+1,y+1)
P
Q
222
)5.1()2( Ryxd
moi
222
)5.0()1( Ryxd
cu
222

)5.0()2( Ryxd
moi
222
)5.0()1( Ryxd
cu
cumoi
ddd
32x
522 yx
3/28/2011
7
Thuật toán MidPoint
13
5.0,1
0
Rfd
(0,-R) (1,-R)
(1,-R+1)
M
0
x=0; y=-R;
d=1 -R;
plot(x,y); //vẽ điểm đầu tiên
R25.1
while (y<x){
if (d<0){ //chọn P
d+=2*x+3;
}else{ //chọn Q
d+=2*(x+y)+5;
y++;

}
x++;
plot(x,y); //vẽ điểm (x,y)
}
.25
14
x
O
y
1
2
4
5
6
7
8
3
(x,y)
(-x,y)
(x,-y)
(-x,-y)
(y,x)
(y,-x)
(-y,x)
(-y, -x)
3/28/2011
8
15
Bresenham
M

(x, y) (x+1, y)
(x+1, y+1)
P
Q
 M ngoài  chọn P
0Mf
 M …  chọn Q
0Mf
(x, y) (x+1, y)
(x+1, y+1)
P
Q
MidPoint
d
1
d
2
M
 chọn P
0
21
dd
 chọn Q
0
21
dd
222
),( Ryxyxf
Vẽ elíp
16

b
-b
a
-a
C(x
0
,y
0
)
1
2
2
2
2
b
y
a
x
x
O
y
AB
CD
1
1
0
2
0
2
2

0
2
0
ya
xb
b
yy
a
xx
00
, yxC
Phƣơng trình chính tắt:
3/28/2011
9
Vẽ đồ thị hàm số
17
x
y
O
1
x
2
x
Ý tưởng:
Cho x chạy từ x
1
đến x
2
, lấy các
tọa độ (x, f(x)) sau đó nối lại.

Vẽ trong .NET
18
Image
Graphics
Pen
Brush
•DrawLine
•DrawCircle
•DrawEllipse
•FillEllipse
3/28/2011
10
Bài tập 01
19
1. Bắt buộc:
 Tìm hiểu các hệ màu (color model) thông dụng: RGB, CMY(K),
HSV, HSB  file word.
 Xây dựng thuật toán vẽ đoạn thẳng (MidPoint).
 Xây dựng thuật toán vẽ elíp (Bresenham).
 Xây dựng thuật toán vẽ elíp (MidPoint, Bresenham).
 Cài đặt các thuật toán vẽ đoạn thẳng, vẽ đƣờng tròn, vẽ elíp
(DDA, MidPoint, Bresenham)  mỗi thuật toán vẽ là 1 phƣơng
thức, gộp vào 1 file mã nguồn (đuôi là cs).
2. Không bắt buộc:
 Tìm hiểu (+cài đặt) thuật toán vẽ đoạn thẳng, vẽ đƣờng tròn,
vẽ elíp khử răng cưa.
 Tìm hiểu (+cài đặt) thuật toán vẽ đoạn thẳng, vẽ đƣờng tròn,
vẽ elíp có độ rộng >1 pixel.
 Vẽ đồ thị hàm số bất kỳ.

×