vothi_quynhyen

New Member

Download miễn phí Bài giảng tóm tắt Đồ họa máy tính





MỤC LỤC
Chương 1 . 4
GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH . 4
Tổng quan đồ họa máy tính . 4
Các ứng dụng của đồ họa máy tính . 4
Các thành phần cơ bản của hệ đồ họa máy tính . 4
1.4 Hệ tọa độ thế giới thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn . 5
Chương 2 . 8
CÁC THUẬT TOÁN . 8
VẼ ĐỐI TƯỢNG ĐỒ HỌA CƠ BẢN . 8
2.1 Thuật toán vẽ đoạn thẳng . 8
2.1.1 Thuật toán DDA (Digital DifferentialAnalyzer) . 9
2.1.2 Thuật toán Bresenham . 11
2.1.3 Thuật toán MidPoint . 14
2.2 Thuật toán vẽ đường tròn . 17
2.2.1 Thuật toán đơn giản . 18
2.2.2 Thuật toán MidPoint . 19
2.3 Thuật toán vẽ Ellipse . 21
2.4. Đường cong tham số . 24
2.4.1. Đường cong Bezier . 24
2.4.1.1. Thuật toán de Casteljau . 24
2.4.1.2. Thuật toán Horner . 27
2.4.2. Đường cong B-Spline . 30
Bài tập chương 2 . 37
Chương 3 . 39
TÔ MÀU . 39
Giới thiệu về màu sắc . 39
Tô màu đơn giản . 39
3.3 Tô màu theo dòng quét . 43
3.4 Tô màu theo biên . 44
Bài tập chương 3 . 46
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 1
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
Chương 4 . 47
PHÉP BIẾN ĐỔI HAI CHIỀU . 47
4.1 Các phép toán cơ sở với ma ma trận. . 47
4.2 Phép tịnh tiến . 48
4.3 Phép biến đổi tỷ lệ . 49
Phép quay . 49
4.5 Phép đối xứng . 52
4.6 Phép biến dạng . 53
4.7 Phép biến đổi Affine ngược . 54
4.8 Hệ tọa độ thuần nhất . 55
4.9 Kết hợp các phép biến đổi . 56
Bài tập chương 4 . 59
Chương 5 . 60
GIAO CÁC ĐỐI TƯỢNG ĐỒ HỌA . 60
Chương 6 . 85
ĐỒ HỌA BA CHIỀU . 85



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

