1.1 Khái niệm Đồ họa máy tính • Đồ họa máy tính là tất cả những gì liên quan đến việc sử dụng máy tính để phát sinh ra hình ảnh.. 1.1 Khái niệm Đồ họa máy tính • Đồ họa máy tính tương tá
Trang 1BÀI GIẢNG
ĐỒ HỌA MÁY TÍNH
GV: Vũ Đức Huy SĐT: 0912316373
Bộ môn: HTTT-ĐHCNHN EMail: huyhaui@gmail.com
Trang 3Tài liệu tham khảo
• [1] James D.Foley, Andrie van Dam, Steven K.Feiner, Jonhn F Hughes, Computer Graphics Principles and Practice, Addison Wesley, 1994.
• [2] Hoàng Kiếm, Dương Anh Đức, Lê Đình Duy, Vũ Hải Quân Giáo trình cơ sở Đồ hoạ Máy tính, NXB Giáo dục, 2000.
• [3] Lê Tấn Hùng, Huỳnh Quyết Thắng Kỹ thuật đồ hoạ máy tính, NXB khoa học và kỹ thuật, 2002.
• [4] Học viện công nghệ bưu chính viễn thông Kỹ thuật đồ họa (lưu hành nội bộ)
• [5] Lương Chi Mai Nhập môn Đồ họa máy tính, NXB Khoa học và kỹ thuật.
• [6] Steven Harrington, Computer Graphics A Programming Approach, McGraw Hill International Edition, 1987.
• [7] Gerald Farin, Curves and Surfaces for Computer Aided Geometric Design A Practical Guide, Academic Press Inc, 1990.
Trang 5Vấn đề của môn học
• Đây là một môn Tin học!
Trang 6CHƯƠNG 1 TỔNG QUAN ĐỒ HỌA MÁY TÍNH
Trang 71.1 Khái niệm Đồ họa máy tính
• Đồ họa máy tính là tất cả những gì liên quan đến việc sử dụng máy tính để phát sinh ra hình ảnh Gồm : tạo, lưu trữ, thao tác trên các mô hình (các mô tả hình học của đối tượng) và các ảnh
Trang 81.1 Khái niệm Đồ họa máy tính
• Đồ họa máy tính gồm:
Trang 91.1 Khái niệm Đồ họa máy tính
• Đồ họa máy là một trong những cách tự nhiên nhất cho việc truyền đạt thông tin với máy tính.
• Khó có thể xử lý một lượng dữ liệu khổng lồ phát sinh từ các siêu máy tính mà dữ liệu không được tóm lược
và làm nổi bật các xu hướng và hiện tượng qua nhiều loại biểu diễn đồ họa khác nhau
Trang 101.1 Khái niệm Đồ họa máy tính
• Đồ họa máy tính tương tác mang lại nhiều thuận lợi cho người dùng trong việc phát sinh hình ảnh từ khi có phát minh của máy ảnh và truyền hình
• Với máy tính, ta có thể tạo các hình ảnh của các đối tượng thực tế, trừu tượng, nhân tạo.
Trang 111.1 Khái niệm Đồ họa máy tính
• Đồ họa máy tính không bị giới hạn trong các ảnh tĩnh mà hướng tới các ảnh động
Trang 121.2 Ứng dụng của ĐHMT
• Hỗ trợ thiết kế (CAD/CAM)
• Các đối tượng được hiển thị dưới dạng các phác thảo của phần khung, từ đó có thể thấy được toàn bộ hình dạng và các thành phần bên trong của các đối tượng
• Người thiết kế sẽ dễ dàng nhận thấy ngay các thay đổi của đối tượng khi tiến hành hiệu chỉnh các chi tiết hay thay đổi góc nhìn, …
• Các mô hình chiếu sáng, tô màu và tạo bóng bề mặt sẽ được kết hợp tạo ra sản phẩm
Trang 131.2 Ứng dụng của ĐHMT
• Hỗ trợ thiết kế (CAD/CAM)
Trang 141.2 Ứng dụng của ĐHMT
• Hỗ trợ thiết kế (CAD/CAM)
Trang 151.2 Ứng dụng của ĐHMT
• Hỗ trợ thiết kế (CAD/CAM)
Trang 161.2 Ứng dụng của ĐHMT
• Hỗ trợ thiết kế (CAD/CAM)
Trang 171.2 Ứng dụng của ĐHMT
• Biểu diễn thông tin
Trang 181.2 Ứng dụng của ĐHMT
• Biểu diễn thông tin
Trang 191.2 Ứng dụng của ĐHMT
• Giải trí, nghệ thuật
trong việc thiết kế các hình ảnh sống động, và rất thực bằng cách cung cấp các công cụ như khung vẽ, giá vẽ, bảng pha màu, các hiệu ứng ba chiều, …
Jura (Jurassic Park), Titanic, Thế giới nước (Water World), …
Trang 201.2 Ứng dụng của ĐHMT
• Giải trí, nghệ thuật
Trang 211.2 Ứng dụng của ĐHMT
• Giải trí, nghệ thuật
Trang 221.2 Ứng dụng của ĐHMT
• Giáo dục đào tạo
trong việc hỗ trợ giảng dạy
Trang 231.2 Ứng dụng của ĐHMT
• Giáo dục đào tạo
Trang 241.2 Ứng dụng của ĐHMT
• Giáo dục đào tạo
Trang 251.2 Ứng dụng của ĐHMT
• Giáo dục đào tạo
Trang 261.2 Ứng dụng của ĐHMT
• Giao tiếp giữa người dùng và máy tính
Trang 271.2 Ứng dụng của ĐHMT
• Giao tiếp giữa người dùng và máy tính
Trang 281.2 Ứng dụng của ĐHMT
• Tự động hóa văn phòng và chế bản điện tử
Trang 291.2 Ứng dụng của ĐHMT
• Bản đồ
Trang 301.2 Ứng dụng của ĐHMT
• Điều khiển các quá trình sản xuất
Trang 311.2 Ứng dụng của ĐHMT
• Y tế
Trang 321.3 Tổng quan một hệ đồ họa
Trang 331.3.1 Phần cứng đồ họa
• Các thành phần
trình ứngdụng
Trang 341.3.1 Phần cứng đồ họa
• Các thành phần
số ở frame buffer thành các điểm sáng trên màn hình
Trang 351.3.1 Phần cứng đồ họa
• Các thành phần
Trang 371.3.1 Phần cứng đồ họa
• Màn hình
hết màn hình đều dựa trên thiết kế của ống tia âm cực (CRT – cathode ray tube)
Trang 381.3.1 Phần cứng đồ họa
• Màn hình
Trang 391.3.1 Phần cứng đồ họa
• Màn hình
• Là ống tạo ra chùm tia điện tử ở một đầu rồi tăng tốc các điện tử đó để chúng bị phóng về phía trước,
• Gắn một màn hình thủy tinh mà bên trong được phủ một lớp phốt pho
• Chùm tia điện tử đập vào thì lóe sáng lên.
• Catot: Khi được nung nóng lên thì phát ra các điện tử
Trang 401.3.1 Phần cứng đồ họa
• Màn hình
• Là một cái chén bằng kim loại
• Nối với một điện áp âm thay đổi để làm thay đổi lực đẩy của nó đối với các điện tử
• Khi lực đẩy này cân bằng với lực hút của anot thì dòng điện tử bị ngừng, không gây ra chấm sáng trên màn hình, còn khi cường độ yếu thì gây ra chấm sáng yếu.
điện tử về phía màn hình
Trang 41• Một cặp lái tia theo phương x để lái chùm tia điện tử theo chiều ngang màn hình
• Cặp kia lái theo phương y để lái chùm tia điện tử theo chiều thẳng đứng.
Trang 421.3.1 Phần cứng đồ họa
• Màn hình
thống hội tụ (focusing) và dẫn hướng (deflection) sẽ hướng tới các vị trí xác định trên màn hình được phủ một lớp phosphor
Ánh sáng phát ra bởi các hạt phosphor mờ dần rất nhanh nên cần phải có một cách nào đó để duy trì ảnh trên màn hình
điện tử trở lại vị trí cũ Kiểu hiển thị này gọi là refresh CRT
Trang 431.3.1 Phần cứng đồ họa
• Màn hình
màn hình khỏi nhòe Loại này thường rất tốt cho hoạt hình, rất cần thay đổi hình ảnh liên tục
tạp cao
Trang 441.3.1 Phần cứng đồ họa
• Màn hình
được xây dựng với độ bền dao động từ 10 đến 60 micro giây
(resolution)
thường dao động từ 12 đến 27 inch hoặc lớn hơn
Trang 451.3.1 Phần cứng đồ họa
• Màn hình
thẳng có độ dài đơn vị theo cả hai hướng trên màn hình
chữ nhật, hình tròn sẽ có dạng hình ellipse Tỉ số phương xuất phát từ khoảng cách giữa các điểm dọc không bằng khoảng cách giữa các điểm ngang Một tỉ số phương có giá trị ¾ có nghĩa là vẽ 3 điểm theo chiều dọc sẽ có cùng độ dài với việc vẽ 4 điểm theo chiều ngang
Trang 461.3.1 Phần cứng đồ họa
• Màn hình
Trang 471.3.1 Phần cứng đồ họa
• Màn hình
Trang 481.3.1 Phần cứng đồ họa
• Màn hình
Trang 491.3.1 Phần cứng đồ họa
• Màn hình
Trang 511.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
CRT dựa trên công nghệ truyền hình
từ trên xuống dưới
đây chính là cơ sở của việc tạo ra hình ảnh trên màn hình
Trang 521.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
gọi là vùng đệm làm tươi (refresh buffer) hay là vùng đệm khung (frame buffer) Vùng
bộ nhớ này lưu trữ tập các giá trị cường độ sáng của toàn bộ các điểm trên màn hình
và luôn luôn tồn tại một song ánh giữa mỗi điểm trên màn hình và mỗi phần tử trong vùng này
Trang 531.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
Trang 541.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
được đặt vào vùng đệm khung
khác vùng đệm khung thường được gọi là pixmap
Trang 551.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
(các giá trị 0, 1 sẽ tượng trưng cho việc tắt (tối), bật (sáng) pixel trên màn hình)
bằng b bit, thì ta có thể có 2b giá trị màu phân biệt cho pixel đó
Trang 561.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
Trang 571.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
(LookUp Table - LUT) Mỗi phần tử của LUT định nghĩa một bộ ba giá trị R (Red), G (Green), B (Blue) mô tả một màu nào đó Khi cần sử dụng một màu, ta chỉ cần chỉ định
số thứ tự (index) tương ứng của màu đó trong LUT Bảng LUT có thể được thay đổi bởi các ứng dụng và người lập trình có thể can thiệp điều khiển Với cách làm này chúng ta
có thể tiết kiệm không gian lưu trữ cho mỗi phần tử trong vùng đệm khung
Trang 581.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
vùng đệm khung dùng b bits để lưu thông tin của một pixel, thì bảng LUT có 2b phần
tử Nếu b=8, LUT sẽ có 28=256 phần tử, đó chính là số màu có thể được hiển thị cùng một lúc trên màn hình
Trang 591.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
• Một chu kì tương ứng với một frame.
• Tốc độ làm tươi 60 frame/giây đơn giản là 60Hz
• Khi đạt đến cuối mỗi dòng quét, tia điện tử quay trở lại bên trái của màn hình để bắt đầu dòng quét
kế tiếp Việc quay trở lại phía trái màn hình sau khi làm tươi mỗi dòng quét được gọi là tia hồi ngang (horizontal retrace) Và tới cuối mỗi frame, tia điện tử (tia hồi dọc – vertical retrace) quay trở lại góc trên bên trái của màn hình để chuẩn bị bắt đầu frame kế tiếp.
Trang 601.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
làm tươi đan xen nhau (interlaced refesh) Ở giai đoạn đầu tiên, tia quét sẽ quét một số dòng từ trên xuống dưới, sau tia hồi dọc, các dòng còn lại sẽ được quét Việc đan xen các dòng quét này cho phép chúng ta thấy được toàn màn hình hiển thị chỉ trong một nửa thời gian so với dùng để quét tất cả các dòng một lần từ trên xuống dưới Kĩ thuật này thường được dùng cho loại màn hình có tốc độ làm tươi thấp
Trang 611.3.1 Phần cứng đồ họa
• Màn hình dạng điểm
Trang 62• Màu sắc bão hoà và tự nhiên
• Công nghệ không quá đắt và hoàn thiện
• Góc nhìn rộng, tương phản và độ sáng cao
• Lớn và nặng
• Tiêu tốn nguồn điện cao
• Có hại cho sức khoẻ vì trường điện từ và từ tính
• Màn hình nhấp nháy (50-80 Hz)
• Hình hay bị méo tại 4 góc
Trang 631.3.1 Phần cứng đồ họa
• Màn hình tinh thể lỏng ( sv tự tìm hiểu thêm )
có từ trường thì ánh sáng truyền đổi chiều
Trang 641.3.1 Phần cứng đồ họa
• Màn hình tinh thể lỏng
Trang 65• Màn hình phẳng tuyệt đối nên không méo tại các góc
• Màu sắc đều, ảnh sinh động
• Không bị hiệu ứng điện từ trường
Trang 661.3.1 Phần cứng đồ họa
• Màn hình Plasma ( sv tự tìm hiểu )
Trang 671.3.2 Phần mềm đồ họa
• Các loại phần mềm đồ họa
ngôn ngữ lập trình cấp cao như C, Pascal, Các hàm cơ sở của nó bao gồm việc tạo các đối tượng cơ sở của hình ảnh như đoạn thẳng, đa giác, đường tròn,… thay đổi màu sắc, chọn khung nhìn, áp dụng các phép biến đổi
Trang 681.3.2 Phần mềm đồ họa
• Các loại phần mềm đồ họa
cho phép người dùng tạo các đối tượng, hình ảnh, … mà không cần quan tâm tới việc chúng được tạo ra như thế nào Ví dụ như là Photoshop, AutoCAD, …
Trang 691.3.2 Phần mềm đồ họa
• Chuẩn phần mềm
công cụ được thiết kế với các hàm đồ họa chuẩn, phần mềm có thể được di chuyển một cách dễ dàng từ hệ phần cứng này sang hệ phần cứng khác và được dùng trong nhiều cài đặt và ứng dụng khác nhau
System – Hệ đồ họa cơ sở) Hệ thống này ban đầu được thiết kế cho tập các công cụ
đồ họa hai chiều, sau đó được phát triển và mở rộng cho đồ họa ba chiều
Trang 701.3.2 Phần mềm đồ họa
• Chuẩn phần mềm
trình nào Để cài đặt một chuẩn đồ họa cho ngôn ngữ cụ thể nào, các cú pháp tương ứng sẽ được xác định và cụ thể hóa
cung cấp một cách thức chuẩn cho việc giao tiếp đồ họa với các thiết bị xuất Nó cũng không xác định các cách thức cho các mô hình thời gian thực cũng như các cách thức lưu trữ và chuyển đổi hình ảnh
Trang 711.3.3 Hệ tọa độ
• Hệ tọa độ thực
có tọa độ (0, 0)
(dimension) quy ước như foot, cm, mm, km, inch, nào và có thể lớn nhỏ tùy ý
Trang 721.3.3 Hệ tọa độ
• Hệ tọa độ thực
Trang 75Xin chân thành cảm ơn!
Trang 76BÀI GIẢNG
ĐỒ HỌA MÁY TÍNH
GV: Vũ Đức Huy SĐT: 0912316373
Bộ môn: HTTT-ĐHCNHN EMail: huyhaui@gmail.com
Trang 78Tài liệu tham khảo
• [1] James D.Foley, Andrie van Dam, Steven K.Feiner, Jonhn F Hughes, Computer Graphics Principles and Practice, Addison Wesley, 1994.
• [2] Hoàng Kiếm, Dương Anh Đức, Lê Đình Duy, Vũ Hải Quân Giáo trình cơ sở Đồ hoạ Máy tính, NXB Giáo dục, 2000.
• [3] Lê Tấn Hùng, Huỳnh Quyết Thắng Kỹ thuật đồ hoạ máy tính, NXB khoa học và kỹ thuật, 2002.
• [4] Học viện công nghệ bưu chính viễn thông Kỹ thuật đồ họa (lưu hành nội bộ)
• [5] Lương Chi Mai Nhập môn Đồ họa máy tính, NXB Khoa học và kỹ thuật.
• [6] Steven Harrington, Computer Graphics A Programming Approach, McGraw Hill International Edition, 1987.
• [7] Gerald Farin, Curves and Surfaces for Computer Aided Geometric Design A Practical Guide, Academic Press Inc, 1990.
Trang 79CHƯƠNG 2 CÁC THUẬT TOÁN CƠ SỞ
Trang 802.1 CÁC THUẬT TOÁN VẼ ĐƯỜNG THẲNG
Trang 822.1.1 Một số khái niệm
• Đoạn thẳng
(y-y1)/( x-x1) = ( y2-y1)/( x2-x1) (y-y1)(x2-x1)=(x-x1)(y2-y1) (x2-x1)y=(y2-y1)x + y1(x2-x1) - x1(y2-y1)
y = ((y2-y1)/(x2-x1))x + y1 - ((y2-y1)/(x2-x1))x1
y = mx + b
m = (y2-y1)/(x2-x1) Độ dốc hay hệ số góc của đường
b = y1- mx1 Đoạn chắn trên trục y
Δy = mΔx (tức là khi x thay đổi thì y thay đổi theo)
Trang 84A = (y2-y1)
B = -(x2-x1 )
C = x2y1 - x1y2
Trang 862.1.2 Giải thuật làm tròn
Trang 902.1.2 Giải thuật làm tròn
• Trường hợp d gần Oy: x = (1/m)y – b/m
Trang 922.1.3 Giải thuật DDA
• Cho phương trình đường thẳng d: y = mx+b
m = (y2-y1)/(x2-x1)
b = y1- mx1
Trang 932.1.3 Giải thuật DDA
• Giả sử vẽ được (xi,yi)
• Tiếp theo, chọn yi+1 là yi hay yi+1 dựa vào
phương trình của đường thẳng d
Trang 942.1.3 Giải thuật DDA
• Thay xi+1 vào phương trình đường thẳng d:
yi+1 = m(xi+1)+byi+1 = mxi+ b + m
yi+1 = yi + m
Trang 952.1.3 Giải thuật DDA
• Lưu đồ thuật toán
Trang 962.1.3 Giải thuật DDA
• Thủ tục
Trang 972.1.3 Giải thuật DDA
• Nhận xét:
Trang 992.1.4 Giải thuật Bresenham
• Cho phương trình đường thẳng d: y = mx+b
dx = x2-x1
dy = y2-y1
m = dy/dx
b = y1- mx1
Trang 1012.1.4 Giải thuật Bresenham
• Điểm được chọn tiếp theo không thể
là R(xi+1,y).
• Chỉ có thể chọn S(xi+1,yi) hoặc
P(xi+1,yi+1)
R
Trang 1032.1.4 Giải thuật Bresenham
• Tư tưởng:
R
Trang 1042.1.4 Giải thuật Bresenham
• Tính d1:
d1 = y(xi+1)-yid1 = (m(xi+1)+b)-yi
d1 = m(xi+1)+b-yi
R
Trang 1072.1.4 Giải thuật Bresenham
Pi = dx((m(xi+1)+b-yi)-(yi+1-m(xi+1)-b))
Pi = dx(2(m(xi+1)+b)-2yi+1) (*)
Thay m = dy/dx vào phương trình (*)
Pi =2dyxi – 2dxyi + 2dy + (2b-1)dx
Pi =2dyxi – 2dxyi + c với c = 2dy + (2b-1)dx
Trang 1082.1.4 Giải thuật Bresenham
• Vấn đề: Sau khi chọn điểm P hoặc S Phải tính được Pi+1.
• Tính Pi+1:
Pi+1 = 2dy(xi+1) – 2dxyi+1 + c
• Xét mối liên hệ giữa Pi+1 và Pi
Pi+1-Pi = (2dy(xi+1) – 2dxyi+1 + c)- (2dyxi – 2dxyi + c)Pi+1-Pi = 2dyxi+2dy–2dxyi+1+c -2dyxi + 2dxyi – c
Pi+1-Pi = 2dy–2dx(yi+1-yi)
Trang 1092.1.4 Giải thuật Bresenham
• Nếu d1-d2<0 thì yi+1 = yi (chọn S)
Pi+1-Pi = 2dy–2dx(yi-yi)Pi+1-Pi = 2dy
Pi+1 = Pi + 2dy
• Nếu d1-d2>0 thì yi+1 = yi+1(chọn P)
Pi+1-Pi = 2dy–2dx(yi+1-yi)Pi+1-Pi = 2(dy – dx)
Pi+1 = Pi + 2(dy – dx)
Trang 1102.1.4 Giải thuật Bresenham
• Tính P1: Thay điểm (x1,y1) vào Pi
P1 =2dy - dx
Trang 1112.1.4 Giải thuật Bresenham
• Sơ đồ khối
Trang 1122.1.4 Giải thuật Bresenham
• Thủ tục
Trang 1132.1.4 Giải thuật Bresenham
• Nhận xét
Trang 1142.1.5 Giải thuật MidPoint
• Cho hai điểm (x1,y1) và (x2,y2)
• Phương trình đường thẳng dạng tổng quát:
Ax + By + C =0
Với dy = y2-y1, dx = x2-x1
A = dy B= -dx C= x2y1-x1y2
• Đặt F(x,y) = Ax + By + C
Trang 1152.1.5 Giải thuật MidPoint
• Tư tưởng: Thuật toán Midpoint đưa ra cách chọn điểm yp+1 là yp hay yp+1 dựa vào so sánh điểm thực Q(xp+1,y) với trung điểm M(xp+1,yp+1/2) của ENE.
Trang 1162.1.5 Giải thuật MidPoint
• Cơ sở toán học:
<0 nếu (x,y) nằm phía trên đường thẳng
đường thẳng
Trang 1172.1.5 Giải thuật MidPoint
• Cách thực hiện: Đặt Pp = F(M) = F(xp+1,yp+1/2)
Pp gọi là tham số quyết định Dấu của nó sẽ quyết định lựa chọn điểm tiếp theo.
Trang 1182.1.5 Giải thuật MidPoint
• Tính Pp:
Pp = A(xp+1)+B(yp+1/2)+CĐặt Pold = Pp
Pold = A(xp+1)+B(yp+1/2)+C
• Nếu chọn E thì trung điểm mới:Mnew(xp+2,yp+1/2)
PnewE = A(xp+2)+B(yp+1/2)+CPnewE = A(xp+1)+B(yp+1/2)+C + A
PnewE = Pold + dy (vì A= dy)
Trang 1192.1.5 Giải thuật MidPoint
• Nếu chọn NE thì trung điểm mới:Mnew(xp+2,yp+3/2)
• PnewNE = Pold + dy – dx (vì A= dy, B = -dx)
Trang 1202.1.5 Giải thuật MidPoint
• Tính P1: M(x1+1,y1+1/2)
P1 = A(x1+1)+B(y1+1/2)+CThay:
A = dy; B = -dx, C= x2y1-x1y2
dy = y2-y1; dx = x2-x1 vào P1
P1 = dy(x1+1)-dx(y1+1/2)+ x2y1-x1y2P1 = dyx1+dy-dxy1-dx1/2+ x2y1-x1y2P1 = y2x1-y1x1+dy-x2y1+x1y1-dx1/2+ x2y1-x1y2
P1 = dy-(1/2)dx
Do chỉ xét dấu và để tránh chia hai:
P1 = 2dy-dx
Trang 1212.1.5 Giải thuật MidPoint
• Sơ đồ khối
Trang 1222.1.5 Giải thuật MidPoint
• Thủ tục
Trang 1232.1.5 Giải thuật MidPoint
• Nhận xét
Trang 1242.2 THUẬT TOÁN VẼ ĐƯỜNG TRÒN
Trang 1252.2.1 Một số vấn đề
• Sự hình thành
• Tính đối xứng