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 không chỉ giới hạn ở ảnh tĩnh mà còn cho phép tạo ra các ảnh động, mang lại hiệu quả cao hơn, đặc biệt trong việc thể hiện các 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 hay sự phát triển của khuôn mặt con người theo tuổi tác, cũng như các xu hướng trừu tượng như sự phát triển trong việc sử dụng năng lượng và gia tăng dân số.
Học đồ họa có nhiều phương pháp khác nhau, từ nghiên cứu phần cứng và kỹ thuật hiển thị đối tượng đến việc sử dụng ứng dụng đồ họa Trong bài viết này, chúng ta sẽ tiếp cận môn học từ 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 các chương trình ứng dụng đồ họa hiệu quả, ngoài việc hiểu rõ khả năng của công cụ lập trình, chúng ta cũng 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 DEC, được thành lập vào năm 1957, đã khởi đầu bằng việc chế tạo minicomputers, đóng vai trò quan trọng trong sự phát triển của đồ họa máy tính.
Vào năm 1960, nhà khoa học William Fette đã phát triển mô hình buồng lái máy bay cho hãng Boeing, dựa trên hình ảnh 3 chiều của phi công trong buồng lái 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 trực quan vị trí người lái trong khoang Màn hình, thiết bị phổ biến nhất trong hệ đồ hoạ, chủ yếu dựa trên công nghệ ống tia âm cực CRT Tuy nhiên, 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à light pen làm thiết bị đầu vào, cùng với máy hiện sóng làm thiết bị đầu ra Phiên bản đầu tiên của Sketchpad chỉ xử lý số liệu hai chiều, nhưng sau đó đã được cải tiến để vẽ, biến đổi và hiển thị các đối tượng ba chiều dưới dạng hình chiếu trên mặt phẳng hai chiều.
Kỹ thuật đồ họa đã có 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 tiêu chuẩn đồ họa Sự phát triển này không chỉ nâng cao khả năng giao tiếp trong lĩnh vực công nghệ thông tin mà còn cải thiện khả năng tái sử dụng phần mềm và các thư viện đồ họa.
Vào thập niên 1980, sự phát triển đột phá của công nghệ điện tử máy tính đã 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 Cuối những năm 1980, máy tính đồ họa SGI (Silicon Graphics Inc.) đã sản xuất một số phim hoạt hình ngắn đầu tiên tại 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 nhiều ứng dụng được phát triển trên nền tảng MS Windows, trong đó OpenGL (Thư viện đồ họa mở) do SGI giới thiệu vào năm 1992 đóng vai trò quan trọng 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 Một trong những game 3D đầu tiên hoàn chỉnh, Quake, đã ra mắt vào năm 1996, đánh dấu bước ngoặt lớn trong ngành công nghiệp game.
Ngày nay, đồ họa đóng vai trò quan trọng trong ngành công nghiệp giải trí và nhiều lĩnh vực khác như khoa học, kỹ thuật, y học, thiết kế web và truyền thông Nó thiết lập những tương tác mới qua các yếu tố 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à smartphone.
Lịch sử đồ họa có thể được phân chia thành các giai đoạn phát triển kỹ thuật hiển thị, phản ánh sự tiến bộ không ngừng trong công nghệ.
• Kỹ thuật hiển thị bằng ký tự:
Kỹ thuật này cho phép hiển thị văn bản và hình ảnh đồ họa đơn giản, đồng thời giao tiếp với người dùng thông qua các lệnh dạng text Người dùng có thể sử dụng ký tự mã hóa đặc biệt để hiển thị đối tượng Tất cả các chương trình và phần mềm được thực hiện đề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, đồng thời giao tiếp với người sử dụng thông qua các 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ị khác nhau 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 cung cấp 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 ánh xạ thiết bị cụ thể thông qua thiết bị nhập xuất logic Trong suốt nhiều năm, đã có nhiều tiêu chuẩn đồ họa được phát triển để cải thiện khả năng này.
- 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 các quy định từ nhiều công ty Những tiêu chuẩn này đảm bảo tính linh hoạt bằng cách thiết lập các thay đổi tối thiểu, cho phép định địa chỉ các thiết bị nhập xuất khác nhau Ban đầu, lập trình viên xây dựng một hệ thống tọa độ mô hình để mô tả đối tượng, được gọi là hệ thống tọa độ thực Tiếp theo là hệ tọa độ tiêu chuẩn và hệ tọa độ thiết bị Chương trình ứng dụng giao tiếp với hệ tọa độ chuẩn một cách thích hợp, không phụ thuộc vào thiết bị xuất, từ đó tạo ra sự độc lập trong việc hình ảnh hóa đố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 các hàm đồ họa cho ngôn ngữ lập trình cấp cao Các hàm cơ bản bao gồm việc tạo ra các đối tượng hình ảnh như đoạn thẳng, đa giác và đường tròn, cũng như khả năng 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 phải lập trình viên, giúp họ dễ dàng tạo ra các đối tượng và hình ảnh mà không cần hiểu biết về quy trình lập trình.
Khi các ứng dụng sử dụng các hàm đồ họa chuẩn, chúng có khả năng thực thi 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
Hiện nay, số lượng hệ thống sử dụng kỹ thuật đồ họa tương tác ngày càng tăng và đa dạng Dựa vào phương pháp xử lý dữ liệu, người ta phân chia thành hai loại hệ thống đồ họa: 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 cho phép xây dựng hình ảnh mô phỏng dựa trên các lý thuyết mô phỏng Kỹ thuật này giúp tái hiện chân thực sự vật thông qua việc xử lý chi tiết từng điểm ảnh.
Phương pháp rời rạc hoá hình ảnh thực của đối tượng cho phép thực hiện sửa đổi và xử lý các pixel để tạo ra hình ảnh đặc trưng Các kỹ thuật chỉnh sửa và xử lý hình ảnh này có thể áp dụng theo nhiều phương pháp khác nhau, nhằm nâng cao chất lượng và độ chính xác của hình ảnh.
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, mô hình hình học chỉ được lưu trữ dưới dạng mô tả toán học kèm theo các thuộc tính tương ứng, mà không cần lưu trữ toàn bộ pixel của quá trình tô trát (rendering).
Các thành phần trong mô hình hình học của đối tượng được gọi là thực thể hình học cơ sở, và các đối tượng hình ảnh được xây dựng từ những thực thể này Hình ảnh được tạo ra 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 thành từ các đối tượng đơn giản hơn Đối với các hình ả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
Để hiển thị hình ảnh, trước tiên cần chuyển đổi các đối tượng hình học cơ sở như đoạn thẳng và vùng tô đa giác thành ma trận các pixel Quá trình này bao gồm việc nạp các pixel vào vùng đệm khung, cho phép hiển thị chính xác các hình ảnh được mô tả bởi các đối tượng hình học này.
Quá trình chuyển đổi bằng dòng quét (scan-converting) là bước quan trọng trong lập trình đồ họa, nơi các công cụ đồ họa cung cấp hàm để mô tả ảnh dưới dạng các đối tượng hình học cơ sở (output primitives) Những đối tượng này, bao gồm điểm, đoạn thẳng, đường tròn, đường conics, và các vùng tô đa giác, được mô tả qua tọa độ và thuộc tính hiển thị Chương này sẽ khảo sát các thuật toán hiển thị các đối tượng đồ họa cơ sở trên thiết bị hiển thị dạng điểm, giúp tạo ra những hình ảnh phức tạp hơn từ các đối tượng cơ bản.
Các thuật toán này chuyển đổi các đối tượng đồ họa từ hệ tọa độ thực thành 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à hiệu quả và chính xác trong việc chuyển đổi.
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 liên quan đến việc rời rạc hóa và nguyên hóa các đối tượng để xác định các điểm nguyên xấp xỉ một cách tối ưu Đ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ị cần phải tương tự như đối tượng trong lưới tọa độ thực và tạo cảm giác liên tục, liền mạch Sự liên tục này trên lưới nguyên được duy trì nhờ vào khả năng của mắt người không thể phân biệt được hai điểm quá gần nhau.
Các đối tượng đồ họa cơ sở là thành phần quan trọng trong cấu trúc các đối tượng phức tạp, vì vậy các thuật toán hiển thị 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, hay còn gọi là hệ tọa độ thực, là công cụ quan trọng để mô tả các đối tượng trong thế giới thực Trong số các hệ tọa độ thực, hệ tọa độ phổ biến nhất được sử dụng là hệ tọa độ địa lý.
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 tùy chọn bất kỳ đơn vị đo lường nào như foot, cm, mm, km, inch, và điều chỉnh kích thước theo nhu cầu Hệ tọa độ thiết bị cũng hỗ trợ việc này, mang lại sự linh hoạt trong việc sử dụng.
Hệ tọa độ thiết bị là hệ thống tọa độ được sử dụng bởi 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ụ cho việc 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ị, hình ảnh hiển thị trên một thiết bị có thể chính xác nhưng không đảm bảo tính chính xác trên thiết bị khác Để giải quyết vấn đề này, người ta đã phát triển Hệ Tọa Độ Thiết Bị Chuẩn (NDCS - Normalized Device Coordinate System), nhằm cung cấp một tiêu chuẩn chung cho tất cả các thiết bị, cho phép mô tả hình ảnh một cách độc lập với từng thiết bị cụ thể.
Trong hệ tọa độ chuẩn, các giá trị tọa độ x và y được xác định trong khoảng [0,1], tạo thành một không gian hình vuông đơn vị Hình vuông này có điểm góc trái dưới tại (0,0) và góc phải trên tại (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 xác định khi biết hai điểm trên 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 đó hệ số góc m được tính bằng công thức m = 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) Điều này giúp tăng cường khả năng sáng tạo và linh hoạt trong việc thiết kế đồ họa.
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 các ký tự Hình dạng của mỗi ký tự có thể được xác định qua một tập các đường gấp khúc trong font vector hoặc là 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 giữa hai điểm P1(x1,y1) và P2(x2,y2) trên màn hình, chúng ta cần xác định các pixel sẽ được hiển thị, nhằm tái hiện chính xác hình ảnh của đoạn thẳng thực tế.
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 được liền nét, các điểm lựa chọn cho (x i+1, y i+1) chỉ có thể là một trong 8 điểm được đánh số từ 1 đến 8 trong hình 1.
Ta có tọa độ các điểm là:
Phương của đường thẳng sẽ hướng dẫn việc lựa chọn một trong 8 điểm Cách chọn các điểm sẽ phụ thuộc vào từng thuật toán, dựa trên việc 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