giáo trình đồ họa máy tính

103 177 0
giáo trình đồ họa máy tính

Đ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

LỜI NĨI ĐẦU Đồ họa máy tính lĩnh vực lí thú phát triển nhanh tin học Ngay từ xuất hiện, đồ họa máy tính có sức lơi mãnh liệt, hút nhiều người sử dụng nhiều lĩnh vực khác : khoa học, nghệ thuật, kinh doanh, thương mại, cơng nghiệp, quản lí, giáo dục, giải trí, … Số lượng chương trình đồ họa ứng dụng thật khổng lồ phát triển liên tục Cuốn sách biên soạn dựa đề cương mơn Đồ họa máy tính thuộc chương trình đào tạo tin học bậc cử nhân cao đẳng Bộ Giáo dục Đào tạo, tập trung vào vấn đề đồ họa hai chiều ba chiều nhằm cung cấp tảng kiến thức đầy đủ chọn lọc bao gồm khái niệm nhất, thuật toán sở đồ họa máy tính, … giúp người đọc tự tìm hiểu xây dựng chương trình ứng dụng đồ họa Cuốn sách chia làm 10 chương, gồm hai phần : đồ họa hai chiều đồ họa ba chiều Cuối chương có phần tóm tắt hệ thống tập để người đọc tự kiểm tra Các thuật tốn trình bày có lưu đồ chương trình minh họa dạng ngơn ngữ C Để vấn đề trình bày phong phú, đa dạng cập nhật, nỗ lực việc tham khảo tài liệu kinh điển, đặc biệt giảng đồ họa trường đại học tiếng giới Âu, Mỹ Brown, Stanford, MIT, Waterloo, … Tuy nhiên trình biên soạn chắn khơng thể khơng tránh khỏi sơ sót, chúng tơi xin trân trọng tiếp thu tất ý kiến đóng góp bạn đọc bạn đồng nghiệp để hoàn thiện sách ngày tốt Chúng xin chân thành cám ơn Ban chủ nhiệm Khoa Công nghệ Thông tin - Đại học Khoa học Tự nhiên, anh chị Ban biên tập Nhà xuất Giáo dục hỗ trợ nhiệt tình để sách sớm đến tay bạn đọc CÁC TÁC GIẢ CHƢƠNG GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH Sự phát triển khoa học, kĩ thuật, nghệ thuật, kinh doanh, công nghệ luôn phụ thuộc vào khả truyền đạt thông tin chúng ta, thông qua bit liệu lƣu trữ microchip thông qua giao tiếp tiếng nói Câu châm ngơn từ xa xƣa “một hình ảnh có giá trị vạn lời” hay “trăm nghe không thấy” cho thấy ý nghĩa lớn hình ảnh việc chuyển tải thơng tin Hình ảnh đƣợc cảm nhận nhanh dễ dàng hơn, đặc biệt trƣờng hợp bất đồng ngơn ngữ Do khơng có ngạc nhiên mà từ xuất máy tính, nhà nghiên cứu cố gắng sử dụng để phát sinh ảnh hình Trong suốt gần 50 năm phát triển máy tính, khả phát sinh hình ảnh máy tính đạt tới mức mà hầu nhƣ tất máy tính có khả đồ họa Đồ họa máy tính lĩnh vực lí thú phát triển nhanh tin học Ngay từ xuất hiện, đồ họa máy tính có sức lơi mãnh liệt, hút nhiều ngƣời nhiều lĩnh vực khác nhƣ khoa học, nghệ thuật, kinh doanh, quản lí, Tính hấp dẫn đa dạng đồ họa máy tính đƣợc minh họa trực quan thơng qua việc khảo sát ứng dụng MỘT SỐ ỨNG DỤNG CỦA ĐỒ HỌA MÁY TÍNH Ngày nay, đồ họa máy tính đƣợc sử dụng nhiều lĩnh vực khác nhƣ công nghiệp, thƣơng mại, quản lí, giáo dục, giải trí, … Số lƣợng chƣơng trình đồ họa ứng dụng thật khổng lồ phát triển liên tục, sau số ứng dụng tiêu biểu : 1.1 Hỗ trợ thiết kế Một ứng dụng lớn đồ họa máy tính hỗ trợ thiết kế (CAD – computer-aided design) Ngày CAD đƣợc sử dụng hầu hết việc thiết kế cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, nhiều sản phẩm khác Sử dụng chƣơng trình này, đối tƣợng đƣợc hiển thị dƣới dạng phác thảo phần khung (wireframe outline), mà từ thấy đƣợc tồn hình dạng thành phần bên đối tƣợng Sử dụng kĩ thuật này, ngƣời thiết kế dễ dàng nhận thấy thay đổi đối tƣợng tiến hành hiệu chỉnh chi tiết hay thay đổi góc nhìn, … Một thiết kế xong phần khung đối tƣợng, mơ hình chiếu sáng, tơ màu tạo bóng bề mặt đƣợc kết hợp để tạo kết cuối gần với giới thực 1.2 Biểu diễn thông tin Đây ứng dụng sử dụng đồ họa máy tính để phát sinh biểu đồ, đồ thị, … dùng minh họa mối quan hệ nhiều đối tƣợng với Các ứng dụng thƣờng đƣợc dùng để tóm lƣợc liệu tài chính, thống kê, kinh tế, khoa học, toán học, … giúp cho việc nghiên cứu, quản lí, … cách có hiệu Hình 1.1 - Phác thảo phần khung kết thiết kế xy lanh Hình 1.2 – Thơng tin tóm lƣợc đƣợc biểu diễn qua biểu đồ 1.3 Lĩnh vực giải trí, nghệ thuật Trong lĩnh vực nghệ thuật, chƣơng trình máy tính nhƣ Paint Shop Pro, Adobe Photoshop, 3D Studio, … hỗ trợ đắc lực cho họa sĩ, nhà tạo mẫu việc thiết kế hình ảnh sống động, thực Với chƣơng trình này, ngƣời họa sĩ đƣợc máy tính tạo cho cảm giác y nhƣ làm việc đời thực cách cung cấp công cụ nhƣ khung vẽ, giá vẽ, bảng pha màu, hiệu ứng ba chiều, … làm cho họ cảm thấy thoải mái tiện lợi Ngoài đồ họa máy tính giúp tạo chƣơng trình trò chơi, giải trí; hỗ trợ cho kĩ xảo điện ảnh, cho nhà làm phim Có nhiều phim tiếng nhờ vào kĩ xảo điện ảnh nhƣ : Công viên Khủng long kỉ Jura (Jurassic Park), Titanic, Thế giới nƣớc (Water World), … Hình 1.3 – Hình ảnh đƣợc tạo từ chƣơng trình đồ họa 1.4 Giáo dục đào tạo Hiện chƣơng trình mơ cấu trúc vật thể, tiến trình phản ứng hóa học, hoạt động gói tin mạng máy tính, … đƣợc dùng nhiều việc hỗ trợ giảng dạy Trong đào tạo, ứng dụng mô đƣợc dùng để kiểm tra trình độ ngƣời lái, huấn luyện phi cơng, điều khiển giao thơng, … Hình 1.4 – Chƣơng trình học máy tính 1.5 Giao tiếp máy tính ngƣời dùng Mọi ứng dụng phải có giao diện giao tiếp với ngƣời dùng Giao diện đồ họa thực cách mạng mang lại thuận tiện thoải mái cho ngƣời dùng ứng dụng Các ứng dụng dựa hệ điều hành MS Windows minh họa trực quan giao diện đồ họa Các chức ứng dụng đƣợc thiết kế cho ngƣời dùng làm việc thông qua biểu tƣợng mơ tả chức Ví dụ, chức lƣu tập tin đƣợc hiểu thông qua biểu tƣợng đĩa mềm, chức in ấn đƣợc hiểu thông qua biểu tƣợng máy in, … Để chọn chức năng, ngƣời dùng sử dụng chuột trỏ đến nhấn vào biểu tƣợng tƣơng ứng Điểm thuận lợi dùng biểu tƣợng kích thƣớc khơng gian mà chiếm nhiều so với dùng văn để mơ tả cho chức năng, ngồi việc nắm bắt chức qua biểu tƣợng dễ dàng nhiều ngƣời dùng gặp trở ngại mặt ngơn ngữ Các ứng dụng có giao diện đồ họa cho phép ngƣời dùng khả làm việc dễ dàng với nhiều cửa sổ với nhiều dạng tài liệu khác lúc Hình 1.5 – Giao diện chƣơng trình MS Word KHÁI NIỆM VỀ ĐỒ HỌA MÁY TÍNH Đồ họa máy tính tất liên quan đến việc sử dụng máy tính để phát sinh hình ảnh Các vấn đề liên quan tới công việc bao gồm : tạo, lƣu trữ, thao tác mơ hình (các mơ tả hình học đối tƣợng) ảnh Theo định nghĩa đồ họa máy tính bao gồm việc thiết kế phần cứng nhƣ thiết bị hiển thị, thuật toán cần thiết để phát sinh đƣờng thiết bị này, phần mềm đƣợc sử dụng cho ngƣời lập trình hệ thống ngƣời lập trình ứng dụng đồ họa, chƣơng trình ứng dụng tạo ảnh máy tính Đồ họa máy tính cung cấp phƣơng cách tự nhiên cho việc truyền đạt thông tin với máy tính Ngày nay, nhiều q trình thiết kế, cài đặt xây dựng, thơng tin mà hình ảnh mang lại hầu nhƣ thiếu đƣợc Kĩ thuật trực quan (scientific visualization) trở nên lĩnh vực quan trọng từ năm 1980, nhà nghiên cứu khoa học kĩ sƣ nhận họ khơng thể xử lí lƣợng liệu khổng lồ phát sinh từ siêu máy tính mà liệu khơng đƣợc tóm lƣợc làm bật xu hƣớng tƣợng qua nhiều loại biểu diễn đồ họa khác Đồ họa máy tính tƣơng tác phƣơng tiện mang lại thêm nhiều thuận lợi cho ngƣời dùng việc phát sinh hình ảnh kể từ có phát minh máy ảnh truyền hình Với máy tính, tạo hình ảnh khơng đối tƣợng cụ thể, thực tế, mà đối tƣợng trừu tƣợng, nhân tạo; biểu diễn liệu mà khơng có tính kế thừa mặt hình học, nhƣ kết điều tra, khảo sát Hơn nữa, với đồ họa máy tính không bị giới hạn tron g ảnh tĩnh Các ảnh động thông thƣờng mang lại nhiều hiệu so với ảnh tĩnh, đặc biệt với tƣợng biến đổi theo thời gian, thực tế (nhƣ đổi hƣớng cánh máy bay siêu âm, hay phát triển khuôn mặt ngƣời từ lúc trẻ thơ tới lúc già) trừu tƣợng (nhƣ xu hƣớng phát triển việc sử dụng lƣợng, gia tăng dân số, …) Có nhiều cách tiếp cận việc học môn đồ họa, trải rộng từ việc nghiên cứu phần cứng tới việc học để sử dụng đồ họa máy tính lĩnh vực chuyên biệt nhƣ thiết kế mạch tích hợp cao (VLSI – very large scale integrated circuit) Ở tiếp cận từ góc độ ngƣời lập trình ứng dụng, ngƣời sử dụng tất hỗ trợ phần cứng, công cụ phần mềm để xây dựng nên ứng dụng Tuy nhiên để thiết kế cài đặt chƣơng trình ứng dụng đồ họa đƣợc tốt, ngồi việc tìm hiểu khả cơng cụ lập trình, cần phải nắm vững khái niệm phần cứng; vấn đề, nguyên lí liên quan đến cài đặt phần mềm, thuật toán, ứng dụng, … TỔNG QUAN VỀ MỘT HỆ ĐỒ HỌA Một hệ đồ họa có hai thành phần phần cứng phần mềm Phần cứng bao gồm thiết bị hiển thị nhập liệu, … Phần mềm bao gồm công cụ lập trình trình ứng dụng đồ họa Chúng ta lần lƣợt khảo sát thành phần 3.1 Phần cứng 3.1.1 Thiết bị hiển thị Màn hình thiết bị hiển thị thông dụng hệ đồ họa Các thao tác hầu hết hình dựa thiết kế ống tia âm cực (CRT – cathode ray tube) Cấu tạo CRT Hình 1.6 minh họa thao tác sở ống tia âm cực Một chùm tia điện tử (tia âm cực) phát từ súng điện tử, vƣợt qua hệ thống hội tụ (focusing) dẫn hƣớng (deflection) hƣớng tới vị trí xác định hình đƣợc phủ lớp phosphor Tại vị trí tƣơng tác với tia điện tử, hạt phosphor phát chấm sáng nhỏ Vì ánh sáng phát hạt phosphor mờ dần nhanh nên cần phải có cách để trì ảnh hình Một cách lặp lặp lại nhiều lần việc vẽ lại ảnh thật nhanh cách hƣớng tia điện tử trở lại vị trí cũ Kiểu hiển thị gọi refresh CRT Hình 1.6 – Cấu tạo CRT Có nhiều loại phosphor đƣợc dùng CRT Ngồi màu sắc ra, điểm khác loại phosphor “độ bền” (persistent), khoảng thời gian phát sáng sau tia CRT khơng tác động Lớp phosphor có độ bền thấp cần tốc độ làm tƣơi cao để giữ cho hình ảnh hình khỏi nhòe Loại thƣờng tốt cho hoạt hình, cần thay đổi hình ảnh liên tục Lớp phosphor có độ bền cao thƣờng đƣợc dùng cho việc hiển thị ảnh tĩnh, độ phức tạp cao Mặc dù số loại phosphor có độ bền lớn giây, nhiên hình đồ họa thƣờng đƣợc xây dựng với độ bền dao động từ 10 đến 60 micro giây Số lƣợng tối đa điểm hiển thị CRT đƣợc gọi độ phân giải (resolution) Một định nghĩa xác độ phân giải số lƣợng điểm centimet mà đƣợc vẽ theo chiều ngang chiều dọc, thƣờng đƣợc xem nhƣ tổng số điểm theo hƣớng Kích thƣớc vật lí hình đồ họa đƣợc tính từ độ dài đƣờng chéo hình, thƣờng dao động từ 12 đến 27 inch lớn Một hình CRT đƣợc kết hợp với nhiều loại máy khác nhau, số lƣợng điểm hình đƣợc vẽ thật tùy thuộc vào khả hệ thống mà kết hợp vào Một thuộc tính khác hình tỉ số phƣơng (aspect ratio) Tỉ số phƣơng tỉ lệ điểm dọc điểm ngang cần để phát sinh đoạn thẳng có độ dài đơn vị theo hai hƣớng hình (trong số trƣờng hợp ngƣời ta thƣờng dùng tỉ số phƣơng nhƣ tỉ số điểm theo chiều ngang so với điểm theo chiều dọc) Với hình có tỉ số phƣơng khác 1, dễ dàng nhận thấy hình vng hiển thị có dạng hình chữ nhật, hình tròn có dạng hình ellipse Thực khái niệm tỉ số phƣơng xuất phát từ chất khoảng cách (nếu tính đơn vị độ dài) điểm dọc không khoảng cách điểm ngang Một tỉ số phƣơng có giá trị ¾ có nghĩa vẽ điểm theo chiều dọc có độ dài với việc vẽ điểm theo chiều ngang Màn hình dạng điểm (raster - scan display): Màn hình dạng điểm dạng thƣờng gặp số dạng hình sử dụng CRT dựa cơng nghệ truyền hình Trong hệ thống này, chùm tia điện tử đƣợc qt ngang qua hình, lần dòng quét từ xuống dƣới Sự bật tắt điểm sáng hình phụ thuộc vào cƣờng độ tia điện tử sở việc tạo hình ảnh hình Mỗi điểm hình đƣợc gọi pixel pel (viết tắt picture element) Các thơng tin hình ảnh hiển thị hình đƣợc lƣu trữ vùng nhớ gọi vùng đệm làm tƣơi (refresh buffer) vùng đệm khung (frame buffer) Vùng nhớ lƣu trữ tập giá trị cƣờng độ sáng toàn điểm hình ln ln tồn song ánh điểm hình phần tử vùng Hình 1.7 – Quá trình tạo hình ảnh tia quét Để thay đổi hình ảnh cần hiển thị, giá trị tƣơng ứng với vị trí độ sáng phải đƣợc đặt vào vùng đệm khung Hình 1.8 minh họa giá trị tƣơng ứng vùng đệm khung để hiển thị hình ảnh chữ A hình Đối với hình đen trắng, vùng đệm khung đƣợc gọi bitmap, với hình khác vùng đệm khung thƣờng đƣợc gọi pixmap Để tạo ảnh đen trắng, đơn giản cần lƣu thông tin pixel bit (các giá trị 0, tƣợng trƣng cho việc tắt (tối), bật (sáng) pixel hình) Trong trƣờng hợp ảnh nhiều màu, ngƣời ta cần nhiều bit hơn, thông tin pixel đƣợc lƣu b bit, ta có 2b giá trị màu phân biệt cho pixel Hình 1.8 – Song ánh vùng đệm khung hình Trong hình màu, ngƣời ta định nghĩa tập màu làm việc bảng tra (LookUp Table - LUT) Mỗi phần tử LUT định nghĩa ba giá trị R (Red), G (Green), B (Blue) mơ tả màu Khi cần sử dụng màu, ta cần định số thứ tự (index) tƣơng ứng màu LUT Bảng LUT đƣợc thay đổi ứng dụng ngƣời lập trình can thiệp điều khiển Với cách làm tiết kiệm không gian lƣu trữ cho phần tử vùng đệm khung Số phần tử LUT đƣợc xác định từ số lƣợng bits/pixel Nếu phần tử vùng đệm khung dùng b bits để lƣu thông tin pixel, bảng LUT có b phần tử Nếu b=8, LUT có 8=256 phần tử, số màu đƣợc hiển thị lúc hình Việc làm tƣơi hình dạng đƣợc thực tốc độ 60 đến 80 frame/giây Đôi tốc độ làm tƣơi đƣợc biểu diễn đơn vị Hertz (Hz – số chu kì/ giây), chu kì tƣơng ứng với frame Sử dụng đơn vị này, mơ tả tốc độ làm tƣơi 60 frame/giây đơn giản 60Hz Khi đạt đến cuối dòng quét, tia điện tử quay trở lại bên trái hình để bắt đầu dòng qt Việc quay trở lại phía trái hình sau làm tƣơi dòng quét đƣợc gọi tia hồi ngang (horizontal retrace) Và tới cuối frame, tia điện tử (tia hồi dọc – vertical retrace) quay trở lại góc bên trái hình để chuẩn bị bắt đầu frame Trong số hình, frame đƣợc hiển thị thành hai giai đoạn sử dụng kĩ thuật làm tƣơi đan xen (interlaced refesh) Ở giai đoạn đầu tiên, tia quét quét số dòng từ xuống dƣới, sau tia hồi dọc, dòng lại đƣợc quét Việc đan xen dòng quét cho phép thấy đƣợc tồn hình hiển thị nửa thời gian so với dùng để quét tất dòng lần từ xuống dƣới Kĩ thuật thƣờng đƣợc dùng cho loại hình có tốc độ làm tƣơi thấp Hình 1.9 – Hoạt động hình interlaced Các hệ màu Việc nghiên cứu màu sắc bao gồm nhiều lĩnh vực nhƣ : quang học, sinh lí học, tâm lí học nhân tố khác thuộc ngƣời Vì thế, có nhiều quan niệm nhƣ thành ngữ khoa học màu sắc Đối với ngƣời làm tin học, vấn đề mà họ quan tâm mối tƣơng tác qua lại cảm nhận màu sắc ngƣời với phận phần cứng hiển thị màu sắc hình máy tính, với phần mềm thiết kế Bảng dƣới trình bày mối quan hệ : Sự cảm nhận Đặc điểm phần cứng Đặc điểm phần mềm ngƣời Màu sắc Các màu hiển thị gốc Sắc độ màu (Hue) Bƣớc sóng Độ bão hòa (Saturation) (WaveLength) Sự màu Độ sáng hay độ chói Cƣờng độ sáng Sự “rung” hình Tốc độ làm tƣơi Thuật tốn khơng gian màu Hiệu chỉnh gamma (refresh) Khơng gian màu (color space) đƣợc đƣa để định màu hiển thị máy tính chúng làm đơn giản hóa thao tác tính toán cần thiết cho việc chuyển đổi màu sắc (color transformation) Khơng gian màu đƣợc thiết kế G dựa sở phát sinh màu phần cứng (hardware color Green Yellow generation) (ví dụ nhƣ không gian RGB) dựa cảm nhận màu sắc mắt (nhƣ không gian HSL) Với ứng dụng, việc chọn không gian (1,1,0) Grayscale (0,1,0) màu để sử dụng tùy thuộc vào số nhân tố sau : độ xác mà nhà thiết kế cần kiểm soát màu sắc (color control); yêu cầu tƣơng tác Cyan White màu sắc tốc độ tính tốn cho ứng dụng (0,1,1) Khơng gian RGB (RGB space) Black Không gian RGB mô tả màu sắc ba thành phần Red, Green, Blue Không gian đƣợc minh họa khối lập phƣơng với trục R, G, B Mỗi màu không gian RGB đƣợc biểu diễn nhƣ vector (1,1,1) (0,0,0) Red (1,0,0) B Blue (0,0,1) R Magenta (1,0,1) thông qua ba vector sở Red, Green, Blue Do đó, ứng với tổ hợp khác ba màu cho ta màu Hình 1.10 - Mơ hình khơng gian RGB Trong hình lập phƣơng màu gốc (Red, Green, Blue) đƣợc đặt vào góc đối diện với màu bù (Hai màu bù hai màu mà kết hợp tạo thành màu trắng hay xám (grey)) Nhƣ Red đối diện với Cyan, Green đối diện với Magenta, Blue đối diện với Yellow Giá trị xám nằm đƣờng chéo nối đỉnh 0,0,0, 1,1,1 hình lập phƣơng Thƣờng thƣờng trục R, G, B đƣợc chuẩn hóa Khi kết hợp hai màu lại với màu sinh có vector tổng vector thành phần Một số thuận lợi dùng không gian RGB :  Không gian RGB chuẩn công nghiệp cho thao tác đồ họa máy tính Các thao tác màu sắc đƣợc tính tốn khơng gian màu khác nhƣng cuối cần phải chuyển không gian RGB để hiển thị hình (do thiết kế phần cứng dựa mơ hình RGB)  Có thể chuyển đổi qua lại không gian RGB với không gian màu khác nhƣ CIE, CMY, HSL, HSV,  Các thao tác tính tốn khơng gian RGB thƣờng đơn giản Một số bất lợi :  Các giá trị RGB màu khác hình khác : Nghĩa giá trị RGB màu tim hình màu khơng sinh màu hình khác  Sự mơ tả màu giới thực không gian RGB nhiều hạn chế khơng gian RGB khơng hoàn toàn phù hợp với cảm nhận màu sắc ngƣời Hai điểm phân biệt không gian RGB, với mắt ngƣời khơng thể thể hai màu khác Chính điều mà không gian RGB ánh xạ trực tiếp đến chiều cảm nhận khác (nhƣ hue, saturation, lightness) ngồi hue (sắc độ) Khơng gian HSL Khơng gian có trọng khơng gian RGB đến thành phần cảm nhận màu sắc mắt (Hue, Saturation, Lightness) Tuy nhiên, không gian HSL thực phép biến đổi gần không gian RGB mà Không giống nhƣ không gian màu khác xây dựng cảm nhận màu sắc mắt, khơng gian HSL bị lệ L(Lightness) L=1 thuộc vào phần cứng CRT (White) Không gian HSL đƣợc biểu diễn hệ tọa độ trụ, hình minh họa hai hình nón úp vào H (Hue) toạ độ ứng với góc quay, S (Saturation) tọa độ gốc, L trục thẳng đứng Hầu hết màu đạt bão hòa S = L = 0.5 Red Magenta Green L=0.5 Cyan Hình 1.11 - Mơ hình khơng gian HSL Một số thuận lợi không gian HSL : Yellow  Không gian HSL gần với cảm nhận thuộc tính màu sắc ngƣời khơng gian RGB (tuy cách tiếp cận đơn giản hóa nhiều) Các màu đƣợc xác định dễ dàng chẳng hạn H quay quanh trục đứng nên màu bù đƣợc xác định cách dễ dàng, giá trị lightness Blue Grayscale H(Hue angle) L=0 (Black) S(Saturation)  Việc kiểm soát màu sở HSL dễ cho ngƣời làm quen với chƣơng trình đồ họa Một số bất lợi : V(Value)  Việc thêm vào vector thực đơn giản nhƣ không gian RGB (chỉ thêm vào thành phần màu) Các thao tác lƣợng giác biến đổi ảnh hƣởng đáng kể đến tốc độ chƣơng trình Green Yellow (120 ) Cyan  Cần phải qua hiệu chỉnh gamma trƣớc hiển thị (giống nhƣ không gian khác) V=1 Red (White) Blue (00) Magenta (2400) Không gian HSV Không gian HSV thực chất biến đổi khác không gian RGB Không gian HSV đƣợc mô hình hình lập phƣơng RGB quay đỉnh Black H (Hue) góc quay quanh trục Values, S (Saturation) từ đến 1, trục V (Values) tƣơng ứng với đƣờng chéo nối đỉnh White Black Grayscale H(Hue angle) V=0 (Black) S(Saturation) Hình 1.12 - Mơ hình khơng gian HSV Theo cách này, màu đạt bão hòa S=1 V=1 Trong khơng gian HSV màu đƣợc chuẩn hóa số gam (gamut) màu thiết bị hiển thị Một số thuận lợi không gian HSV :  Không gian HSV dễ dàng đáp ứng màu sắc chƣơng trình đồ họa đƣợc xây dựng dựa bắt chƣớc luật trộn màu ngƣời họa sĩ Ví dụ : Khi cần thêm màu trắng vào, phải đặt V=S=1 sau giảm S từ từ đạt đƣợc màu vừa ý; hay cần thêm màu đen vào, điều có nghĩa giảm V (cƣờng độ sáng) cố định S,  Do không cần sử dụng phép biến đổi lƣợng giác muốn chuyển sang không gian RGB nên không gian HSV có nhiều thuận lợi mặt tính tốn so với không gian HSL Một số bất lợi :  Cần có phép hiệu chỉnh gamma Bảng so sánh không gian màu RGB HSL HSV Chuẩn cơng nghiệp cho thao tác Hình thức biến đổi khác khơng gian Hình thức biến đổi khác khơng gian đồ họa máy tính Liên hệ trực tiếp với phần cứng RGB Liên hệ gần với cảm nhận màu RGB Liên hệ gần với cảm nhận màu sắc sắc ngƣời Là chuyển đổi cuối cho tất Đòi hỏi phép biến đổi phức tạp ngƣời Đã đơn giản hóa thao tác tính tốn nhu cầu hiển thị Khơng thể chuyển sang hình khác Độc lập thiết bị Độc lập thiết bị (phụ thuộc thiết bị) Khơng có tƣơng ứng 1-1 với cách Có Có cảm nhận màu ngƣời Mơ hình hình lập phƣơng Mơ hình hai hình nón úp vào Mơ hình hình nón đơn Đƣợc chuẩn hóa Đƣợc chuẩn hóa Đƣợc chuẩn hóa Độ bão hòa đạt max S =1 Độ bão hòa đạt max S =1, L =0.5 Độ bão hòa đạt max S =1, V =1 Trộn màu không rõ ràng Rõ ràng Rõ ràng 3.1.2 Các thiết bị nhập Bàn phím : Xuất hầu hết máy tính, thiết bị để nhập liệu dạng văn số Đây loại thiết bị quen thuộc với ngƣời sử dụng có hạn chế tƣơng tác khơng cao Chuột : Cùng với xuất ứng dụng đồ họa tƣơng tác cao, chuột thiết bị nhập ngày quen thuộc với ngƣời sử dụng Ngƣời ta dùng chuột để trỏ chọn (point-click) chức phù hợp với yêu cầu Bằng cách này, giao tiếp ngƣời dùng máy tính ngày thân thiện dễ dàng Ngoài có số thiết bị nhập khác họ với chuột nhƣ track ball, … 3.2 Phần mềm Phần mềm đồ họa phân thành loại : cơng cụ lập trình trình ứng dụng đồ họa phục vụ cho mục đích Các cơng cụ lập trình cung cấp tập hàm đồ họa đƣợc dùng ngơn ngữ lập trình cấp cao nhƣ C, Pascal, Ví dụ nhƣ thƣ viện đồ họa ngôn ngữ nhƣ C, Pascal hay GL (Graphics Library) Silicon Graphics Các hàm sở bao gồm việc tạo đối tƣợng sở 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 phép biến đổi, … Trong đó, ứng dụng đồ họa đƣợc thiết kế cho ngƣời dùng lập trình viên, cho phép ngƣời dùng tạo đối tƣợng, hình ảnh, … mà khơng cần quan tâm tới việc chúng đƣợc tạo nhƣ Ví dụ nhƣ Photoshop, AutoCAD, … Biểu diễn tọa độ Thông thƣờng hệ đồ họa sử dụng hệ tọa độ Descartes để mô tả đối tƣợng Nếu tọa độ đối tƣợng đƣợc mô tả hệ tọa độ khác nhƣ tọa độ cầu, …, chúng phải đƣợc chuyển tọa độ Descartes trƣớc dùng Quy trình hiển thị đối tƣợng Trƣớc tiên mô tả đối tƣợng thành phần ảnh phức tạp hệ tọa độ riêng để thuận tiện cho việc biểu diễn tọa độ chúng Các hệ tọa độ đƣợc gọi hệ tọa độ mơ hình (modeling coordinates) hay gọi hệ tọa độ cục (local coordinates) Một đối tƣợng thành phần đƣợc biểu diễn xong, đặt chúng vào vị trí tƣơng ứng ảnh sử dụng hệ tọa độ giới thực (world coordinates) Sau cùng, mô tả ảnh hệ tọa độ giới thực đƣợc chuyển đến nhiều hệ tọa độ khác thiết bị hiển thị, tùy vào muốn hiển thị thiết bị Các hệ tọa độ đƣợc gọi hệ tọa độ thiết bị (device coordinates) Các mô tả hệ tọa độ cục hệ tọa độ giới thực cho phép sử dụng thứ nguyên thích hợp cho đơn vị đo mà khơng phải bị ràng buộc thiết bị hiển thị cụ thể Hình 1.13 – Quy trình hiển thị đối tƣợng Thông thƣờng, hệ đồ họa chuyển mô tả hệ tọa độ giới thực tới hệ tọa độ thiết bị chuẩn (normalized device coordinates) có chiều đơn vị trƣớc chuyển tới hệ tọa độ thiết bị Điều làm cho hệ thống độc lập với nhiều loại thiết bị khác Các hàm đồ họa Các hàm đồ họa cung cấp khả tạo thao tác hình ảnh Các hàm đƣợc phân loại nhƣ sau :  Tập công cụ tạo đối tƣợng đồ họa sở nhƣ điểm, đoạn thẳng, đƣờng cong, vùng tơ, kí tự, …  Tập cơng cụ thay đổi thuộc tính dùng để thay đổi thuộc tính đối tƣợng đồ họa sở nhƣ màu sắc, kiểu đƣờng, kiểu chữ, mẫu tô, …  Tập công cụ thực phép biến đổi hình học dùng để thay đổi kích thƣớc vị trí, hƣớng đối tƣợng, …  Tập công cụ biến đổi hệ quan sát dùng để xác định vị trí quan sát đối tƣợng vị trí thiết bị hiển thị đƣợc dùng để hiển thị đối tƣợng  Tập công cụ nhập liệu : Các ứng dụng đồ họa sử dụng nhiều loại thiết bị nhập khác nhƣ bút vẽ, bảng, chuột, bàn phím,… để điều khiển xử lí dòng liệu nhập  Cuối tập công cụ chứa thao tác dùng cho việc quản lí điều khiển ví dụ nhƣ xóa tồn hình, thiết lập chế độ đồ họa, … Các chuẩn phần mềm Mục tiêu phần mềm đồ họa đƣợc chuẩn tính tƣơng thích Khi cơng cụ đƣợc thiết kế với hàm đồ họa chuẩn, phần mềm đƣợc di chuyển cách dễ dàng từ hệ phần cứng sang hệ phần cứng khác đƣợc dùng nhiều cài đặt ứng dụng khác Sau nỗ lực khơng nhỏ tổ chức chuẩn hóa quốc gia quốc tế, chuẩn cho việc phát triển phần mềm đồ họa đời GKS (Graphics Kernel System – Hệ đồ họa sở) Hệ thống ban đầu đƣợc thiết kế cho tập công cụ đồ họa hai chiều, sau đƣợc phát triển mở rộng cho đồ họa ba chiều Các hàm GKS thực mô tả trừu tƣợng, độc lập với ngơn ngữ lập trình Để cài đặt chuẩn đồ họa cho ngôn ngữ cụ thể nào, cú pháp tƣơng ứng đƣợc xác định cụ thể hóa Mặc dù GKS xác lập đƣợc ý tƣởng ban đầu cho hàm đồ họa sở, nhiên khơng cung cấp cách thức chuẩn cho việc giao tiếp đồ họa với thiết bị xuất Nó khơng xác định cách thức cho mơ hình thời gian thực nhƣ cách thức lƣu trữ chuyển đổi hình ảnh Các chuẩn cho cách thức đƣợc xây dựng riêng, cụ thể : Các chuẩn cho cách thức giao tiếp thiết bị đƣợc cho hệ CGI (Computer Graphics Interface System), hệ CGM (Computer Graphics Metafile) xác định chuẩn cho việc lƣu trữ chuyển đổi hình ảnh, hệ PHIGS (Programmer’s Hierarchical Interactive Graphics Standard) xác định cách thức chuẩn cho mơ hình thời gian thực khả lập trình mức độ cao mà chƣa đƣợc quan tâm tới GKS TĨM TẮT Sự đời đồ họa máy tính thực cách mạng giao tiếp ngƣời dùng máy tính Với lƣợng thơng tin trực quan, đa dạng phong phú đƣợc chuyển tải qua hình ảnh, ứng dụng đồ họa máy tính lơi nhiều ngƣời nhờ tính thân thiện, dễ dùng, kích thích khả sáng tạo tăng đáng kể hiệu suất làm việc Đồ họa máy tính ngày đƣợc ứng dụng rộng rãi nhiều lĩnh vực khoa học, kĩ thuật, nghệ thuật, kinh doanh, quản lí, … Các ứng dụng đồ họa đa dạng, phong phú phát triển liên tục không ngừng Ngày nay, hầu nhƣ khơng có chƣơng trình ứng dụng mà không sử dụng kĩ thuật đồ họa để làm tăng tính hấp dẫn Một hệ đồ họa có hai thành phần phần cứng phần mềm Thành phần phần cứng bao gồm thiết bị hiển thị (hay thiết bị xuất) thiết bị nhập Tiêu biểu thiết bị hiển thị hình mà chế hoạt động dựa cấu tạo ống tia âm cực CRT Các thiết bị nhập liệu thƣờng gặp bao gồm bàn phím, chuột Phần mềm đồ họa chia làm hai loại cơng cụ lập trình nhƣ hàm thƣ viện C, Pascal, GL, … ứng dụng phục vụ cho mục đích nhƣ AutoCAD, Photoshop, … Hƣớng tiếp cận tài liệu mức độ ngƣời lập trình, nghĩa tìm hiểu thuật tốn, ngun lí để xây dựng nên ứng dụng đồ họa học cách sử dụng phần mềm nhƣ AutoCAD, Photoshop, … BÀI TẬP Cấu tạo nguyên lí hoạt động hình dạng điểm Các khái niệm nhƣ vùng đệm khung, độ phân giải, tỉ số phƣơng, … hình dạng Ý nghĩa hoạt động bảng tra LUT Ba hình có độ phân giải lần lƣợt 640x480, 1024x768, 1280x1024 Hãy cho biết kích thƣớc vùng đệm khung (tính byte) pixel đƣợc mô tả bit, 12 bit, 24 bit Hai hình có độ phân giải 640x480 1024x768 Cho biết số pixel đƣợc truy cập giây hình tốc độ làm tƣơi CRT 60Hz Một hình có kích thƣớc theo chiều ngang 12 inche, chiều dọc 9.6 inch Hãy cho biết đƣờng kính điểm hình độ phân giải 1280x1024 tỉ số phƣơng Hãy cho biết thông tin vùng đệm khung hình vẽ kí tự B, G, H, … Các hệ màu Mối liên hệ chúng Quy trình hiển thị đối tƣợng Ý nghĩa hệ tọa độ Tập hàm đồ họa cơng cụ lập trình Liên hệ tới thƣ viện đồ họa ngôn ngữ học nhƣ C, Pascal, … 10 Tại cần phải chuẩn hóa phần mềm ? Tìm hiểu chuẩn GKS, PHIGS 10 CHƢƠNG CÁC ĐỐI TƢỢNG ĐỒ HỌA CƠ SỞ Bất kì ảnh mơ tả giới thực đƣợc cấu trúc từ tập đối tƣợng đơn giản Ví dụ ảnh thể trí phòng đƣợc cấu trúc từ đối tƣợng nhƣ cảnh, tủ kính, bàn ghế, tƣờng, ánh sáng đèn, … Với ảnh đồ họa phát sinh máy tính, hình dạng màu sắc đối tƣợng đƣợc mô tả riêng biệt hai cách : dãy pixel tƣơng ứng tập đối tƣợng hình học sở nhƣ đoạn thẳng hay vùng tơ đa giác, … Sau đó, ảnh đƣợc hiển thị cách nạp pixel vào vùng đệm khung Hình 2.1 – Ảnh cánh tay robot đƣợc cấu tạo từ đối tƣợng đồ họa sở Với ảnh đƣợc mô tả đối tƣợng hình học sở, cần phải có q trình chuyển đối tƣợng dạng ma trận pixel trƣớc Q trình đƣợc gọi q trình chuyển đổi dòng qt (scan-converting) Bất kì cơng cụ lập trình đồ họa phải cung cấp hàm để mô tả ảnh dƣới dạng đối tƣợng hình học sở hay gọi đối tƣợng đồ họa sở (output primitives) hàm cho phép kết hợp tập đối tƣợng sở để tạo thành đối tƣợng có cấu trúc phức tạp Mỗi đối tƣợng đồ họa sở đƣợc mô tả thông qua liệu tọa độ thuộc tính nó, thông tin cho biết kiểu cách mà đối tƣợng đƣợc hiển thị Đối tƣợng đồ họa sở đơn giản điểm đoạn thẳng, ngồi có đƣờng tròn, đƣờng conics, mặt bậc hai, mặt đƣờng splines, vùng tô đa giác, chuỗi kí tự, … đƣợc xem đối tƣợng đồ họa sở để giúp xây dựng ảnh phức tạp Chƣơng khảo sát thuật toán hiển thị đối tƣợng đồ họa sở cho thiết bị hiển thị dạng điểm Xét mặt chất, thuật tốn thực q trình chuyển đổi đối tƣợng đồ họa sở đƣợc mô tả hệ tọa độ thực dãy pixel có tọa độ nguyên thiết bị hiển thị Có hai u cầu đặt cho thuật tốn :  Đối tƣợng đƣợc mơ tả hệ tọa độ thực đối tƣợng liên tục, đối tƣợng hệ tọa độ thiết bị đối tƣợng rời rạc, chất trình chuyển đổi rời rạc hóa nguyên hóa đối tƣợng cho xác định điểm nguyên xấp xỉ đối tƣợng cách tốt nhất, thực Nghĩa đối tƣợng hiển thị lƣới nguyên thiết bị hiển thị phải có hình dạng tƣơng tự nhƣ đối tƣợng lƣới tọa độ thực “có vẻ” liên tục, liền nét Sự liên tục lƣới nguyên thiết bị hiển thị có đƣợc mắt ngƣời khơng thể phân biệt đƣợc hai điểm gần  Do đối tƣợng đồ họa sở thành phần cấu trúc đối tƣợng phức tạp nên thuật toán hiển thị chúng cần phải đƣợc tối ƣu hóa mặt tốc độ, điểm mấu chốt cho việc đời thuật tốn khác Hình 2.2 – Quá trình chuyển đổi đoạn thẳng dãy pixel tƣơng ứng CÁC ĐỐI TƢỢNG ĐỒ HỌA CƠ SỞ 4.1 Hệ tọa độ giới thực hệ tọa độ thiết bị 4.1.1 Hệ tọa độ giới thực Hệ tọa độ giới thực (hay hệ tọa độ thực) hệ tọa độ đƣợc dùng mô tả đối tƣợng giới thực Một hệ tọa độ thực thƣờng đƣợc dùng hệ tọa độ Descartes Với hệ tọa độ này, điểm mặt phẳng đƣợc mơ tả cặp tọa độ (x, y) x, y  R Gốc tọa độ điểm O có tọa độ (0, 0) Các trục tọa độ có chiều dƣơng đƣợc quy ƣớc nhƣ hình 2.3; Ox, Oy lần lƣợt đƣợc gọi trục hoành, trục tung; x khoảng cách từ điểm đến trục hồnh hay đƣợc gọi hoành độ, y khoảng cách từ điểm đến trục tung hay đƣợc gọi tung độ Các tọa độ giới thực cho phép ngƣời dùng sử dụng thứ nguyên (dimension) quy ƣớc nhƣ foot, cm, mm, km, inch, lớn nhỏ tùy ý 4.1.2 Hệ tọa độ thiết bị Hệ tọa độ thiết bị hệ tọa độ đƣợc dùng thiết bị xuất cụ thể nhƣ máy in, hình, Đặc điểm chung hệ tọa độ thiết bị :  Các điểm hệ tọa độ thiết bị đƣợc mô tả cặp tọa độ (x, y), nhiên điểm khác với hệ tọa độ thực x, y  N Điều cho thấy điểm hệ tọa độ thực đƣợc định nghĩa liên tục, điểm hệ tọa độ thiết bị rời rạc tính chất tập số tự nhiên 11  Các tọa độ x, y hệ tọa độ thiết bị lớn tùy ý mà bị giới hạn khoảng Một số thiết bị cho x chạy đoạn[0,639], y chạy đoạn [0,479] Khoảng y giới hạn tọa độ x, y khác loại thiết bị khác y y PWC(x,y) y max PDC(x,y) O x x x x O Hình 2.3 – Hệ tọa độ thực (a) hệ tọa độ thiết bị (b) (a) max (b) Hệ tọa độ với hƣớng trục tọa độ nhƣ đƣợc gọi hệ tọa độ theo quy ƣớc bàn tay phải Ngoài cách tổ chức nhớ nên thông thƣờng hệ tọa độ thiết bị thƣờng dựa hệ tọa độ theo quy ƣớc bàn tay trái y O x y O x (a) (b) Hình 2.4 - Hệ tọa độ theo quy ƣớc bàn tay phải (a) quy ƣớc bàn tay trái (b) 4.2 Điểm Điểm thành phần sở đƣợc định nghĩa hệ tọa độ Đối với hệ tọa độ hai chiều điểm đƣợc xác định cặp tọa độ (x, y) Ngồi thơng tin tọa độ, điểm có thuộc tính màu sắc 4.3 Đoạn thẳng, đƣờng gấp khúc Một đƣờng thẳng xác định biết hai điểm thuộc Phƣơng trình đƣờng thẳng qua hai điểm (x 1, y1) (x2, y2) có dạng sau : x  x1  x2  x1 y  y1 y2  y1 hay dạng tƣơng đƣơng : x  x1 y2  y1   y  y1 x2  x1  Khai triển ta có dạng : y  mx  b , : m Dy , Dy  y y,Dxxx Dx 2 Đây đƣợc gọi phƣơng trình đoạn chắn đƣờng thẳng Nếu khai triển dƣới dạng : y2  y1 x  x2  x1 y  x1 y2  x2 y1  đặt A  y2  y1 , B x2  x1 , C  x2 y1  x1 y2 phƣơng trình đƣờng thẳng có dạng Ax  By  C  , dạng đƣợc gọi phƣơng trình tổng quát đƣờng thẳng Phƣơng trình tham số đƣờng thẳng có dạng tọa độ x, y đƣợc mô tả qua thành phần thứ ba t Dạng thuận tiện khảo sát đoạn thẳng x  1  tx1  tx2  (x , y ) y  1  ty1  ty2 Nếu t  0,1, ta có điểm (x,y) thuộc đoạn thẳng giới hạn hai điểm (x1, y1) (x2, y2), t  ,, ta có tồn đƣờng thẳng Một đoạn thẳng đƣờng thẳng bị giới hạn hai điểm đầu, cuối t=1 (x1, y1) t1 11.5.2 Phép quay quanh trục Giả sử trục quay qua hai điểm P0, P1 với phƣơng đƣợc biểu diễn vector đơn vị k Quay điểm (x, y, z) quanh trục k theo góc  biến thành điểm (x’, y’, z’) (xem hình 6.12) Hình 6.12 - Phép quay quanh trục k y P1 k P0 dk' x ky  k" z Để thực phép quay quanh k góc , ta thực chuỗi thao tác sau:  Tịnh tiến trục k gốc tọa độ: tr(-P0) (thành trục k')  Quay quanh trục x góc  để đặt trục k' nằm mặt phẳng Oxz: rot(x,) (thành trục k”)  Quay quanh trục y góc  để đƣa trục k” trục z: rot(y,-)  Thực phép quay quanh trục z góc : rot(z,)  Thực chuỗi phép biến đổi ngƣợc lại trình Góc quay  đƣợc xác định dựa chiếu k' lên mặt phẳng yz Ta không cần tính  cụ thể Thay vào ta tính sin() cos() cách trực tiếp Từ hình 6.12 ta có: k  P0 P PP ,d k y  k z2 cos() = kz/d, sin() = ky/d Tƣơng tự, từ hình 6.13 ta có: cos   d /  d, sin   kx /  kx Nhƣ vậy, phép quay quanh trục P 0P1 góc , rot(P0P1, ), đƣợc phân rã thành chuỗi biến đổi sở sau: tr(-P0) rot(x,) rot(y, -) rot(z, ) rot(y, ) rot(x, -) tr(P0) Hình 6.13 - Tính góc  y k" z x  kx 11.6 Kết hợp phép biến đổi affine ba chiều Để kết hợp phép biến đổi affine ba chiều, thực tƣơng tự nhƣ phép biến đổi hai chiều cách dùng hệ tọa độ Bằng cách có kết tƣơng tự nhƣ trƣờng hợp biến đổi hai chiều Nếu M1 biến đổi P thành Q M2 biến đổi Q thành S M1M2 biến đổi P thành S, ma trận kết hợp nhiều phép biến đổi đƣợc tính từ việc nhân ma trận phép biến đổi thành phần 56 12 PHÉP BIẾN ĐỔI MƠ HÌNH VÀ PHÉP BIẾN ĐỔI HỆ TRỤC TỌA ĐỘ Cho đến thời điểm này, khảo sát phép biến đổi ba chiều nhƣ thao tác dịch chuyển điểm (một đối tƣợng) từ vị trí sang vị trí khác hệ trục tọa độ Tuy nhiên, nhiều khi, ta cần xem xét đối tƣợng hệ tọa độ khác nhau, muốn chuyển từ hệ tọa độ sang hệ tọa độ khác Ví dụ, quy trình hiển thị đối tƣợng ba chiều, t a cần đặt đối tƣợng vào hệ tọa độ chung cho tất đối tƣợng cảnh (hệ tọa độ giới thực), sau đó, xác định tia nhìn, ta chuyển đổi từ hệ tọa độ giới thực sang hệ tọa độ quan sát, cuối ta phải chuyển từ hệ tọa độ quan sát san g hệ tọa độ thiết bị, nơi đối tƣợng đƣợc hiển thị Khi mơ hình hóa đối tƣợng, ta thƣờng mô tả chúng hệ tọa độ cục bộ, thuận tiện cho việc mơ hình hóa Sau đó, phép biến đổi ta đặt chúng vào cảnh cần hiển thị Cách tiếp cận cho phép ta khơng cần mơ hình hóa q nhiều đối tƣợng mà mơ hình hóa theo chủng loại đối tƣợng Ví dụ để tạo cảnh hình 6.1 ta cần mơ hình hóa trái banh, ki, bàn, … Sau phát sinh nhiều ki nhƣ thấy hình vẽ Một ví dụ khác xem hình 6.14 Việc chuyển đổi mơ tả đối tƣợng từ hệ tọa độ sang hệ tọa độ khác thực theo quy trình tƣơng tự nhƣ đồ họa hai chiều Ta cần xây dựng ma trận biến đổi để khớp đƣợc trục tọa độ hai hệ Trƣớc tiên, ta cần thực phép tịnh tiến để hai gốc tọa độ trùng Sau đó, ta phải thực tiếp dãy phép quay để khớp trục tọa độ tƣơng ứng lên yt Tractor System yW xt zt x World W zW yfW xf zfW W Front-Wheel System Nếu hệ tọa độ sử dụng tỉ lệ đo lƣờng khác nhau, ta phải thực thêm phép biến đổi tỉ lệ để đồng hệ tọa độ Hình 6.14 - Mơ hình hóa phép biến đổi hệ tọa độ Nếu hệ tọa độ thứ hai có gốc tọa độ đặt (x 0, y0, z0) vector sở đƣợc mô tả nhƣ hình 6.15 (tƣơng ứng hệ tọa độ thứ nhất), trƣớc tiên ta cần thực phép tịnh tiến T(-x 0,-y0,-z0) Sau ta xây dựng ma trận quay R dựa vector sở Ma trận biến đổi vector đơn vị u’x, u’y, u’z tƣơng ứng thành trục x, y, z   R  u' x1 u' x2 u'   x3 u' y1 u' z1 u'y2 u'z2 u' y3 u' z3  0 0  0  (6.9)  1 Ma trận phép biến đổi hệ tọa độ tích T.R Ma trận biến đổi hệ tọa độ Descartes thành hệ tọa độ Descartes khác, cho dù chúng hệ tọa độ theo quy ƣớc bàn tay phải hay bàn tay trái y' y u'y u'x (0,0,0) z x x' (x0,y0,z0) u'z z' Hình 6.15 - Chuyển đổi hệ tọa độ TÓM TẮT Chúng ta vừa khảo sát phép biến đổi affine ba chiều nhƣ mở rộng phép biến đổi affine hai chiều Cũng nhƣ phép biến đổi affine hai chiều, trƣớc tiên ta khảo sát phép biến đổi sở: tịnh tiến, tỉ lệ, quay; sau khảo sát phép biến đổi phức tạp Đặc biệt, phép quay quanh 57 trục đƣợc khảo sát chi tiết nhƣ minh họa cho phân rã phép biến đổi affine thành tích phép biến đổi affine sở Nhờ khảo sát phép biến đổi affine với biểu diễn dạng ma trận hệ tọa độ nên công việc đơn giản quán Lƣu ý điều, phép tịnh tiến quay có chung thuộc tính : sau biến đổi, hình dạng kích thƣớc đối tƣợng khơng thay đổi mà chúng bị thay đổi vị trí định hƣớng khơng gian Vì vậy, ngƣời ta gọi hai phép biến đổi phép biến đổi rigid-body transformations Phần cuối chƣơng, xem xét phép biến đổi hệ tọa độ Các phép biến đổi quan trọng trình hiển thị đối tƣợng ba chiều BÀI TẬP 62 Hãy xác định ma trận phép đối xứng gƣơng qua mặt phẳng Oxy, Oxz, Oyz 63 Hãy xác định ma trận biến đổi phép đối xứng gƣơng qua mặt phẳng qua điểm P(x,y,z) có vector pháp tuyến n 64 Hãy xác định ma trận phép đối xứng qua trục tọa độ x, y, z 65 Hãy xác định ma trận phép đối xứng qua trục qua hai điểm P0, P1 66 Hãy xác định ma trận biến đổi phép đối xứng qua gốc tọa độ O 67 Hãy xác định ma trận biến đổi phép đối xứng qua điểm P(x,y,z) 68 Cài đặt chƣơng trình cho phép ngƣời dùng sử dụng phép biến đổi affine (tịnh tiến, tỉ lệ, quay, biến dạng, …) để biến đổi đối tƣợng, sau phục hồi lại đối tƣợng gốc 69 Cài đặt chƣơng trình minh họa kết hợp phép biến đổi sở để tạo thành phép quay quanh trục 70 Chứng minh cơng thức (6.3), (6.5) 71 Xây dựng ma trận biến đổi phép quay quanh trục 58 PHỤ LỤC HƢỚNG DẪN SỬ DỤNG THƢ VIỆN ĐỒ HỌA TRONG BC 13 MỘT SỐ LƢU Ý CHUNG  Yêu cầu tối thiểu phải có tập tin điều khiển hình EGAVGA.BGI (Thông thƣờng tệp thƣờng nằm thƣ mục \BC\BGI đƣợc cài đặt)  Để dùng đƣợc thƣ viện hàm đồ họa cần có dòng lệnh : #include đặt mục chọn Graphics library ON ([x]) menu Options/Linker/Libraries  Đặt Model Large mục chọn Options/Linker/Code generation…  Không nên dùng hàm liên quan đến hình chế độ văn nhƣ printf, scanf, … dùng chế độ đồ họa  Khi cần tham khảo cú pháp, cách sử dụng hàm đồ họa nào, đƣa trỏ tên hàm chƣơng trình sau nhấn tổ hợp phím CTRL+F1 Muốn tham khảo danh sách toàn hàm thƣ viện đồ họa nhấn tổ hợp phím CTRL+F1 dòng chữ graphics.h 14 KHỞI TẠO VÀ ĐĨNG CHẾ ĐỘ ĐỒ HỌA Nhóm hàm ý nghĩa sử dụng Tên hàm Ý nghĩa initgraph closegraph Khởi tạo đóng chế độ đồ họa Thông thƣờng việc khởi tạo đồ họa đƣợc viết dƣới dạng hàm graphdefaults Đặt thiết lập đồ họa giá trị mặc định bao gồm vị trí trỏ, bảng màu (palette color), màu nền, màu vẽ, mẫu tô (fill pattern), kiểu tô (fill style), … graphresult Trả mã lỗi thao tác đồ họa sau không thực grapherrormsg đƣợc Trả trỏ tới chuỗi thông báo tƣơng ứng với mã lỗi detectgraph cho trƣớc (Dùng hàm sau có đƣợc mã lỗi để biết đƣợc thao tác đồ họa thực khơng thành cơng) Xác định trình điều khiển thiết bị chế độ đồ họa để dùng Tham khảo getgraphmode, getdrivername, getmodename, getmaxmode, getmoderange, setgraphmode, restorecrtmode, registerbgidriver, registerbgifont, installuserdriver, setgraphbufsize… Xây dựng hàm khởi tạo chế độ đồ họa #include #include #include #include void InitGraph(void) { int gdriver = DETECT, gmode, errorcode; /* Goi ham khoi tao che do hoa voi duong dan den tap tin BGI la thu muc hien hanh */ initgraph(&gdriver, &gmode, ""); /* Lay ket qua cua thao tac khoi tao */ errorcode = graphresult(); if (errorcode != grOk) // Thao tac khoi tao gap loi { 59 // In thong bao loi man hinh printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); //Ngung han chuong trinh } } Cấu trúc chƣơng trình đồ họa thông thƣờng void main (void) { … InitGraph(); // Khoi tao che do hoa // Cac thao tac hoa tiep theo sau day … closegraph(); // Ngung lam viec tren che do hoa … } Chƣơng trình minh họa Mơ tả CT : Phát sinh ngẫu nhiên đường thẳng với màu tùy ý hình Chương trình kết thúc người dùng nhấn phím // Khai bao cac tap tin INCLUDE #include #include #include #include #include // Khai bao cac bien toan cuc int MaxX, MaxY; // Chieu rong va chieu cao toi da cua man hinh int MaxColors; // So mau toi da / Khai bao cac ham dung chuong trinh / Ham khoi tao che do hoa void InitGraph(void) { int gdriver = DETECT, gmode, errorcode; /* Goi ham khoi tao che do hoa voi duong dan den tap tin BGI la thu muc hien hanh */ initgraph(&gdriver, &gmode, ""); /* Lay ket qua cua thao tac khoi tao */ errorcode = graphresult(); if (errorcode != grOk) // Thao tac khoi tao gap loi { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); 60 getch(); exit(1); //Ngung han chuong trinh } // Lay cac thong tin ve chieu rong va chieu cao toi da cua che do hoa dang dung MaxX = getmaxx(); MaxY = getmaxy(); // Lay thong tin ve so mau toi da MaxColors = getmaxcolor() + 1; } // Ham phat sinh ngau nhien cac duong thang voi mau y void LineDemo(void) { int x1, y1, x2, y2; // Toa diem dau va diem cuoi int color; // Mau ve duong thang cleardevice(); // xoa man hinh { // Phat sinh ngau nhien toa duong thang x1 = random(MaxX); y1 = random(MaxY); x2 = random(MaxX); y2 = random(MaxY); // Phat sinh ngau nhien mau ve duong thang color = random(MaxColors); // Goi ham dat mau ve duong thang setcolor(color); // Goi ham hoa thuc hien viec ve duong thang line(x1, y1, x2, y2); } while (!kbhit()); // Vong lap ket thuc nguoi dung nhan phim bat ki } // Ham chinh cua chuong trinh void main (void) { randomize(); // Khoi tao bo phat sinh so ngau nhien InitGraph(); // Khoi tao che do hoa // Cac thao hoa LineDemo(); getch(); closegraph(); // Ngung lam viec tren che do hoa } 61 15 HỆ THỐNG TỌA ĐỘ Nhóm hàm ý nghĩa sử dụng Tên hàm Ý nghĩa getmaxx Trả chiều rộng (theo x) chiều cao (theo y) tối đa getmaxy chế độ hình dùng getx Trả tọa độ hành trỏ gety getviewsettings Lấy thông tin viewport hành Thông tin đƣợc lƣu kiểu struct viewporttype {int left, top, right, bottom, clip} cleardevice Xóa tồn hình đồ họa màu đƣa clearviewport trỏ vị trí (0, 0) hình Xóa tồn viewport đƣa trỏ vị trí (0,0) viewport setviewport Thiết lập viewport cho thao tác đồ họa (viết, vẽ, tô, ) 16 VẼ ĐIỂM, ĐƢỜNG, VÙNG Nhóm hàm ý nghĩa sử dụng Tên hàm Ý nghĩa putpixel Vẽ hình pixel vị trí xác định getpixel Trả màu pixel vị trí cho trƣớc moveto Di chuyển vị trí trỏ hành line Vẽ đoạn thẳng circle Vẽ đƣờng tròn, ellipse ellipse rectangle Vẽ hình chữ nhật, đa giác drawpoly getlinesettings Trả về/thiết lập kiểu (style), mẫu tô (pattern), bề rộng setlinestyle (thickness) đƣợc dùng cho việc vẽ đƣờng nói chung (đƣờng thẳng, đa giác, hình chữ nhật ) Với hàm getlinesettings , thông tin đƣợc trả biến có cấu trúc struct linesettingstype getcolor Trả / đặt màu vẽ hành Màu vẽ dùng cho việc setcolor vẽ điểm (pixel), đƣờng, setwritemode Đặt cách vẽ đƣờng COPY_PUT hay XOR_PUT Hàm thƣờng làm việc với line, lineto, linerel, Tham khảo rectangle, drawpoly moverel, lineto, linerel, arc, sector, pieslice, setaspectratio, getaspectratio, getmaxcolor, getbkcolor, setbkcolor, getpalette, setallpalette, getdefaultpalette, setrgbpalette, getpalettesize Một số điểm cần lƣu ý  Các lệnh setfillstyle ảnh hƣởng đến đƣờng hàm line, linerel, lineto, rectangle, drawpoly,  Nếu dùng chế độ vẽ XOR_PUT, việc vẽ hai lần liên tiếp cho kết vẽ xóa đối tƣợng Chƣơng trình minh họa // Ham minh hoa cac kieu duong thang (linestyle) 62 void LineStyleDemo(void) { int x1 = 50, y1 = 50, y2 = MaxY-y1, Step = 30; struct linesettingstype LineInfo; cleardevice(); // Luu thong tin ve duong cu getlinesettings(&LineInfo); setcolor(GREEN); // Ve duong voi dinh dang mac dinh, rong la pixel for (int style=SOLID_LINE; style

Ngày đăng: 23/11/2018, 10:45

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan