Giáo trình Kỹ thuật đồ họa máy tính cung cấp cho người học những kiến thức như: Tổng quan về đồ họa máy tính; Đồ họa 2 chiều; Đồ họa 3 chiều; Các hệ màu; Các kỹ thuật đồ họa trong bộ Công cụ Adobe After Effect. Mời các bạn cùng tham khảo!
TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH
Giới thiệu về đồ họa máy tính
1.1.1 Mở đầu Đồ họa máy tính là một lĩnh vực của công nghệ thông tin, liên quan đến việc nghiên cứu, xây dựng và tập hợp các công cụ ( mô hình lý thuyết và phần mềm) khác nhau để kiến tạo, xây dựng lưu trữ và xử lý các mô hình và hình ảnh của đối tượng, sự vật hiện tượng khác nhau trong đời sống, sản xuất và nghiên cứu Các mô hình và hình ảnh này có thể là các kết quả thu được từ những lĩnh vực khác nhau của rất nhiều ngành khoa học ( vật lý, toán học, ) Đồ họa máy tính cũng là lĩnh vực liên quan đến việc thiết kế, chế tạo phần cứng như: các thiết bị hiển thị, các thiết bị đầu vào như bàn phím, chuột, bút quang … các thuật toán cần thiết để phát sinh hình ảnh trên các thiết bị này, các phần mềm được sử dụng cho cả người lập trình hệ thống và người lập trình ứng dụng đồ họa Đồ họa máy tính tương tác là một trong những phương tiện mang lại thêm nhiều sự thuận lợi cho người dùng trong việc phát sinh hình ảnh Chúng ta có thể tạo các hình ảnh không chỉ của các đối tượng cụ thể, thực tế, mà còn của các đối tượng trừu tượng, nhân tạo; biểu diễn dữ liệu mà không có tính kế thừa về mặt hình học như kết quả điều tra, khảo sát
Đồ họa máy tính cho phép chúng ta vượt ra ngoài giới hạn của ảnh tĩnh, với ảnh động mang lại hiệu quả cao hơn, đặc biệt cho những hiện tượng biến đổi theo thời gian Điều này bao gồm cả những thay đổi thực tế như sự chuyển động của cánh máy bay siêu âm và sự phát triển của khuôn mặt con người từ trẻ đến già, cũng như những khái niệm trừu tượng như xu hướng sử dụng năng lượng và sự gia tăng dân số.
Có nhiều cách tiếp cận trong việc học đồ họa, từ nghiên cứu phần cứng và kỹ thuật hiển thị đối tượng đồ họa đến việc sử dụng ứng dụng đồ họa Bài viết này sẽ tập trung vào góc độ lập trình ứng dụng, tận dụng phần cứng và công cụ phần mềm để phát triển các ứng dụng đồ họa hiệu quả.
Để thiết kế và cài đặt hiệu quả các ứng dụng đồ họa, ngoài việc hiểu rõ khả năng của công cụ lập trình, chúng ta cần nắm vững các khái niệm về phần cứng, các vấn đề và nguyên lý liên quan đến cài đặt phần mềm, cũng như các thuật toán và ứng dụng liên quan.
Năm 1955, hệ thống phòng không SAGE (Môi trường mặt đất bán tự động) chính thức hoạt động, với màn hình quét vector là đầu ra chính và bút quang (Light pen) là thiết bị đầu vào, được áp dụng rộng rãi từ năm 1958.
Tập đoàn thiết bị kỹ thuật số DEC, được thành lập vào năm 1957, đã khởi đầu bằng việc chế tạo minicomputers, góp phần quan trọng trong sự phát triển của đồ họa máy tính sau này.
Năm 1960, nhà khoa học William Fette đã phát triển mô hình buồng lái máy bay cho Boeing, dựa trên hình ảnh 3 chiều của phi công Phương pháp này, được gọi là đồ hoạ máy tính, cho phép các nhà thiết kế quan sát vị trí người lái một cách trực quan Màn hình CRT (Cathode ray tube) trở thành thiết bị phổ biến nhất trong hệ thống đồ hoạ, mặc dù vào thời điểm đó, máy tính vẫn còn chậm, đắt và không đáng tin cậy.
Vào những năm 1960, lĩnh vực đồ họa máy tính bắt đầu phát triển với dự án Sketchpad do Ivan Sutherland thực hiện tại MIT vào năm 1961 Dự án này sử dụng bảng vẽ và thiết bị light pen làm công cụ đầu vào, cùng với máy hiện sóng để hiển thị đầu ra Phiên bản đầu tiên chỉ xử lý dữ liệu hai chiều, nhưng sau đó đã được cải tiến để cho phép vẽ, biến đổi và hiển thị các đối tượng ba chiều dưới dạng hình chiếu lên mặt phẳng hai chiều.
Kỹ thuật đồ họa đã trải qua sự phát triển mạnh mẽ trong những năm 1960 và 1970, dẫn đến việc hình thành các chuẩn đồ họa mới Sự phát triển này không chỉ nâng cao khả năng giao tiếp trong phần mềm mà còn cải thiện khả năng tái sử dụng các thư viện đồ họa.
Sự bùng nổ công nghệ điện tử máy tính vào thập niên 1980 đã dẫn đến sự ra đời của nhiều vi mạch hỗ trợ đồ họa, giúp giảm giá thành máy tính cá nhân Đến cuối thập kỷ này, các máy tính đồ họa của SGI (Silicon Graphics Inc.) đã sản xuất những bộ phim hoạt hình ngắn đầu tiên cho Pixar.
Hệ điều hành Microsoft Windows 3.0 được xuất xưởng lần đầu tiên vào năm 1990 thúc đẩy to lớn cho khái niệm GUI (Graphical User Interface)
Ngày càng có nhiều ứng dụng được phát triển cho hệ điều hành MS Windows, trong đó OpenGL (Thư viện đồ họa mở) được giới thiệu bởi SGI vào năm 1992 Thập niên 1990 chứng kiến sự bùng nổ trong lĩnh vực đồ họa ba chiều, đặc biệt trong phát triển game, đa phương tiện và hoạt hình Nổi bật trong số đó là Quake, một trong những game 3D hoàn chỉnh đầu tiên, ra mắt vào năm 1996.
Ngày nay, đồ họa đóng vai trò quan trọng trong nhiều lĩnh vực như ngành công nghiệp giải trí, khoa học, kỹ thuật, y học và thiết kế web Nó tạo ra các tương tác mới thông qua các công nghệ như thực tế ảo, màn hình lớn, màn hình thực tế ảo, thiết bị cảm ứng đa điểm và điện thoại thông minh.
Lịch sử đồ họa có thể được nhìn nhận qua sự phát triển của các kỹ thuật hiển thị, diễn ra qua nhiều giai đoạn khác nhau.
• Kỹ thuật hiển thị bằng ký tự:
Kỹ thuật này chỉ cho phép hiển thị văn bản và hình ảnh đồ họa đơn giản, giao tiếp với người dùng thông qua các lệnh dạng văn bản Người dùng có thể sử dụng các ký tự mã hóa đặc biệt để hiển thị đối tượng, và tất cả các chương trình cũng như phần mềm đều hoạt động theo chế độ đơn nhiệm.
- Hệ điều hành MS_DOS Hệ điều hành tiêu biểu của giai đoạn 80, đầu những năm
- Phần mềm soạn thảo văn bản BKED chạy trên môi trường MS_DOS
• Kỹ thuật hiển thị vector:
Kỹ thuật này, phát triển từ năm 1963 đến 1980, cho phép hiển thị văn bản, đường thẳng và hình đơn giản, với giao tiếp người dùng thông qua dòng lệnh, phím nóng và menu chọn.
Tổng quan về một hệ đồ họa
Một yêu cầu quan trọng của hệ thống đồ họa là khả năng chạy ứng dụng trên nhiều thiết bị mà không phụ thuộc vào phần cứng Để đạt được điều này, cần có tiêu chuẩn hóa cho môi trường đồ họa ở mức chức năng, nhằm đảm bảo sự độc lập về thiết bị và ngôn ngữ lập trình.
Sự độc lập với thiết bị cho phép các ứng dụng đồ họa hoạt động trên nhiều hệ thống phần cứng khác nhau, nhờ vào việc thư viện đồ họa sử dụng thiết bị nhập xuất logic để ánh xạ thiết bị cụ thể Qua nhiều năm, đã có nhiều tiêu chuẩn đồ họa được phát triển.
- GKS(Graphics Kernel System - 1985), phát triển riêng cho các thiết bị nhập xuất
- GKS-3D bổ sung thêm khả năng lập trình 3 chiều
- CGI ( Computer Graphics Interface System): Hệ chuẩn cho các phương pháp giao tiếp với các thết bị ngoại vi
- CGM ( Computer Graphics Metafile): Xác định các chuẩn cho việc lưu trữ và chuyển đổi hình ảnh
VRML (Ngôn ngữ Mô hình Thực tế Ảo) là một công nghệ hiển thị tiên tiến được phát triển bởi công ty Silicon Graphics và sau đó đã được chuẩn hóa thành một tiêu chuẩn công nghiệp.
- PHIGS (Programmer’s Hierarchical Interactive Graphics Standar): Xác định các phương pháp chuẩn cho mô hình thời gian thực và lập trình hướng đối tượng
- PHIGS+ bao gồm khả năng lập trình không gian, tạo thành thao tác dữ liệu đồ họa phức tạp …
Kỹ thuật đồ họa 3 chiều
Kỹ thuật đồ họa 2 chiều
- OPENGL: Thư viện đồ họa của hãng Silicon Graphics, được xây dựng theo đúng chuẩn của một hệ đồ họa – năm 1993
- DIRECTX: Thư vện đồ họa của hãng Microsoft
Các tiêu chuẩn đồ họa thực tế được hình thành từ sự chấp nhận trong ngành thiết kế giao diện, với nhiều công ty tham gia đề xuất Những tiêu chuẩn này được thiết lập nhằm đảm bảo tính linh hoạt, cho phép thực hiện các thay đổi tối thiểu và hỗ trợ định địa chỉ các thiết bị nhập xuất khác nhau Người lập trình bắt đầu bằng việc tạo ra một hệ thống tọa độ mô hình, gọi là hệ thống tọa độ thực, sau đó phát triển hệ tọa độ tiêu chuẩn và hệ tọa độ thiết bị Ứng dụng sẽ tương tác với hệ tọa độ tiêu chuẩn một cách phù hợp, bất kể thiết bị xuất nào được sử dụng, từ đó tạo ra sự độc lập với thiết bị trong quá trình tạo hình ảnh cho đối tượng.
Phần cứng đồ họa bao gồm các thành phần:
✓ CPU: Thực hiện các chương trình ứng dụng
✓ Bộ xử lý hiển thị (Display Processor): Thực hiện công việc hiển thị dữ liệu đồ hoạ
✓ Bộ nhớ hệ thống (System Memory): Chứa các chương trình và dữ liệu đang thực hiện
✓ Bộ đệm ( Frame buffer): Chứa các hình ảnh hiển thị
✓ Bộ điều khiển màn hình (Video Controller): Điều khiển màn hình, chuyển dữ liệu dạng số ở frame buffer thành các điểm sáng trên màn hình
Phần mềm đồ họa cung cấp các công cụ lập trình với tập hợp hàm đồ họa cho ngôn ngữ lập trình cấp cao, cho phép tạo ra các đối tượng hình ảnh cơ bản như đoạn thẳng, đa giác và đường tròn Nó cũng hỗ trợ thay đổi màu sắc, chọn khung nhìn và áp dụng các phép biến đổi.
Các ứng dụng đồ họa như Photoshop và AutoCAD được phát triển dành cho người dùng không chuyên về lập trình, cho phép họ dễ dàng tạo ra các đối tượng và hình ảnh mà không cần hiểu rõ quy trình tạo ra chúng.
Khi ứng dụng được phát triển với các hàm đồ họa chuẩn, chúng có khả năng hoạt động trên nhiều hệ thống khác nhau và có thể được tái sử dụng cho nhiều ứng dụng khác nhau.
Các kỹ thuật đồ họa
Ngày nay, số lượng hệ thống sử dụng kỹ thuật đồ họa tương tác ngày càng gia tăng và trở nên đa dạng hơn Dựa vào phương pháp xử lý dữ liệu, có thể phân loại các hệ thống đồ họa thành hai loại chính: kỹ thuật đồ họa điểm (Sample based – Graphics) và kỹ thuật đồ họa vector.
1.3.1 Kỹ thuật đồ hoạ điểm
Các mô hình, hình ảnh của các đối tượng được hiển thị thông qua từng pixel (từng mẫu rời rạc) trong kỹ thuật này ta có thể:
- Tạo ra, thay đổi các thuộc tính, xóa đi từng pixel của mô hình và hình ảnh các đối tượng
- Các mô hình hình ảnh được hiển thị như một lưới điểm (grid) các pixel rời rạc
- Từng pixel đều có vị trí xác định, được hiển thị với một giá trị rời rạc (số nguyên) các thông số hiển thị (màu sắc hoặc độ sáng)
Tập hợp tất cả các pixel cho chúng ta mô hình, hình ảnh đối tượng mà chúng ta muốn hiển thị Có 2 phương pháp để tạo ra các pixel:
Phương pháp sử dụng phần mềm để vẽ từng pixel một giúp tạo ra hình ảnh mô phỏng chính xác dựa trên các lý thuyết mô phỏng Kỹ thuật này cho phép xây dựng hình ảnh chân thực của sự vật thông qua việc điều chỉnh từng chi tiết nhỏ.
Phương pháp rời rạc hoá hình ảnh thực của đối tượng cho phép sửa đổi và xử lý mảng pixel theo nhiều cách khác nhau, nhằm tạo ra hình ảnh đặc trưng của đối tượng.
1.3.2 Kỹ thuật đồ họa vector
Nguyên lý xây dựng các mô hình, hình ảnh trong kỹ thuật đồ họa vector như sau:
- Xây dựng mô hình hình học (geometrical model) cho mô hình hoặc hình ảnh của đối tượng
- Xác định các thuộc tính của mô hình hình học này
- Quá trình tô trát (rendering) để hiển thị từng điểm của mô hình, hình ảnh thực của đối tượng
Trong kỹ thuật đồ họa vector, dữ liệu được lưu trữ dưới dạng mô tả toán học cho các thành phần của mô hình hình học, cùng với các thuộc tính liên quan, thay vì lưu trữ toàn bộ pixel của mô hình khi thực hiện tô trát.
Các thực thể hình học cơ sở là những thành phần được mô tả trong mô hình hình học của đối tượng, từ đó các đối tượng hình ảnh được xây dựng Hình ảnh này được thể hiện từ nhiều góc nhìn và điểm nhìn khác nhau.
So sánh giữa 2 kỹ thuật đồ họa điểm và đồ họa vector: Đồ hoạ điểm
- Hình ảnh và mô hình của các đối tượng được biểu diễn bởi tập hợp các điểm của lưới (grid)
- Thay đổi thuộc tính của các pixel dẫn đến thay đổi từng phần và từng vùng của đối tượng Đồ hoạ vector
- Hình ảnh và mô hình của các đối tượng được biểu diễn bởi tập hợp các thực thể hình học cơ sở
- Xử lý với từng thành phần hình học cơ sở của đối tượng và thực hiện quá trình tô trát, hiển thị
- Copy được các pixel từ một hình ảnh này sang hình ảnh khác Đồ hoạ vector
- Quan sát hình ảnh và mô hình của hình ảnh và sự vật ở nhiều góc độ khác nhau bằng cách thay đổi điểm nhìn và góc nhìn.[1]
1 Trình bày một số mốc lịch sử phát triển của đồ họa máy tính
2 Trình bày một số ứng dụng của đồ họa máy tính trong các lĩnh vực: giáo dục, y tế, giải trí, nghệ thuật, kỹ thuật…
3 Tại sao phải sử dụng các chuẩn đồ họa, nêu một số chuẩn đồ họa?
4 Trình bày tổng quan về phần cứng, phần mềm đồ họa
5 Trình bày về kỹ thuật đồ họa điểm và kỹ thuật đồ họa vector
6 Phân biệt giữa đồ họa điểm và đồ họa vector
ĐỒ HỌA 2 CHIỀU
Giới thiệu về các đối tượng đồ họa cơ sở
Mỗi bức ảnh mô tả thế giới thực đều được cấu trúc từ các đối tượng đơn giản hơn Đối với các ảnh đồ họa được tạo ra bằng máy tính, hình dạng và màu sắc của từng đối tượng có thể được mô tả một cách riêng biệt qua hai phương pháp khác nhau.
- Bằng dãy các pixel tương ứng
Bài viết đề cập đến việc sử dụng các đối tượng hình học cơ sở như đoạn thẳng và vùng tô đa giác để hiển thị hình ảnh Quá trình này bao gồm việc nạp các pixel vào vùng đệm khung Để chuyển đổi các hình ảnh được mô tả bằng các đối tượng này, cần thực hiện bước chuyển đổi chúng thành ma trận pixel trước khi hiển thị.
Quá trình chuyển đổi bằng dòng quét (scan-converting) là phương pháp được sử dụng để mô tả hình ảnh dưới dạng các đối tượng đồ họa cơ sở Các công cụ lập trình đồ họa cung cấp các hàm cho phép tạo ra và kết hợp các đối tượng này, từ đó tạo thành những cấu trúc phức tạp hơn Mỗi đối tượng đồ họa cơ sở, như điểm, đoạn thẳng, đường tròn, và các hình dạng khác, được xác định qua tọa độ và thuộc tính hiển thị Chương này sẽ nghiên cứu các thuật toán hiển thị các đối tượng đồ họa cơ sở trên các thiết bị hiển thị dạng điểm.
Các thuật toán này chuyển đổi các đối tượng đồ họa từ hệ tọa độ thực sang dãy pixel với tọa độ nguyên trên thiết bị hiển thị Hai yêu cầu chính cho các thuật toán này là độ chính xác và hiệu suất.
Trong hệ tọa độ thực, các đối tượng được mô tả là liên tục, trong khi trong hệ tọa độ thiết bị, chúng trở thành rời rạc Quá trình chuyển đổi này phản ánh sự rời rạc hóa và nguyên hóa đối tượng để xác định các điểm nguyên xấp xỉ một cách tối ưu nhất Điều này có nghĩa là hình dạng của đối tượng hiển thị trên lưới nguyên của thiết bị phải tương tự như đối tượng trong lưới tọa độ thực, tạo cảm giác liên tục và liền nét Sự liên tục này xuất phát từ khả năng của mắt người, khi không thể phân biệt được các điểm quá gần nhau.
Các đối tượng đồ họa cơ sở là thành phần chính cấu trúc các đối tượng phức tạp, do đó, các thuật toán hiển thị chúng cần được tối ưu hóa về tốc độ Đây là yếu tố quyết định cho sự phát triển của nhiều thuật toán khác nhau.
2.1.2 Các hệ tọa độ a, Hệ tọa độ thế giới thực
Hệ tọa độ thế giới thực là công cụ dùng để mô tả các đối tượng trong thế giới thực Một trong những hệ tọa độ thực phổ biến nhất hiện nay là hệ tọa độ mà chúng ta thường sử dụng.
Descartes Với hệ tọa độ này, bất kì một điểm nào trong mặt phẳng cũng được mô tả bằng một cặp tọa độ (x, y) trong đó x, y R
Các tọa độ thế giới thực cho phép người dùng linh hoạt sử dụng nhiều đơn vị đo lường khác nhau như foot, cm, mm, km, inch, và điều chỉnh kích thước theo ý muốn Hệ tọa độ thiết bị hỗ trợ việc này một cách hiệu quả.
Hệ tọa độ thiết bị là hệ tọa độ được áp dụng cho các thiết bị cụ thể như máy in và màn hình Điểm chung của các hệ tọa độ này là chúng đều phục vụ mục đích xác định vị trí và hiển thị thông tin một cách chính xác.
- Các tọa độ x, y (x,y N) của hệ tọa độ thiết bị đều bị giới hạn trong một khoảng nào đó (do kích thước của thiết bị)
- Khoảng giới hạn các tọa độ x, y là khác nhau đối với từng loại thiết bị khác nhau c Hệ tọa độ thiết bị chuẩn
Do sự khác biệt trong cách định nghĩa các hệ tọa độ thiết bị, một hình ảnh có thể hiển thị chính xác trên một thiết bị nhưng không trên thiết bị khác Để giải quyết vấn đề này, người ta đã xây dựng Hệ tọa độ thiết bị chuẩn (NDCS - Normalized Device Coordinate System) nhằm tạo ra một đại diện chung cho tất cả các thiết bị, cho phép mô tả hình ảnh một cách nhất quán mà không phụ thuộc vào thiết bị cụ thể nào.
Trong hệ tọa độ chuẩn, các tọa độ x và y được gán giá trị trong khoảng [0,1], tạo nên một không gian hình vuông đơn vị Hình vuông này có góc trái dưới tại điểm (0,0) và góc phải trên tại điểm (1,1).
2.1.3 Các đối tượng đồ họa cơ sở a Điểm: Điểm là thành phần cơ sở được định nghĩa trong một hệ tọa độ Đối với hệ tọa độ hai chiều mỗi điểm được xác định bởi cặp tọa độ (x, y)
Ngoài thông tin về tọa độ, điểm còn có thuộc tính màu sắc b Đoạn thẳng:
Một đường thẳng có thể được xác định bằng hai điểm thuộc nó Phương trình của đường thẳng đi qua hai điểm (x1, y1) và (x2, y2) có dạng y = mx + b, trong đó m là hệ số góc, được tính bằng Dy/Dx với Dy = y2 - y1 và Dx = x2 - x1.
Dưới dạng phương trình tham số, ta có:
- Nếu t 0,1], ta có các điểm (x,y) thuộc về đoạn thẳng giới hạn bởi hai điểm (x1, y1) và (x2, y2),
- Nếu t −,+, ta sẽ có đường thẳng
Các thuộc tính của đoạn thẳng:
• Độ rộng của nét vẽ
• Kiểu nét vẽ của đoạn thẳng: nét liền, nét gạch, chấm gạch,
Hầu hết các công cụ đồ họa cho phép người dùng định nghĩa tập các kiểu nét vẽ đoạn thẳng thông qua một mẫu (pattern), cùng với khả năng tùy chỉnh vùng tô.
Một vùng tô bao gồm đường biên và vùng bên trong Đường biên là một đường khép kín
Các thuộc tính của vùng tô bao gồm:
• Thuộc tính của đường biên: như thuộc tính của đoạn thẳng
• Thuộc tính của vùng bên trong: màu tô và mẫu tô d Kí tự, chuỗi kí tự
Các chuỗi kí tự giúp hiển thị nội dung các thông điệp theo một ngôn ngữ nào đó
Các thuộc tính của kí tự bao gồm :
• Màu sắc của các kí tự
Font chữ là bộ ký tự dùng để hiển thị, xác định kiểu và kích thước của ký tự Hình dạng của mỗi ký tự có thể được tạo ra từ một tập hợp các đường gấp khúc trong font vector hoặc từ mẫu các pixel trong font bitmap.
Có nhiều loại font khác nhau như: font bitmap, font truetype, font CHR,
Các thuật toán vẽ đường thẳng
Để vẽ đoạn thẳng với hai điểm đầu cuối P1(x1,y1) và P2(x2,y2) trên thiết bị hiển thị, chúng ta cần xác định các pixel sẽ được hiển thị, nhằm đảm bảo đoạn thẳng hiển thị trên màn hình giống nhất với đoạn thẳng thực tế mà ta muốn vẽ.
Tọa độ các pixel được hiển thị là các điểm nguyên sau khi xấp xỉ đối tượng thực lần lượt là (x i , y i ),i = 0, 1
Vậy, nếu biết được (x i , y i ) là tọa độ nguyên xác định ở bước thứ i, điểm nguyên tiếp theo (x i+1, y i+1) sẽ được xác định như thế nào?
Để đảm bảo rằng đối tượng hiển thị trên lưới nguyên một cách liền nét, các điểm (x i+1, y i+1) chỉ có thể được chọn từ 8 điểm được đánh số từ 1 đến 8 như trong hình 1.
Ta có tọa độ các điểm là:
Phương của đường thẳng cung cấp gợi ý cho việc lựa chọn một trong 8 điểm Cách chọn các điểm này sẽ phụ thuộc vào từng thuật toán, với mục tiêu tối ưu hóa tốc độ.
Hình 2.1: Các điểm lân cận của (xi, yi)
Xét đường thẳng có hệ số góc 0 m 1 và Dx 0
Với các đường thẳng dạng này, nếu (x i , y i ) là điểm đã xác định được ở bước thứ i
(điểm màu đen) thì điểm cần chọn (x i+1, y i+1) ở bước thứ (i+1) sẽ là một trong hai điểm 1(x i +1, y i ) hoặc (x i +1, y i +1) như hình 2 trên
Như vậy, trong trường hợp 0 m 1, ta có: x i+1 = x i +1, y i+1 { y i , y i + 1 }
2.2.2 Thuật toán DDA (Digital Differential Analyzer )
Với thuật toán DDA, việc quyết định chọn y i+1 là y i hay y i +1 , dựa vào phương trình y = mx + b của đoạn thẳng
Q(xi+1,y t i+1) thuộc đường thẳng thực, ta có: y t i+1= mx i+1 + b = m(xi + 1) +b
➔ y t i+1 = y t i + m yi+1 là giá trị sau khi làm tròn y t i+1, vậyyi+1= round(y t i+1)
Hình 2.2: Đường thẳng có hệ số góc 0 m 1
Hình 2.3: Minh họa thuật toán DDA trường hợp 0 Tính nghiệm t1, t2 như 2 trường hợp sau:
- Với bất phương trình tpk qk mà pk 0, ta có t qk / pk, tính t1 = max{0, qk/pk} xmin ≤ x ≤ xmax ymin ≤ y ≤ ymax
0≤ t ≤ 1 xmin ≤ x1 + t Dx ≤ xmax ymin ≤ y1 + t Dy ≤ ymax
0≤ t ≤ 1 Đặt: p1 = -Dx p2 = Dx p3 = -Dy p4 = Dy q1 = x1 - xmin q2 = xmax – x1 q3 = y1 - ymin q4 = ymax - y1
Hình 2.18: Minh họa thuật toán Liang Barsky
- Với bất phương trình tpk qk mà pk 0, ta có t qk / pk, tính t2 = min{1, qk/pk} Nếu t1 > t2 thì đoạn thẳng nằm hoàn toàn ngoài cửa sổ
Cài đặt minh họa: int ClipTest(int p, int q, float &t1, float &t2)
{ r = float(q)/p; if (r>t2) return FALSE; else if (r>t1) t1 = r;
{ r = float(q)/p; if (r