ax). Trong đó, xmin, ymin là hoành
độ và tung độ nhỏ nhất, xmax, ymax là hoành độ và tung độ lớn nhất của các đỉnh của đa
giác.
Cho x đi từ xmin đến xmax, y đi từ ymin đến ymax (hay ngược lai). Xét điểm
P(x,y) có thuộc đa giác không ? Nếu có thì tô với màu cần tô (xem hình 3.2).
Hình 3.2: Đa giác nội tiếp hình chữ nhật.
Một điểm nằm trong đa giác thì số giao điểm từ một tia bất kỳ xuất phát từ điểm đó
cắt biên của đa giác phải là một số lẻ lần. Đặc biệt, tại các đỉnh cực trị (cực đại hay cực
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 40
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
tiểu ) thì một giao điểm phải được tính 2 lần (xem hình 2.5). Tia có thể qua phải hay qua
trái. Thông thường ta chọn tia qua phải.
Ví dụ : Xét đa giác gồm 13 đỉnh là P0, P1, ....., P12 = P0 (xem hình 2.5).
Hình 3.3: Đa giác có 13 đỉnh.
Gọi tung độ của đỉnh Pi là Pi.y . Nếu :
- Pi.y Max ( Pi+1.y, Pi-1.y) thì Pi là đỉnh cực trị.
- Pi-1.y Pi.y > Pi+1.y thì Pi là đỉnh đơn điệu.
- Pi = Pi+1 và Pi.y Max( Pi+2.y, Pi-1.y) thì đoạn [Pi, Pi+1]
là đoạn cực trị.
- Pi = Pi+1 và Pi-1.y Pi.y > Pi+2.y thì đoạn [Pi,Pi+1] là đoạn đơn
điệu.
• Thuật toán xać định điểm nằm trong đa giác
- Với mỗi đỉnh của đa giác ta đánh dấu là 0 hay 1 theo qui ước như sau: nếu là đỉnh
cực trị hay đoạn cực trị thì đánh số 0. Nếu là đỉnh đơn điệu hay đoạn đơn điệu thì
đánh dấu 1.
- Xét số giao điểm của tia nữa đường thẳng từ P là điểm cần xét với biên của đa
giác. Nếu số giao điểm là chẳn thì kết luận điểm không thụôc đa giác. Ngược lại,
số giao điểm là lẻ thì điểm thuộc đa giác.
Minh họa thuật toán xét điểm thuộc đa giác
Function PointInpoly(d: dinh; P: d_dinh; n: integer)
var count, i: integer;
x_cut: longint;
function next(i: integer): integer;
begin
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 41
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
next := (i + n + 1) mod n
end;
function prev(i: integer): integer;
begin
prev := (i + n - 1) mod n
end;
Begin
count := 0;
for i := 0 to n-1 do
if d.y = P.y then
begin
if d.x > P.x then
begin
if ((d[prev(i)].y < P.y) and (P.y < d[next(i)].y)) or
((d[prev(i)].y > P.y) and (P.y > d[next(i)].y)) then
count := count + 1;
if d[next(i)].y = P.y then
if ((d[prev(i)].y < P.y) and (P.y < d[next(next(i))].y)) or
((d[prev(i)].y > P.y and (P.y > d[next(next(i))].y)) then
count := count + 1;
end;
end else {d.y = P.y}
if ((d.y < P.y) and (P.y < d[next(i)].y)) or
((d.y > P.y) and (P.y > d[next(i)].y)) then
begin
x_cut := d.x + Round((d[next(i)].x - d.x)
/ (d[next(i)].y - d.y) * (P.y - d.y));
if x_cut >= P.x then count := count + 1;
end;
if (count mod 2 = 0) then PointInPoly := false
else PointInpoly := true;
End;
- Minh họa thuật toán tô đa giác
Procedure Todg ( d:dinh; n,maubien : integer ; d: dinh; n:integer ) ;
var x, y:integer;
P: d_dinh;
Begin
for x:=xmin to xmax do
for y:= ymin to ymax do
begin
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 42
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
P.x:= x; P.y := y;
if pointInpoly (d, P, n) then
if getpixel(x,y)maubien then putpixel(x,y,color);
end;
End;
Nhận xét: Thuật toán tô đơn giản có ưu điểm là tô rất mịn và có thể sử dụng được cho đa
giác lồi hay đa giác lõm, hay đa giác tự cắt, đường tròn, ellipse. Tuy nhiên, giải thuật
này sẽ trở nên chậm khi ta phải gọi hàm PointInpoly nhiều lần. Để khắc phục nhược điểm
này người ta đưa ra thuật toán tô màu theo dòng quét.
3.3 Tô màu theo dòng quét
Ý tưởng: Sử dụng giao điểm giữa các biên đa giác và đường quét để nhận ra pixel có
trong đa giác?
Các bước thuật toán:
- Tìm ymin, ymax lần lượt là giá trị nhỏ nhất, lớn nhất của tập các tung độ của các
đỉnh của đa giác đã cho.
- Ứng với mỗi dòng quét y = k với k thay đổi từ ymin đến ymax, lặp :
- Tìm tất cả các hoành độ giao điểm của dòng quét y = k với các cạnh của đa giác.
- Sắp xếp các hoành độ giao điểm theo thứ tự tăng dần : x0 ,x1 ,..., xn ,...
- Vẽ các đoạn thẳng trên đường thẳng y = k lần lượt được giới hạn bởi các cặp cách
quãng nhau: (x0, x1), ( x1, x2 ), ....
Thuật toán
ScanConvert( Polygon P, Color C)
Begin
For y:=0 To ScreenYMax Do
Begin
I <= Các giao điểm của cạnh đa giác P với đường Y = y;
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 43
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
Sắp xếp I: X tăng dần và
Vẽ đoạn thẳng cách quãng theo màu C;
End;
End;
3.4 Tô màu theo biên
Ý tưởng
• Thuật toán nhằm tô màu vùng kín, giới hạn bởi màu Bcolor, mà sử dụng để tô là
Fcolor với điểm (x,y) nằm trong vùng tô màu.
• Thuật sử dụng phép gọi đệ quy, ban đầu (x,y) được kiểm tra màu, nếu màu của nó
là Fcolor hay Bcolor thì tiến trình kết thúc. Trong trường hợp ngược lại, điểm
(x,y) được tô với màu Fcolor và quá trình gọi đệ quy với các điểm láng giềng của
(x,y). Các điểm láng giềng được sử dụng là 4 láng giềng.
X
X (x,y) X
X
 4 láng giềng của (x,y): (x+1,y), (x-1,y), (x,y+1),(x,y-1)
Chương trình minh họa
BoundaryLine(int x, int y, int Bcolor, int Fcolor)
Begin
if(getPixel(x, y) Bcolor || getPixel(x, y) Fcolor)
Begin
putPixel(x, y,Fcolor) = Fcolor;
Boundary(x+1,y,Bcolor,Fcolor);
Boundary(x-1,y,Bcolor,Fcolor);
Boundary(x,y+1,Bcolor,Fcolor);
Boundary(x,y-1,Bcolor,Fcolor);
End
End
Chương trình khử đệ quy
BoundaryLine(int x, int y, int Bcolor, int Fcolor)
Begin
int color, count=0;
Point mPT[MaxPT];
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 44
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
mPT[count].x=x; mPT[count].y=y;
while(count>0)
Begin
count--;
color = getPixel(mPT[count].x, mPT[count].y);
if(color != Bcolor || color != Fcolor)
Begin
putPixel(x,y,Fcolor);
mPT[count].x=x+1; mPT[count++].y=y;
mPT[count].x=x-1; mPT[count++].y=y;
mPT[count].x=x; mPT[count++].y=y+1;
mPT[count].x=x; mPT[count++].y=y-1;
End
End
End
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 45
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
Bài tập chương 3
1. Viết chương trình vẽ một đa giác n đỉnh, xét xem một điểm P nào đó có thuộc đa
giác không ?
2. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật tô đơn giản
(Tìm xmin, ymin, xmax, ymax).
3. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô đơn giản.
4. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật tô biên. Lưu ý
cho các trường hợp của đa giác : hình chữ nhật, đa giác lồi, đa giác lõm.
5. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô biên.
6. Viết chương trình vẽ một đa giác n đỉnh. Tô đa giác bằng giải thuật dòng quét.
7. Viết chương trình vẽ một đường tròn. Tô đường tròn bằng giải thuật tô màu theo
dòng quét.
8. Viết chương trình vẽ hai đường tròn C1 và C2 cắt nhau. Tô phần giao của hai
đường tròn đó. Tô phần bù của C2. Tô phần bù của C1. Lưu ý rằng 3 màu tô này
phải khác nhau.
Khoa Công nghệ Thông tin – Đại học Đà Lạt Trang 46
Bài Giảng Tóm Tắt: Đồ Họa Máy Tính
Chương 4
PHÉP BIẾN ĐỔI HAI CHIỀU
Nội dung chính
 Cać phép biến đổi ma trận.
 Cać phép biến đổi Affine 2D cơ sơ.̉
 Cać phép biến đổi 3D gộp.
4.1 Các phép toán cơ sở với ma ma trận.
Nhắc lại cać phép toán trên ma trận:
Cộng, trừ ma trận: Chỉ thực hiện cho hai ma trận c
 

Các chủ đề có liên quan khác

Top