MENU

Nhà Việt

Phục Vụ

24/24

Email Nhà Việt

[email protected]

Giáo trình Kỹ thuật đồ hoạ

  1. LỜI NÓI ĐẦU
    Đồ họa máy tính là một trong những lĩnh vực hấp dẫn và phát triển rất mau lẹ, nó làm thay đổi hoàn toàn việc tương tác giữ người và máy. Nhờ vào đồ họa máy tính mà một loạt các ứng dụng máy tính radium đời, đồ họa giúp cho việc giao tiếp với máy tính trở nên dễ dàng hơn, nó được ứng dụng trong nhiều lĩnh vực như khoa học công nghệ, y học, kiến trúc, giải trí…. Trên cơ sở đó, môn kỹ thuật đồ họa đã được đưa vào giảng dạy ở chuyên ngành công nghệ thông tin và các lĩnh vực liên quan khác trong các trường đại học. Môn này là tiền đề cung cấp cho sinh viên các lý thuyết cơ sở nhằm kiến tạo và xử lý thông tin dưới dạng hình ảnh giúp cho việc giao tiếp với máy tính dễ dàng hơn trong các môn ngành khác như : xử lý ảnh, kỹ thuật computer-aided design. Giáo trình này được biên soạn dựa trên đề cương môn đồ họa máy tính thuộc chương trình đào tạo công nghệ thông tin bậc đại học của bộ giáo dục và đào tạo, nội dung giáo trình tập trung vào các vấn đề cơ bản của đồ họa hai chiều và bachelor of arts chiều. Giáo trình cung cấp một lượng kiến thức đầy đủ và chọn lọc bao gồm các khái niệm cơ bản, các thuật toán cơ sở của đồ họa máy tính giúp người đọc có thể tìm hiểu, xây dựng các chương trình ứng dụng đồ họa. Giáo trình được chia làm barium chương, chương one giói thiệu về đồ hoạ máy tính, chương hai trình bày các phép biến đổi cũng như các thuật toán liên quan đến đồ họa hai chiều, chương bachelor of arts trình bày các vấn đề liên quan đến đồ họa bachelor of arts chiều như các phép biến đổi bachelor of arts chiều, phép chiếu, khử khuất …. Các vấn đề trình bày trong giáo trình này được tham khảo trong các tài liệu kinh điển về đồ họa máy tính ( computer artwork ), giáo trình đồ họa của đại học khoa học tự nhiên và một số tài liệu đồ hoạ của các trường đại học quốc tế. Tuy nhiên trong quá trình biên soạn không thể không tránh khỏi sai sót, tôi xin trân trọng tiếp thu ý kiến của các bạn đọc cũng như các bạn đồng nghiệp. Tác giả thorium Trần Minh Nhật one
  2. Chương 1: Tổng quan về kỹ thuật đồ hoạ 1.1. Các khái niệm tổng quan của kỹ thuật đồ hoạ máy tính 1.1.1. Lịch sử phát triển Thuật ngữ đồ họa máy tính ( computer graphic ) được đề xuất bởi một nhà khoa học người Mỹ tên là William fetter vào năm 1960. chi đó ông đang nghiên cứu xây dựng mô hình buồn lái máy true laurel cho hãng Boeing của Mỹ. William fetter đã dựa trên các hình ảnh barium chiều của mô hình của người phi công trong buồng lái máy alcove để xây dựng nên một mô hình tối ưu cho buồng lái máy bay boeing. Đây là phương pháp nghiên cứu rất mới vào thời điểm đó. Phương pháp này có những tính năng vuợt trội hơn tất cả các phương pháp xây dựng mô hình buồng lái trước đó. Phương pháp này cho phép các nhà thiết kế quan sát một cách trực quan vị trí của phi công trong buồng lái. Wiliam fetter đã đặt tên cho phương pháp của mình là computer graphic. Đầu những năm 1980, máy tính chỉ dùng trong các lĩnh vực chuyên môn hóa với chế độ hiển thị văn bản. Sau đó máy tính cá nhân right ascension đời, ứng dụng đồ họa máy tính nó được xây dựng với chế độ hiển thị đồ họa điểm ảnh, trong đó các spot zero, one là đại diện cho một khối của dãy các điểm ( pixel, viết tắt của picture component ) trên màn hình. Chế độ đồ họa có giao diện thuận tiện cho phép người dùng giao tiếp với máy tính một cách đơn giản. Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh nhất của tin học. Ngay từ chi xuất hiện, đồ họa máy tính đã có sức lôi cuốn mãnh liệt, cuốn hút rất nhiều người ở nhiều lĩnh vực khác nhau như khoa học, nghệ thuật, kinh doanh, quản lí, … Tính hấp dẫn và đa dạng của đồ họa máy tính có thể được minh họa rất trực quan thông qua việc khảo sát các ứng dụng của nó. 1.1.2. Kỹ thuật đồ hoạ 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 right ascension hình ảnh. Các vấn đề liên quan tới công việc này bao 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. computer graphic ( Kỹ thuật đồ hoạ máy tính ) là một lĩnh vực Công nghệ thông tin mà ở đó nghiên cứu để tạo right ascension các công cụ xây dựng, xử lý, lưu trữ các mô hình và hình ảnh của đối tượng. two
  3. 1.2. Các kỹ thuật đồ hoạ 1.2.1. Kỹ thuật đồ hoạ điểm ( sample based artwork ) Với kỹ thuật này các mô hình, hình ảnh của đối tượng được cấu tạo bởi các điểm ảnh ( pixel ). tantalum có thể thay đổi các đối tượng bằng cách thay đổi thuộc tính ( vị trí, màu sắc, độ sáng .. ) hoặc có thể xóa các điểm của đối tượng. 1.2.2. Kỹ thuật đồ hoạ vector ( vector graphics ) Có thể định nghĩa đồ hoạ vector : Đồ hoạ vector = geometric model + supply geometric model : mô hình hình học của đối tượng. rendering : quá trình tô trát để hiển thị từng điểm của đối tượng. Đồ hoạ điểm – Hình ảnh và mô hình của các vật thể được biểu diễn bởi tập hợp các điểm của lưới ( grid ) Đồ hoạ vector – Không thay đổi thuộc tính của từng điểm trực tiếp – Thay đổi thuộc tính của các pixel = > thay đổi từng phần và từng vùng của hình ảnh. – Xử lý với từng thành phần hình học cơ sở của nó và thực hiện quá trình tô trát và hiển thị lại. – copy được các pixel từ một hình ảnh này sing hình ảnh khác. – 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.2.3. Phân loại của đồ hoạ máy tính Phân loại theo các lĩnh vực của đồ hoạ máy tính : kiến tạo đồ họa và xử lý đồ họa. – Kiến tạo đồ họa : CAD/CAM system, đồ hoạ minh hoạ, đồ hoạ hoạt hình và nghệ thuật. o Các hệ CAD/CAM ( calculator help Design/Computer help manufacture system ) : kỹ thuật đồ hoạ tập hợp các công cụ, các kỹ thuật trợ giúp cho thiết kế các chi tiết và các hệ thống khác nhau : hệ thống cơ, hệ thống điện, hệ thống điện tử…. three
  4. o Đồ hoạ
    1. LỜI NÓI ĐẦU
      Đồ

      họa máy tính là một trong những lĩnh vực hấp dẫn và phát triển rất mau
      lẹ, nó làm thay đổi hoàn toàn việc tương tác giữ người và máy. Nhờ vào đồ họa
      máy tính mà một loạt các ứng dụng máy tính ra đời, đồ họa giúp cho việc giao tiếp
      với máy tính trở nên dễ dàng hơn, nó được ứng dụng trong nhiều lĩnh vực như
      khoa học công nghệ, y học, kiến trúc, giải trí….
      Trên cơ sở đó, môn kỹ thuật đồ họa đã được đưa vào giảng dạy ở chuyên
      ngành công nghệ thông tin và các lĩnh vực liên quan khác trong các trường đại
      học. Môn này là tiền đề cung cấp cho sinh viên các lý thuyết cơ sở nhằm kiến tạo
      và xử lý thông tin dưới dạng hình ảnh giúp cho việc giao tiếp với máy tính dễ dàng
      hơn trong các môn ngành khác như : xử lý ảnh, kỹ thuật CAD.
      Giáo trình này được biên soạn dựa trên đề cương môn đồ họa máy tính thuộc
      chương trình đào tạo công nghệ thông tin bậc đại học của bộ giáo dục và đào tạo,
      nội dung giáo trình tập trung vào các vấn đề cơ bản của đồ họa hai chiều và ba
      chiều. Giáo trình cung cấp một lượng kiến thức đầy đủ và chọn lọc bao gồm các
      khái niệm cơ bản, các thuật toán cơ sở của đồ họa máy tính giúp người đọc có thể
      tìm hiểu, xây dựng các chương trình ứng dụng đồ họa.
      Giáo trình được chia làm ba chương, chương 1 giói thiệu về đồ hoạ máy tính,
      chương hai trình bày các phép biến đổi cũng như các thuật toán liên quan đến đồ
      họa hai chiều, chương ba trình bày các vấn đề liên quan đến đồ họa ba chiều như
      các phép biến đổi ba chiều, phép chiếu, khử khuất ….
      Các vấn đề trình bày trong giáo trình này được tham khảo trong các tài liệu
      kinh điển về đồ họa máy tính (computer graphics), giáo trình đồ họa của đại học
      khoa học tự nhiên và một số tài liệu đồ hoạ của các trường đại học quốc tế. Tuy
      nhiên trong quá trình biên soạn không thể không tránh khỏi sai sót, tôi xin trân
      trọng tiếp thu ý kiến của các bạn đọc cũng như các bạn đồng nghiệp.
      Tác giả
      Ths Trần Minh Nhật
      1

    2. Chương 1: Tổng

      quan về kỹ thuật đồ hoạ
      1.1. Các khái niệm tổng quan của kỹ thuật đồ hoạ máy tính
      1.1.1. Lịch sử phát triển
      Thuật ngữ đồ họa máy tính ( Computer Graphics) được đề xuất bởi một nhà
      khoa học người Mỹ tên là William Fetter vào năm 1960. Khi đó ông đang nghiên
      cứu xây dựng mô hình buồn lái máy bay cho hãng Boeing của Mỹ. William Fetter
      đã dựa trên các hình ảnh ba chiều của mô hình của người phi công trong buồng lái
      máy bay để xây dựng nên một mô hình tối ưu cho buồng lái máy bay boeing. Đây
      là phương pháp nghiên cứu rất mới vào thời điểm đó. Phương pháp này có những
      tính năng vuợt trội hơn tất cả các phương pháp xây dựng mô hình buồng lái trước
      đó. Phương pháp này cho phép các nhà thiết kế quan sát một cách trực quan vị trí
      của phi công trong buồng lái. Wiliam Fetter đã đặt tên cho phương pháp của mình
      là Computer Graphics.
      Đầu những năm 1980, máy tính chỉ dùng trong các lĩnh vực chuyên môn hóa
      với chế độ hiển thị văn bản. Sau đó máy tính cá nhân ra đời, ứng dụng đồ họa máy
      tính nó được xây dựng với chế độ hiển thị đồ họa điểm ảnh, trong đó các bit 0, 1 là
      đại diện cho một khối của dãy các điểm (pixel, viết tắt của picture element) trên
      màn hình. Chế độ đồ họa có giao diện thuận tiện cho phép người dùng giao tiếp
      với máy tính một cách đơn giản.
      Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh
      nhất của tin học. Ngay từ khi xuất hiện, đồ họa máy tính đã có sức lôi cuốn mãnh
      liệt, cuốn hút rất nhiều người ở nhiều lĩnh vực khác nhau như khoa học, nghệ
      thuật, kinh doanh, quản lí, … Tính hấp dẫn và đa dạng của đồ họa máy tính có thể
      được minh họa rất trực quan thông qua việc khảo sát các ứng dụng của nó.
      1.1.2. Kỹ thuật đồ hoạ 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. Các vấn đề liên quan tới công việc này bao 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.
      Computer Graphics (Kỹ thuật đồ hoạ máy tính) là một lĩnh vực Công nghệ
      thông tin mà ở đó nghiên cứu để tạo ra các công cụ xây dựng, xử lý, lưu trữ các
      mô hình và hình ảnh của đối tượng.
      2

    3. 1.2. Các kỹ

      thuật đồ hoạ
      1.2.1. Kỹ thuật đồ hoạ điểm (Sample based Graphics)
      Với kỹ thuật này các mô hình, hình ảnh của đối tượng được cấu tạo bởi các
      điểm ảnh (pixel). Ta có thể thay đổi các đối tượng bằng cách thay đổi thuộc tính(vị
      trí, màu sắc, độ sáng..) hoặc có thể xóa các điểm của đối tượng.
      1.2.2. Kỹ thuật đồ hoạ vector(Vector Graphics)
      Có thể định nghĩa đồ hoạ vector: Đồ hoạ vector = geometrical model + rendering
      Geometrical model : mô hình hình học của đối tượng.
      Rendering :quá trình tô trát để hiển thị từng điểm của đối tượng.
      Đồ hoạ điểm
      – Hình ảnh và mô hình của các vật thể
      được biểu diễn bởi tập hợp các điểm
      của lưới (grid)
      Đồ hoạ vector
      – Không thay đổi thuộc tính của từng
      điểm trực tiếp
      – Thay đổi thuộc tính của các pixel =>
      thay đổi từng phần và từng vùng của
      hình ảnh.
      – Xử lý với từng thành phần hình học cơ
      sở của nó và thực hiện quá trình tô trát
      và hiển thị lại.
      – Copy được các pixel từ một hình ảnh
      này sang hình ảnh khác.
      – 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.2.3. Phân loại của đồ hoạ máy tính
      Phân loại theo các lĩnh vực của đồ hoạ máy tính: kiến tạo đồ họa và xử lý đồ
      họa.
      – Kiến tạo đồ họa: CAD/CAM System, đồ hoạ minh hoạ, đồ hoạ hoạt hình và
      nghệ thuật.
      o Các hệ CAD/CAM (Computer Aided Design/Computer Aided
      Manufacture System): kỹ thuật đồ hoạ tập hợp các công cụ, các kỹ
      thuật trợ giúp cho thiết kế các chi tiết và các hệ thống khác nhau: hệ
      thống cơ, hệ thống điện, hệ thống điện tử….
      3

    4. o Đồ hoạ

      minh hoạ (Presentation Graphics): gồm các công cụ giúp
      hiển thị các số liệu thí nghiệm một cách trực quan, dựa trên các mẫu
      đồ thị hoặc các thuật toán có sẵn.
      o Đồ hoạ hoạt hình và nghệ thuật: bao gồm các công cụ giúp cho các
      hoạ sĩ, các nhà thiết kế phim hoạt hình chuyên nghiệp làm các kỹ
      xảo hoạt hình, vẽ tranh… Ví dụ: phần mềm 3D Studio, 3D
      Animation, 3D Studio Max.
      – Xử lý đồ họa: Xử lý ảnh, Kỹ thuật nhận dạng
      o Kỹ thuật xử lý ảnh (Computer Imaging): sau quá trình xử lý ảnh cho
      ta ảnh số của đối tượng. Trong quá trình xử lý ảnh sử dụng rất nhiều
      các kỹ thuật phức tạp: kỹ thuật khôi phục ảnh, kỹ thuật làm nổi ảnh,
      kỹ thuật xác định biên ảnh.
      o Kỹ thuật nhận dạng (Pattern Recognition): từ những ảnh mẫu có sẵn
      ta phân loại theo cấu trúc, hoặc theo các tiêu trí được xác định từ
      trước và bằng các thuật toán chọn lọc để có thể phân tích hay tổng
      hợp ảnh đã cho thành một tập hợp các ảnh gốc, các ảnh gốc này
      được lưu trong một thư viện và căn cứ vào thư viện này ta xây dựng
      được các thuật giải phân tích và tổ hợp ảnh.
      Phân loại theo hệ toạ độ:tọa độ 2 chiều(2D) và 3 chiều(3D)
      – Kỹ thuật đồ hoạ hai chiều: là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ
      hai chiều (hệ toạ độ phẳng), sử dụng rất nhiều trong kỹ thuật xử lý bản đồ,
      đồ thị.
      – Kỹ thuật đồ hoạ ba chiều: là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ ba
      chiều, đòi hỏi rất nhiều tính toán và phức tạp hơn nhiều so với kỹ thuật đồ
      hoạ hai chiều.
      1.2.4. Các ứng dụng tiêu biểu của đồ hoạ máy tính
      Ngày nay, đồ họa máy tính được sử dụng trong rất nhiều lĩnh vực khác nhau
      như công nghiệp, thương mại, quản lí, giáo dục, giải trí, … Số lượng các chương
      trình đồ họa ứng dụng thật khổng lồ và phát triển liên tục, sau đây là một số ứng
      dụng tiêu biểu.
      1.2.4.1 Hỗ trợ thiết kế (CAD – Computer-Aided Design)
      Hỗ trợ thiết kế được xem như một ứng dụng chính của đồ họa tương tác
      đối tượng không gian, trong đó đối tượng được xây dựng trực tiếp như là mô
      hình thiết kế. Ngày nay CAD đã được sử dụng hầu hết trong việc thiết kế các
      4

    5. cao ốc, ô

      tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, và rất
      nhiều sản phẩm khác.
      Sử dụng các chương trình này, đầu tiên các đối tượng được hiển thị dưới
      dạng các phác thảo của phần khung (wireframe outline), mà 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. Sử
      dụng kĩ thuật này, 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, ….
      Một khi đã thiết kế xong phần khung của đối tượng, 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 kết quả cuối cùng
      rất gần với thế giới thực .
      1.2.4.2 Giao diện người dùng và máy tính
      Hầu hết các ứng dụng đều phải có giao diện giao tiếp với người dùng
      dựa vào việc dùng hệ thống cửa sổ để quản lý các hoạt động. Giao diện đồ
      họa thực sự là một cuộc cách mạng mang lại sự thuận tiện và thoải mái cho
      người dùng ứng dụng. Các ứng dụng dựa trên hệ điều hành MS Windows là
      một minh họa rất trực quan của giao diện đồ họa. Các chức năng của các ứng
      dụng này được thiết kế cho người dùng làm việc thông qua các biểu tượng
      mô tả chức năng đó. Ví dụ, chức năng lưu tập tin được hiểu thông qua biểu
      tượng đĩa mềm, chức năng in ấn được hiểu thông qua biểu tượng máy in, …
      Để chọn các chức năng, người dùng sử dụng chuột trỏ đến và nhấn vào các
      biểu tượng tương ứng. Điểm thuận lợi chính khi dùng biểu tượng là kích
      thước không gian mà nó chiếm ít hơn nhiều so với dùng văn bản để mô tả
      cho cùng một chức năng, ngoài ra việc nắm bắt các chức năng qua các biểu
      tượng sẽ dễ dàng hơn rất nhiều khi người dùng gặp trở ngại về mặt ngôn ngữ.
      Các ứng dụng có giao diện đồ họa còn cho phép người dùng khả năng
      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 nhau cùng
      một lúc.
      1.2.4.3 Biểu diễn thông tin
      Đây là các ứng dụng sử dụng đồ họa máy tính để phát sinh các biểu đồ,
      đồ thị minh họa mối quan hệ giữa nhiều đối tượng với nhau. Các ứng dụng
      này thường được dùng để tóm lược các dữ liệu về 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í, … một cách có
      hiệu quả. Tất cảc đều được trình bày đẹp, ngắn gọn, dễ sử dụng. Trong
      thương mại, đồ họa máy tính cũng tạo ra các hình ảnh gây ấn tượng và thu
      hút sự chú ý.
      5

    6. 1.2.4.4 Lĩnh vực

      giải trí, nghệ thuật
      Đối với các nhà họa sĩ, tạo mẫu, các chương trình máy tính như Paint
      Shop Pro, Adobe Photoshop, 3D Studio, … đã giúp họ rất đắc lực cho các
      họa sĩ, các nhà tạo mẫu trong việc thiết kế các hình ảnh sống động, và rất
      thực. Với các 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ư đang làm việc ngoài đời 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, … làm cho họ cảm
      thấy rất thoải mái và tiện lợi.
      Ngoài ra đồ họa máy tính còn giúp tạo ra các chương trình trò chơi, giải
      trí; hỗ trợ cho các kĩ xảo điện ảnh, cho các nhà làm phim. Có nhiều bộ phim
      rất nổi 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), …
      1.2.4.5 Giáo dục và đào tạo
      Thể hiện rỏ nhất thông qua các chương trình mô phỏng, các chương
      trình này mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng hóa
      học, hoạt động của các gói tin trên mạng máy tính, … được dùng rất nhiều
      trong việc hỗ trợ giảng dạy.
      Trong đào tạo, các ứng dụng mô phỏng đượ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, xa hơn nữa là các
      chương trình mô phỏng quá trình phóng phi thuyền, đây là bước chuẩn bị
      quan trọng giúp tiết kiệm chi phí hơn so với các thí nghiệm bằng mô hình vật
      lý thực.
      6

    7. hình 1.1 –

      Chương trình học về máy tính
      1.2.4.6 Bản đồ học
      Đồ họa máy tính được sử dụng để đưa ra sơ đồ vị trí địa lý và các hiện
      tương tự nhiên một cách chính xác từ số liệu đo được. Ví dụ như bản đồ địa
      lý, bản đồ thời tiết, bản đồ mật độ dân số, bản đồ khai thác cho việc khoan và
      khai mỏ, biểu đồ hải dương học….
      1.2.5. Các chuẩn giao diện của hệ đồ hoạ
      Mục tiêu căn bản của phần mềm đồ hoạ được chuẩn là tính tương thích.
      Khi các công cụ được thiết kế với hàm đồ hoạ 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.
      GKS (Graphics Kernel System): chuẩn xác định các hàm đồ hoạ chuẩn,
      được thiết kế như một tập hợp các công cụ đồ hoạ hai chiều và ba chiều.
      GKS Functional Description, ANSI X3.124 – 1985.GKS – 3D
      Functional Description, ISO Doc #8805:1988.
      CGI (Computer Graphics Interface System): hệ chuẩn cho các phương
      pháp giao tiếp với các thiế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.
      7

    8. VRML (Virtual Reality

      Modeling Language): ngôn ngữ thực tại ảo, một
      hướng phát triển trong công nghệ hiển thị được đề xuất bởi hãng Silicon
      Graphics, sau đó đã được chuẩn hóa như một chuẩn công nghiệp.
      PHIGS (Programmers Hierarchical Interactive Graphics Standard): xác
      định các phương pháp chuẩn cho các mô hình thời gian thực và lập trình
      hướng đối tượng.
      PHIGS Functional Description, ANSI X3.144 – 1985.+ Functional
      Description, 1988, 1992.
      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ư viện đồ hoạ của hãng Microsoft, Direct X/Direct3D
      1997.
      1.3. Phần cứng đồ hoạ (Graphics hardware)
      1.3.1. Các thành phần phần cứng của hệ đồ hoạ tương tác
      Cũng như mọi lĩnh vực trong công nghệ thông tin, một hệ thống sử dụng kỹ
      thuật đồ họa tương tác là một hệ thống xử lý thông tin bao gồm ba thành phần với
      các thao tác tương ứng:
      – Nhập dữ liệu: thông qua các thết bị nhập(chuột, bàn phím, máy quét, …).
      – Xử lý và lưu dữ liệu.
      – Hiển thị kết xuất kết quả: thông qua các thiết bị như màn hình, máy in, …
      Ngoài những đặc thù chung đã liệt kê ở trên, hệ thống kỹ thuật đồ họa tương
      tác còn có một đặc điểm rất đặc trưng của mình: trong hệ thống này, các thông tin
      và các dữ liệu đặc trưng được hiển thị trên màn hình một cách trực quan và người
      sử dụng có thể quan sát, theo dõi và thay đổi giá trị hoặc khuông dạng của chúng
      một cách tương tác và ngay lập tức các thay đổi này được hệ thống ghi nhận và xử
      lý. Kết quả của sự thay đổi sẽ được hệ thống xử lý ngay trên các mô hình, cấu trúc
      hoặc hình ảnh của các đối tượng và hiển thị chúng ngay trên màn hình như người
      sử dụng mong muốn.
      8
      Nhập dữ
      liệu
      Xử lý &
      lưu trữ
      Hiển thị
      kết quả
      USER

    9. Hình 1.2 –

      Sơ đồ tương tác
      Như mô hình chung của hệ thống sử dụng kỹ thuật đồ họa tương tác, chúng
      ta thấy người sử dụng có khả năng giao tiếp tương tác với hệ thống ở cả ba giai
      đoạn trong quá trình xử lý thông tin.
      Một hệ thống đồ họa tương tác đầu tiên được thiết kế và xây dựng bởi Ivan
      Sutherland và mang tên Sketchpad. Hệ thống này được dùng để thiết kế mạch điện
      và bao gồm những thành phần sau:
      – Màn hình CRT
      – Bút chì sáng và một bàn phím
      – Máy tính chứa chương trình xử lý thông tin
      Người dùng có thể vẽ mạch điện trực tiếp lên màn hình thông qua bút sáng,
      chương trình sẽ phân tích và tính toán những thông số cần thiết của mạch điện do
      người dùng vẽ nên.
      1.3.2. Máy in
      – Dot size: đường kính của một điểm in bé nhất mà máy in có thể in được. Ví
      dụ 8 – 20/ 100inch, 5/1000inch.
      – Addressability: khả năng địa chỉ hoá các điểm in có thể có trên một đơn vị
      độ dài (dot per inch).
      Dot size Point per inch
      8 – 20/ 100inch 200, 600
      5/1000inch 1500
      – Số lượng màu có thể vẽ trên một điểm.
      1.3.3. Màn hình CRT
      Hình 1.3 – Cấu tạo của CRT
      Màn hình là thiết bị hiển thị thông dụng nhất trong một hệ đồ họa. Các thao
      tác của hầu 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).
      9

    10. Hình trên minh

      họa thao tác cơ sở của một ống tia âm cực. Một chùm các tia
      điện tử (tia âm cực) phát ra từ một súng điện tử, vượt qua các hệ 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. Tại mỗi vị trí tương tác với tia điện tử, hạt phosphor
      sẽ phát ra một chấm sáng nhỏ. Vì á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. Một trong
      các cách đó là lặp đi lặp lại nhiều lần việc vẽ lại ảnh thật nhanh bằng cách hướng
      các tia điện tử trở lại vị trí cũ. Kiểu hiển thị này gọi là refresh CRT.
      Có nhiều loại phosphor được dùng trong một CRT. Ngoài màu sắc ra, điểm
      khác nhau chính giữa các loại phosphor là “độ bền” (persistent), đó là khoảng thời
      gian phát sáng sau khi tia CRT không còn tác động. Lớp phosphor có độ bền thấp
      cần tốc độ làm tươi cao hơn để giữ cho hình ảnh trên 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. Lớp phosphor
      có độ bền cao thường được dùng cho việc hiển thị các ảnh tĩnh, độ phức tạp cao.
      Mặc dù một số loại phosphor có độ bền lớn hơn 1 giây, tuy nhiên các mà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 các điểm có thể hiển thị trên một CRT được gọi là độ phân
      giải (resolution). Một định nghĩa chính xác hơn của độ phân giải là số lượng các
      điểm trên một centimet mà có thể được vẽ theo chiều ngang và chiều dọc, mặc dù
      nó thường được xem như là tổng số điểm theo mỗi hướng.
      Kích thước vật lí của màn hình đồ họa được tính từ độ dài của đường chéo
      màn hình, thường dao động từ 12 đến 27 inch hoặc lớn hơn. Một màn hình CRT
      có thể được kết hợp với nhiều loại máy khác nhau, do đó số lượng các điểm trên
      màn hình có thể được vẽ thật sự còn tùy thuộc vào khả năng của hệ thống mà nó
      kết hợp vào.
      Một thuộc tính khác của màn hình nữa là tỉ số phương (aspect ratio). Tỉ số
      phương là tỉ lệ của các điểm dọc và các điểm ngang cần để phát sinh các đoạn
      thẳng có độ dài đơn vị theo cả hai hướng trên màn hình (trong một số trường hợp
      người ta thường dùng tỉ số phương như là tỉ số của các điểm theo chiều ngang so
      với các điểm theo chiều dọc). Với các màn hình có tỉ số phương khác 1, dễ dàng
      nhận thấy là các hình vuông hiển thị trên nó sẽ có dạng hình chữ nhật, các hình
      tròn sẽ có dạng hình ellipse. Thực ra khái niệm tỉ số phương xuất phát từ bản chất
      khoảng cách (nếu tính cùng một đơn vị độ dài) 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.
      Màn hình dạng điểm (raster – scan display):
      10

    11. Màn hình dạng

      điểm là dạng thường gặp nhất trong số các dạng màn hình sử
      dụng CRT dựa trên công nghệ truyền hình.
      Trong hệ thống này, chùm tia điện tử sẽ được quét ngang qua màn hình, mỗi
      lần một dòng và quét tuần tự từ trên xuống dưới. Sự bật tắt của các điểm sáng trên
      màn hình phụ thuộc vào cường độ của tia điện tử và đây chính là cơ sở của việc
      tạo ra hình ảnh trên màn hình.
      Mỗi điểm trên màn hình được gọi là một pixel hay là pel (viết tắt của picture
      element). Các thông tin về hình ảnh hiển thị trên màn hình được lưu trữ trong một
      vùng bộ nhớ 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.
      Hình 1.4 – Quá trình tạo hình ảnh của các tia quét
      Để thay đổi các hình ảnh cần hiển thị, các giá trị tương ứng với vị trí và độ
      sáng phải được đặt vào vùng đệm khung. Hình 1.8 minh họa các giá trị tương ứng
      trong vùng đệm khung để hiển thị hình ảnh của chữ A trên màn hình.
      Đối với màn hình đen trắng, vùng đệm khung còn được gọi là bitmap, với
      các màn hình khác vùng đệm khung thường được gọi là pixmap.
      11

    12. Để tạo ra

      các ảnh đen trắng, đơn giản chỉ cần lưu thông tin của mỗi pixel
      bằng 1 bit (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). Trong trường hợp ảnh nhiều màu, người ta cần nhiều bit hơn, nếu
      thông tin của mỗi pixel được lưu bằng b bit, thì ta có thể có 2b
      giá trị màu phân
      biệt cho pixel đó.
      Hình 1.5 – Song ánh giữa vùng đệm khung và màn hình
      Trong các màn hình màu, người ta định nghĩa tập các màu làm việc trong
      một bảng tra (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.
      Số phần tử của LUT được xác định từ số lượng các bits/pixel. Nếu mỗi phần
      tử của 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.
      Việc làm tươi trên màn hình dạng này được thực hiện ở tốc độ 60 đến 80
      frame/giây. Đôi khi tốc độ làm tươi còn được biểu diễn bằng đơn vị Hertz (Hz – số
      chu kì/ giây), trong đó một chu kì tương ứng với một frame. Sử dụng đơn vị này,
      chúng ta có thể mô tả 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.
      12

    13. Hình 1.6 –

      Hoạt động của màn hình interlaced
      Trong một số màn hình, mỗi frame được hiển thị thành hai giai đoạn sử dụng
      kĩ thuật 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.
      1.3.4. Màn hình tinh thể lỏng (Liquid Crystal Display – LCD)
      Dựa vào công nghệ truyền ánh sáng qua điện cực mà đặt giữa là cuộn dây
      xoắn. Khi chưa có từ trường (chưa có dòng điện) ở cuộn dây thì ánh sáng truyền
      thẳng, khi có từ trường thì ánh sáng truyền đổi chiều.
      Hình 1.7 – Công nghệ truyền ánh sáng trong màn hình tinh thể lỏng
      Tóm tắt
      Sự ra đời của đồ họa máy tính thực sự là cuộc cách mạng trong giao tiếp giữa
      người dùng và máy tính. Với lượng thông tin trực quan, đa dạng và phong phú
      được chuyển tải qua hình ảnh, các ứng dụng đồ họa máy tính đã lôi cuốn nhiều
      người nhờ tính thân thiện, dễ dùng, kích thích khả năng sáng tạo và tăng đáng kể
      hiệu suất làm việc.
      13

    14. Đồ họa máy

      tính ngày nay được ứng dụng rất rộng rãi trong 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 rất đa
      dạng, phong phú và 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 nào mà không sử dụng kĩ thuật đồ họa để làm tăng tính hấp
      dẫn của mình.
      Một hệ đồ họa bao giờ cũng có hai thành phần chính đó là phần cứng và
      phần mềm..
      Thành phần phần cứng bao gồm các thiết bị hiển thị (hay là thiết bị xuất) và
      các thiết bị nhập. Tiêu biểu nhất trong các thiết bị hiển thị là màn hình mà cơ chế
      hoạt động dựa trên cấu tạo của ống tia âm cực CRT. Các thiết bị nhập dữ liệu
      thường gặp bao gồm bàn phím, chuột.
      Phần mềm đồ họa có thể chia làm hai loại đó là các công cụ lập trình như các
      hàm thư viện của C, Pascal, GL, … và các ứng dụng phục vụ cho một mục đích
      nào đó như AutoCAD, Photoshop, … Hướng tiếp cận của chúng ta trong tài liệu
      này ở mức độ của người lập trình, nghĩa là chúng ta sẽ tìm hiểu các thuật toán,
      các nguyên lí để xây dựng nên các ứng dụng đồ họa chứ không phải là học cách sử
      dụng các phần mềm như AutoCAD, Photoshop, …
      14

    15. Bài tập
      1. Cấu

      tạo và nguyên lí hoạt động của màn 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, … của màn hình dạng
      này.
      2. Ý nghĩa và hoạt động của bảng tra LUT.
      3. Ba màn hình có độ phân giải lần lượt là 640×480, 1024×768, 1280×1024.
      Hãy cho biết kích thước của vùng đệm khung (tính bằng byte) nếu mỗi
      pixel được mô tả bằng 8 bit, 12 bit, 24 bit.
      4. Các hệ màu. Mối liên hệ giữa chúng.
      5. Quy trình hiển thị đối tượng. Ý nghĩa của các hệ tọa độ.
      6. Tập các hàm đồ họa của một công cụ lập trình. Liên hệ tới các thư viện đồ
      họa của các ngôn ngữ đã học như C, Pascal, …
      7. Tại sao cần phải chuẩn hóa các phần mềm ? Tìm hiểu các chuẩn GKS,
      PHIGS.
      15

    16. Chương 2: Các

      giải thuật sinh thực thể cơ sở
      GIỚI THIỆU
      Bất kì một ảnh mô tả thế giới thực nào bao giờ cũng được cấu trúc từ tập các
      đối tượng đơn giản hơn. Ví dụ một ảnh thể hiện bài trí của một căn phòng sẽ được
      cấu trúc từ các đối tượng như cây cảnh, tủ kính, bàn ghế, tường, ánh sáng đèn, …
      Với các ảnh đồ họa phát sinh bằng máy tính, hình dạng và màu sắc của mỗi đối
      tượng có thể được mô tả riêng biệt bằng hai cách : hoặc là bằng dãy các pixel
      tương ứng hoặc là bằng tập các đối tượng hình học cơ sở như đoạn thẳng hay vùng
      tô đa giác, … Sau đó, các ảnh sẽ được hiển thị bằng cách nạp các pixel vào vùng
      bộ nhớ màn hình.
      Với các ảnh được mô tả bằng các đối tượng hình học cơ sở, cần phải có một
      quá trình chuyển các đối tượng này về dạng ma trận các pixel trước. Quá trình này
      còn được gọi là quá trình chuyển đổi bằng dòng quét (scan-converting). Bất kì
      công cụ lập trình đồ họa nào cũng phải cung cấp các hàm để mô tả một ảnh dưới
      dạng các đối tượng hình học cơ sở hay còn gọi là các đối tượng đồ họa cơ sở
      (output primitives) và các hàm cho phép kết hợp tập các đối tượng cơ sở để tạo
      thành đối tượng có cấu trúc phức tạp hơn.
      Mỗi đối tượng đồ họa cơ sở được mô tả thông qua dữ liệu về tọa độ và các
      thuộc tính của nó, đây chính là thông tin cho biết kiểu cách mà đối tượng được
      hiển thị. Đối tượng đồ họa cơ sở đơn giản nhất là điểm và đoạn thẳng, ngoài ra còn
      có đường tròn, và các đường conics, mặt bậc hai, các mặt và đường splines, các
      vùng tô đa giác, chuỗi kí tự, … cũng được xem là các đối tượng đồ họa cơ sở để
      giúp xây dựng các ảnh phức tạp. 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ở cho các thiết bị hiển thị dạng điểm.
      Xét về mặt bản chất, các thuật toán này thực hiện quá trình chuyển đổi các
      đối tượng đồ họa cơ sở được mô tả trong hệ tọa độ thực về dãy các pixel có tọa độ
      nguyên của thiết bị hiển thị. Có hai yêu cầu đặt ra cho các thuật toán này đó là :
      Đối tượng được mô tả trong hệ tọa độ thực là đối tượng liên tục, còn đối tượng
      trong hệ tọa độ thiết bị là đối tượng rời rạc, do đó bản chất của quá trình chuyển đổi
      này chính là sự rời rạc hóa và nguyên hóa các đối tượng sao cho có thể xác định các
      điểm nguyên xấp xỉ đối tượng một cách tốt nhất, thực nhất. Nghĩa là đối tượng hiển
      thị bằng lưới nguyên trên thiết bị hiển thị phải có hình dạng tương tự như đối tượng
      trong lưới tọa độ thực và “có vẻ” liên tục, liền nét. Sự liên tục trên lưới nguyên của
      thiết bị hiển thị có được do mắt người không thể phân biệt được hai điểm quá gần
      nhau.
      16

    17. Do 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 nên các thuật toán hiển thị chúng cần phải được tối ưu hóa về mặt tốc độ,
      đây chính là điểm mấu chốt cho việc ra đời các thuật toán khác nhau.
      Hình 2.1 Quá trình chuyển đổi một đoạn thẳng về dãy các pixel tương ứng
      2.1. Các đối tượng đồ họa cơ sở
      2.1.1. Hệ đồ hoạ thế giới thực và hệ đồ hoạ thiết bị
      Hệ tọa độ thế giới thực
      Hệ tọa độ thế giới thực (hay hệ tọa độ thực) là hệ tọa độ được dùng mô tả các
      đối tượng thế giới thực. Một trong các hệ tọa độ thực thường được dùng nhất đó là
      hệ tọa độ 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. Gốc tọa độ là đ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 là trục hoành, trục tung; x là khoảng cách từ điểm đến trục
      hoành hay còn được gọi là hoành độ, y là khoảng cách từ điểm đến trục tung hay
      còn được gọi là tung độ.
      Các tọa độ thế giới thực cho phép người dùng sử dụng bất kì một thứ nguyên
      (dimension) quy ước như foot, cm, mm, km, inch, … nào và có thể lớn nhỏ tùy ý.
      Hệ tọa độ thiết bị
      Hệ tọa độ thiết bị là hệ tọa độ được dùng bởi một thiết bị xuất cụ thể nào đó
      như máy in, màn hình, … Đặc điểm chung của các hệ tọa độ thiết bị đó là :
      Các điểm trong hệ tọa độ thiết bị cũng được mô tả bởi một cặp tọa độ (x, y),
      tuy nhiên điểm khác với hệ tọa độ thực là x, y ∈ N. Điều này cho thấy các điểm
      trong hệ tọa độ thực được định nghĩa liên tục, còn các điểm trong các hệ tọa độ
      thiết bị là rời rạc do tính chất của tập các số tự nhiên.
      17

    18. Các tọa độ

      x, y của hệ tọa độ thiết bị không thể lớn tùy ý mà đều bị giới hạn
      trong một khoảng nào đó. Một số thiết bị chỉ cho x chạy trong đoạn[0,639], y chạy
      trong đoạn [0,479]. 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.
      Hệ tọa độ với các hướng của các trục tọa độ như trên còn được gọi là hệ tọa
      độ theo quy ước bàn tay phải.
      Ngoài ra do cách tổ chức bộ nhớ nên thông thường các hệ tọa độ thiết bị
      thường dựa trên hệ tọa độ theo quy ước bàn tay trái.
      Hình 2.3 – Hệ tọa độ theo quy ước bàn tay phải (a) và quy ước bàn tay trái (b)
      2.1.2. Biểu diễn điểm và đoạn thẳng
      2.1.2.1 Đ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 là màu sắc.
      2.1.2.2 Đoạn thẳng
      Một đường thẳng có thể xác định nếu biết hai điểm thuộc nó. Phương trình
      đường thẳng đi qua hai điểm (x1, y1) và (x2, y2) có dạng sau :
      12
      12
      1
      1
      yy
      xx
      yy
      xx


      =


      18
      O x
      y x
      y
      O
      (a) (b)
      O x
      y
      PWC
      (x,y)
      x
      y
      O x
      y
      ymax
      xmax
      PDC
      (x,y)
      (a) (b)
      Hình 2.2 – Hệ tọa độ thực (a) và hệ tọa độ thiết bị (b)

    19. hay ở dạng

      tương đương : ( )( ) ( )( )121121 xxyyyyxx −−=−−
      Khai triển ta có dạng : bmxy +=, trong đó :
      11
      1212 ,,
      mxyb
      xxDxyyDy
      Dx
      Dy
      m
      −=
      −=−==
      Đây còn được gọi là phương trình đoạn thắng của đường thẳng.
      Nếu khai triển dưới dạng :
      ( ) ( ) 012211212 =+−−−− yxyxyxxxyy
      và đặt ( ) 21121212 ,, yxyxCxxByyA −=−−=−= thì phương trình đường thẳng sẽ
      có dạng 0=++ CByAx, dạng này được gọi là phương trình tổng quát của đường
      thẳng.
      Phương trình tham số của đường thẳng có dạng các tọa độ x, y được mô tả
      qua một thành phần thứ ba là t. Dạng này rất thuận tiện khi khảo sát các đoạn
      thẳng.
      ( )
      ( )


      +−=
      +−=
      21
      21
      1
      1
      tyyty
      txxtx
      Nếu [ ]1,0∈t, 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ó toàn bộ đường thẳng.
      Một đoạn thẳng là một đường thẳng bị giới hạn bởi hai điểm đầu, cuối.
      Hình 2.4 – Dạng tham số của phương trình đường thẳng
      Đường gấp khúc là tập các đoạn thẳng nối với nhau một cách tuần tự. Các
      đoạn thẳng này không nhất thiết phải tạo thành một hình khép kín và các đoạn có
      thể cắt lẫn nhau. Điểm giao của hai đoạn thẳng được gọi là đỉnh. Các đường gấp
      khúc được xác định qua danh sách các đỉnh, mỗi đỉnh được cho bởi các cặp tọa độ
      ( )ii yx, .
      Một đa giác là một đường gấp khúc có điểm đầu và điểm cuối trùng nhau.
      19
      (x 1 ,y 1 )
      (x 2
      ,y 2
      )
      t=0
      t=1
      t<0 t>1
      (a) (b)

    20. Hình 2.5 –

      Đường gấp khúc (a) và đa giác (b)
      Các thuộc tính của đoạn thẳng bao gồm :
      Màu sắc
      Độ rộng của nét vẽ.
      Kiểu nét vẽ của đoạn thẳng : có thể là một trong các dạng như hình 2.6. Hầu
      hết các công cụ đồ họa đều định nghĩa tập các kiểu nét vẽ đoạn thẳng có thể dùng
      và cho phép người dùng định nghĩa kiểu đoạn thẳng của mình thông qua một mẫu
      (pattern) gồm các số 0, 1.
      Đối với đường gấp khúc, các đoạn thẳng trong cùng một đường gấp khúc thì
      có cùng một thuộc tính.
      Hình 2.6 – Một số kiểu nét vẽ của đoạn thẳng
      2.1.2.3 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 ví dụ như đa giác.
      Các thuộc tính của vùng tô bao gồm:
      Thuộc tính của đường biên : chính là các thuộc tính như thuộc tính của đoạn
      thẳng.
      Thuộc tính của vùng bên trong : bao gồm màu tô và mẫu tô.
      Hình 2.7 – Vùng tô với các dạng đường biên và mẫu tô khác nhau
      2.2. Các giải thuật xây dựng thực thể cơ sở
      2.2.1. Giải thuật vẽ đoạn thẳng thông thường
      Giả sử tọa độ các điểm nguyên sau khi xấp xỉ đối tượng thực lần lượt là
      ( ) ,…0,, =iyx ii. Đây là các điểm nguyên sẽ được hiển thị trên màn hình.
      Bài toán đặt ra là nếu biết được ( )ii yx, là tọa độ nguyên xác định ở bước thứ
      i, điểm nguyên tiếp theo ( )11, ++ ii yx sẽ được xác định như thế nào.
      20

    21. Nhận xét rằng

      để đối tượng hiển thị trên lưới nguyên được liền nét, các điểm
      mà ( )11, ++ ii yx có thể chọn chỉ là một trong tám điểm được đánh số từ 1 đến 8 trong
      hình 2.9 (điểm đen chính là( )ii yx, ).Hay nói cách khác : ( ) ( )1,1, 11 ±±=++ iiii yxyx .
      Hình 2.8 – Các điểm ( )11, ++ ii yx có thể chọn ở bước (i+1)
      Dáng điệu của đường sẽ cho ta gợi ý khi chọn một trong tám điểm trên. Cách
      chọn các điểm như thế nào sẽ tùy thuộc vào từng thuật toán trên cơ sở xem xét tới
      vấn đề tối ưu tốc độ.
      Xét đoạn thẳng có hệ số góc 10 << m và 0>Dx .
      Với các đoạn thẳng dạng này, nếu ( )ii yx, là điểm đã xác định được ở bước
      thứ i (điểm màu đen) thì điểm cần chọn ( )11, ++ ii yx ở bước thứ (i+1) sẽ là một trong
      hai trường hợp như hình vẽ sau :
      Hình 2.9 – Các điểm ( )11, ++ ii yx chọn ở bước (i+1) cho trường hợp
      đoạn thẳng có hệ số góc 0

    22. 2.2.2. Thuật toán

      DDA (Digital Differential Analizer)
      Hình 2.10 – Minh họa thuật toán DDA
      Với thuật toán DDA, việc quyết định chọn 1+iy là iy hay 1+iy, dựa vào
      phương trình của đoạn thẳng bmxy +=. Nghĩa là, ta sẽ tính tọa độ của điểm
      ( )yx i ,1+ thuộc về đoạn thẳng thực. Tiếp đó, 1+iy sẽ là giá trị sau khi làm tròn giá
      trị tung độ y.
      Như vậy :
      ( )
      ( )yRoundy
      bxmy
      i
      i
      =
      ++=
      +1
      1
      Nếu tính trực tiếp giá trị thực y ở mỗi bước từ phương trình bmxy += thì
      phải cần một phép toán nhân và một phép toán cộng số thực. Để cải thiện tốc độ,
      người ta tính giá trị thực của y ở mỗi bước theo cách sau để khử phép tính nhân
      trên số thực :
      Nhận xét rằng : ( ) bxmbmxy iisau ++=+= + 11
      bmxy itröôùc +=
      myy tröôùcsau +=⇒
      Lưu đồ thuật toán DDA vẽ đoạn thẳng qua hai điểm (x1, y1) và (x2,y2)
      22
      (x i,y i)
      (x i+1 ,y )
      (x i+1 ,Round(y) )

    23. Cài đặt minh

      họa thuật toán DDA
      #define Round(a) int(a+0.5)
      int Color = GREEN;
      void LineDDA (int x1, int y1, int x2, int y2)
      {
      int x = x1;
      float y = y1;
      float m = float(y2-y1)/(x2-x1);
      putpixel(x, Round(y), Color);
      for(int i=x1; i

    24. putpixel(x, Round(y), Color);
      }
      }

      // LineDDA
      Nhận xét
      Việc sử dụng công thức myy tröôùcsau += để tính giá trị y tại mỗi bước đã giúp
      cho thuật toán DDA nhanh hơn hẳn so với cách tính y từ phương trình bmxy +=
      do khử được phép nhân trên số thực. Tuy nhiên, việc cộng dồn giá trị thực m vào y
      có thể sẽ tích lũy sai số làm cho hàm làm tròn có kết quả sai dẫn tới việc xác định
      vị trí của điểm vẽ ra bị chệch hướng so với đường thẳng thực. Điều này chỉ xảy ra
      khi vẽ đoạn thẳng khá dài.
      Tuy đã khử được phép nhân số thực nhưng thuật toán DDA vẫn còn bị hạn
      chế về mặt tốc độ do vẫn còn phép toán cộng số thực và làm tròn. Có thể khắc
      phục thao tác cộng số thực m và làm tròn trong thuật toán bằng cách nhận xét
      Dx
      Dy
      m = với Dy, Dx là các số nguyên.
      2.2.3. Giải thuật Bresenham
      Thuật toán Bresenham đưa ra cách chọn 1+iy là iy hay 1+iy theo một hướng
      khác sao cho có thể tối ưu hóa về mặt tốc độ so với thuật toán DDA. Vấn đề mấu
      chốt ở đây là làm thế nào để hạn chế tối đa các phép toán trên số thực trong thuật
      toán.
      Hình 2.11 – Minh họa thuật toán Bresenham
      Gọi P( )yx i ,1+ là điểm thuộc đoạn thẳng. Ta có: ( ) bxmy i ++= 1 .
      Đặt ( ) yyd
      yyd
      i
      i
      −+=
      −=
      12
      1
      24
      (x i+1 ,y )
      P
      S
      x i x i+1
      y i
      y i
      +1
      y
      d 1
      d 2

    25. Xét tất cả

      các vị trí tương đối của y so với iy và 1+iy, việc chọn điểm
      ( )11, ++ ii yx là S hay P phụ thuộc vào việc so sánh d1 và d2 hay dấu của 21 dd − :
      Nếu 021 <− dd, ta sẽ chọn điểm S, tức là ii yy =+1 . Ngược lại, nếu 021 ≥− dd, ta sẽ chọn điểm P, tức là 11 +=+ ii yy . Xét ( ) ( )12221 −−=−= ii yyDxddDxp ( )( )[ ]1212 −−++=⇒ iii ybxmDxp Thay Dx Dy m = vào phương trình trên ta được : cDxyDyxp iii +−= 22, với ( )DxbDyc 122 −+= . Nhận xét rằng do 0>Dx nên dấu của biểu thức 21 dd − cũng chính là dấu của
      ip. Hay nói một cách khác, nếu tại bước thứ i ta xác định được dấu của ip thì xem
      như ta xác định được điểm cần chọn ở bước (i+1). Vấn đề còn lại là làm thế nào để
      tính được ip tại mỗi bước thật nhanh.
      Ta có :
      ( ) ( )cDxyDyxcDxyDyxpp iiiiii +−−+−=− +++ 2222 111
      ( ) ( )iiiiii yyDxxxDypp −−−=−⇔ +++ 111 22
      ( ) 1do,22 111 +=−−=−⇔ +++ iiiiii xxyyDxDypp
      Từ đây ta có thể suy ra cách tính 1+ip từ ip như sau :
      Nếu 0

    26. Cài đặt minh

      họa thuật toán Bresenham
      void LineBres (int x1, int y1, int x2, int y2)
      {
      int Dx, Dy, p, Const1, Const2;
      int x, y;
      Dx = x2 – x1;
      Dy = y2 – y1;
      p = 2*Dy – Dx; // (Dy <<1) - Dx Const1 = 2*Dy; // Dy <<1 26 Begin p=2Dy-Dx; Const1=2Dy; Const2=2(Dy-Dx); x=x1; y=y1; putpixel(x,y,c); x

    27. Const2 = 2*(Dy-Dx);

      // (Dy-Dx) <<1 x = x1; y = y1; putpixel(x, y, Color); for(i=x1; i

    28. Hình 2.12 –

      Minh họa thuật toán MidPoint
      Ta có dạng tổng quát của phương trình đường thẳng :
      0=++ CByAx
      với ( ) 21121212 ,, yxyxCxxByyA −=−−=−=
      Đặt ( ) CByAxyxF ++=,, ta có nhận xét :
      ( )
      ( )
      ( )
      ( )














      >
      =
      < thaúng.ñöôøngdöôùiphíanaèmyx,neáu,0 thaúngñöôøngveàthuoäcyx,neáu,0 th?ngðý?ngtrênphíanmyx,neáu,0 ,yxF Lúc này việc chọn các điểm S, P ở trên được đưa về việc xét dấu của ( )       ++== 2 1 ,12MidPoint2 iii yxFFp . Nếu 0

    29. Nhận xét rằng

      thuật toán MidPoint cho kết quả tương tự như thuật toán
      Bresenham.
      2.2.5. Giải thuật sinh đường tròn dùng Bresenham (Scan Converting
      Circles)
      Phương trình đường tròn có tâm là gốc tọa độ, bán kính R là : 222
      Ryx =+ .
      Từ phương trình này ta có thể đưa về dạng 22
      xRy −±=. Để vẽ các đường tròn
      có tâm ( )CC yx, bất kì, đơn giản chỉ cần tịnh tiến các điểm sau khi vẽ xong đường
      tròn có tâm là gốc tọa độ theo vector tịnh tiến ( )CC yx, .
      Một số cách tiếp cận vẽ đường tròn
      Do tính đối xứng nên để vẽ toàn bộ đường tròn, ta chỉ cần vẽ cung ¼ đường
      tròn sau đó lấy đối xứng để xác định các điểm còn lại.
      Một trong những cách đơn giản nhất là cho x chạy từ 0 đến R, sau đó tính y
      từ công thức trên (chỉ lấy giá trị dương) rồi làm tròn để xác định giá trị nguyên
      tương ứng. Cách làm này không hiệu quả do gặp phải các phép toán nhân và lấy
      căn làm hạn chế tốc độ, ngoài ra đường tròn vẽ ra theo cách này có thể không liền
      nét (trừ trường hợp R lớn) khi x gần R (do chỉ có một giá trị y duy nhất cho một
      giá trị x). Chúng ta có thể khắc phục điều này bằng cách điều chỉnh đối tượng thay
      đổi là x (rồi tính y theo x) hay y (rồi tính x theo y) tùy vào giá trị tuyệt đối của hệ
      số góc đường tròn là lớn hơn hay nhỏ hơn 1, nhưng cách làm này đòi hỏi thêm các
      phép tính toán và kiểm tra nên làm cho thuật toán phức tạp thêm. (Xem hình 2.14)
      Một cách tiếp cận khác là vẽ các điểm ( ) ( )( ),sin,cos θθ RR với θ chạy từ 00
      đến
      900
      . Cách này sẽ khắc phục hạn chế đường không liền nét của thuật toán trên, tuy
      nhiên điểm hạn chế chính của thuật toán này đó là chọn bước nhảy cho θ như thế
      nào cho phù hợp khi bán kính thay đổi.
      Hình 2.13 – Đường tròn vẽ ra không liền nét theo cách vẽ trên
      Phương trình đường tròn đi qua tâm có toạ độ (xc,yc) là:
      (x – xc)2
      + (y – yc)2
      = r2
      Hình tròn là hình đối xứng tám cách
      29
      (0,17)
      (17,0)

    30. Hình 2.14 Hình

      tròn đối xứng 8 phần
      Để đơn giản ta xét tâm trùng gốc 0: x2
      + y2
      = r2
      Ta xét các điểm tạo ra từ góc phần tư thứ 2: từ 450
      đến 900
      , thực hiện theo
      hướng x, y
      Giả sử bắt đầu xi vậy xi+1 = xi +1
      y2
      = r2
      – (xi +1)2
      d1 = yi
      2
      – y2
      = yi
      2
      – r2
      + (xi +1)2
      d2 = y2
      – (yi – 1)2
      = r2
      – (xi +1)2
      – (yi – 1)2
      pi = d1 – d2 = 2(xi +1 )2
      + yi
      2
      + (yi – 1)2
      -2r2
      Xét: pi <0 (d1=0 (d1>=d2) chọn điểm nằm trong đường tròn yi+1 = yi +1
      pi = 2(xi +1 )2
      + 2yi
      2
      – 2yi +1 – 2r2
      pi+1 = 2(xi +2 )2
      + 2yi+1
      2
      – 2yi+1 + 1 – 2r2
      pi+1 = pi + 4xi +6 + 2yi+1
      2
      – 2yi
      2
      – 2yi+1 + 2yi
      pi+1 = pi + 4xi +6 + 2(yi+1
      2
      – yi
      2
      )- 2(yi+1 – yi )
      + Nếu pi <0 hay yi+1 = yi pi+1 = pi + 4xi +6 + Nếu pi >=0 hay yi+1 = yi -1
      pi+1 = pi + 4xi +6 – 4yi + 2 + 2
      pi+1 = pi + 4(xi – yi ) + 10
      + Tính p1 : khi đó ứng với x1=0 và y1 =r
      p1 = 2(x1 +1)2
      + y1
      2
      + (y1 – 1)2
      -2r2
      30








    31. ≤≤
      ≤≤
      RyR
      Rx
      2
      2
      2
      2
      0
      = 2 +

      r2
      + (r-1)2
      – 2r2
      = 3 – 2r
      2.2.6. Giải thuật sinh đường tròn Midpoint
      Do tính đối xứng của đường tròn (C) nên ta chỉ cần vẽ cung (C1/8
      ) là cung 1/8
      đường tròn, sau đó lấy đối xứng. Cung (C1/8
      ) được mô tả như sau (cung của phần
      tô xám trong hình vẽ) :
      Hình 2.15 – Các vị trí đối xứng trên đường tròn (C) tương ứng với (x,y)
      Như vậy nếu có (x, y) ∈ (C1/8
      ) thì các điểm : (y, x), (x,-y), (y,-x), (-x,-y), (-y,-
      x), (-y,x), (-x,y) sẽ thuộc (C).
      Chọn điểm bắt đầu để vẽ là điểm (0,R). Dựa vào hình vẽ, nếu ( )ii yx, là điểm
      nguyên đã tìm được ở bước thứ i, thì điểm ( )11, ++ ii yx ở bước thứ (i+1) là sự lựa
      chọn giữa S và P.
      Như vậy : { }


      −∈
      +=
      +
      +
      1,
      1
      1
      1
      iii
      ii
      yyy
      xx
      Tương tự như thuật toán MidPoint vẽ đoạn thẳng, việc quyết định chọn một
      trong hai điểm S và P sẽ được thực hiện thông qua việc xét dấu của một hàm nào
      đó tại điểm MidPoint là điểm nằm giữa chúng.
      Hình 2.16 – Thuật toán MidPoint vẽ đường tròn
      Đặt ( ) 222
      , RyxyxF −+=, ta có :
      31
      2
      R
      (x,y)(-x,y)
      (y,x)(-y,x)
      (x,-y)(-x,-y)
      (-y,-x) (y,-x)
      S
      P
      MidPoint
      y i
      y i
      -1
      x i x i+1
      Q(x i
      +1 ,y )

    32. ( )
      ( )
      (

      )
      ( )




      >
      =
      < troøn.ñöôøngngoaøinaèmyx,neáu troønñöôøngtreânnaèmyx,neáu troønñöôøngtrongnaèmyx,neáu ,0 ,0 ,0 y,xF Xét ( )       −+== 2 1 ,1MidPoint iii yxFFp. Ta có : Nếu 0

    33. RRFyxFp −=





      −=





      −+=
      4
      5
      2
      1
      ,1
      2
      1
      ,1 000
      Lưu

      đồ thuật toán MidPoint vẽ đường tròn
      Cài đặt minh họa thuật toán MidPoint vẽ đường tròn
      // Ve 8 diem doi xung
      void Put8Pixel(int x, int y)
      {
      putpixel(x, y, Color);
      putpixel(y, x, Color);
      putpixel(y, -x, Color);
      putpixel(x, -y, Color);
      putpixel(-x, -y, Color);
      putpixel(-y, -x, Color);
      33
      Begin
      p=5/4-R;
      x=0;
      y=R;
      Put8Pixel(x,y,c);
      x

    34. putpixel(-y, x, Color);
      putpixel(-x,

      y, Color);
      } // Put8Pixel
      void CircleMidPoint (int R)
      {
      int x, y;
      x = 0;
      y = R;
      Put8Pixel(x, y);
      p = 1 – R; // 5/4-R
      while (x < y) { if (p < 0) p += 2*x + 3; else { p += 2*(x -y) + 5; y--; } x++; Put8Pixel(x, y); } } // CircleMidPoint 2.2.7. Giải thuật sinh đường ellipse Tính đối xứng được thực hiện trên 4 cách F(x, y) = b2 x2 + a2 y2 − a2 b2 = 0 34

    35. Hình 2.17. Mô

      tả giải thuật sinh đường ellipse
      Vector vuông góc với tiếp tuyến gradient =1
      Ta có tiếp tuyến với cung tròn (độ dốc) = -1= dy/dx = – fx/fy
      Trong đó fx=2b2
      x đạo hàm riêng phần của f(x,y) với x
      Và fy=2a2
      y đạo hàm riêng phần của f(x,y) với y
      Giả sử ta chỉ xét trên góc phần tư thứ nhất: giả sử ta chia cung từ (0,b) đến
      (a,0) tại Q, có độ dốc -1
      Trên phần 1: x thay đổi thì y thay đổi theo
      Trên phần 2: y thay đổi thì x thay đổi theo
      + Xét trên phần 1:
      Bắt đầu từ (0,b), bước thứ i (xi,yi) chọn tiếp
      A(xi+1, yi)
      B(xi+1,yi-1)
      Tham số quyết định:
      Pi = f(xi+1,yi-1/2) = b2
      (xi+1)2
      + a2
      (yi-1/2)2
      -a2
      b2
      Pi+1 = f(xi+1+1,yi+1-1/2) = b2(xi+1+1)2
      + a2
      (yi+1-1/2)2
      -a2
      b2
      Pi+1 – Pi = b2
      ((xi+1+1)2
      – (xi+1)2
      )+ a2
      ((yi+1-1/2)2
      – (yi-1/2)2
      )
      Pi+1 = Pi + 2b2
      xi+1+ b2
      + a2
      ((yi+1-1/2)2
      – (yi-1/2)2
      )
      – Nếu Pi <0 chọn A xi+1=xi+1 yi+1=yi Pi+1 = Pi + 2b2 xi(xi+1) +b2 = Pi + 2b2 xi +3b2 Hay Pi+1 = Pi + b2 (2xi +3) - Nếu Pi >=0 chọn B
      xi+1=xi+1
      yi+1=yi -1
      35

    36. Pi+1 = Pi

      + 2b2
      xi(xi+1) +b2
      + a2
      ((yi-1 -1/2)2
      – (yi-1/2)2
      )
      = Pi + 2b2
      xi +3b2
      +a2
      (-3yi +9/4 +yi -1/4)
      = Pi + 2b2
      xi +3b2
      +a2
      (-2yi +2)
      Hay Pi+1 = Pi + b2(2xi +3) + a2
      (-2yi +2)
      – Tính P1 tại (0,b)
      P1 = f(x1+1,y1-1/2) = b2
      + a2
      (b-1/2)2
      -a2
      b2
      P1 = b2
      – a2
      b +a2
      /4
      + Xét trên phần 2:
      Ta lấy toạ dộ của Pixel sau cùng trong phần 1 của đường cong để tính giá trị
      ban đầu cho phần 2.
      Giả sử pixel (xk,yk) vừa chuyển quét cuối cùng của phần 1 nhập vào bước j
      cho phần 2 (xj,yj).
      Pixel kế tiếp có thể là:
      C(xj,yj-1)
      D(xj+1, yj-1)
      Tham số quyết định:
      qj = f(xj+1/2,yj-1) = b2
      (xj+1/2)2
      + a2
      (yj-1)2
      -a2
      b2
      qj+1 = f(xj+1+1/2,yj+1-1) = b2(xj+1+1/2)2
      + a2
      (yj+1-1)2
      -a2
      b2
      qj+1 – qj = b2
      ((xj+1+1/2)2
      – (xj+1/2)2
      )+ a2
      ((yj+1-1)2
      – (yj-1)2
      )
      qj+1 = qj + b2
      ((xj+1+1/2)2
      – (xj+1/2)2
      )+ a2
      – 2a2
      yj+1
      – Nếu qj <0 chọn D yj+1=yj-1 xj+1=xj +1 qj+1 = qj + b2 ((xj+3/2)2 - (xj+1/2)2 )+ a2 - 2a2 (yj -1) qj+1 = qj + b2 (3xj +9/4- xj -1/4) +3a2 -2a2 yj Hay qj+1 = qj + b2 (2xj +2) +a2 (-2yj +3) - Nếu qj >=0 chọn C
      yj+1=yj -1
      xj+1= xj
      qj+1 = qj + a2
      – 2a2
      (yj-1)
      Hay qj+1 = qj + a2
      (3 – 2yj )
      – Tính q1:
      36

    37. q1 = f(xk+1/2,yk

      -1) = b2
      (xk+1/2)2
      + a2
      (yk-1)2
      -a2
      b2
      Câu hỏi: lúc lấy đối xứng 4 cách để tìm 1 Ellipse hoàn chỉnh từ các toạ độ
      pixel được tạo ra với cung phần tư thứ 1. Có hiện tượng overstrike xảy ra hay
      không?
      Trả lời: hiện tượng overstrike xảy ra tại:
      (0,b); (0,-b); (a,0); (-a,0)
      Thuật toán
      #include
      #include
      #define ROUND(a) ((long)(a+0.5))
      void plot(int xc, int yc, int x, int y, int color){
      putpixel(xc+x, yc+y, color);
      putpixel(xc-x, yc+y, color);
      putpixel(xc+x, yc-y, color);
      putpixel(xc-x, yc-y, color);
      }
      void Mid_ellipse(int xc, int yc, int a, int b, int color){
      long x, y, fx, fy, a2, b2, p;
      x = 0;
      y = b;
      a2 = a * a; //a2
      b2 = b * b; // b2
      fx = 0;
      fy = 2 * a2 * y; // 2a2y
      plot(xc, yc, x,y, color);
      p = ROUND(b2-(a2*b)+(0.25*a)); // p=b2 – a2b + a2/4
      while (fx < fy){ x++; fx += 2*b2; //2b2 if (p<0) p += b2*(2*x +3); // p=p + b2 (2x +3) else{ 37

    38. y–;
      p+= b2*(2*x +3)

      + a2*(-2*y +2); // p = p + b2(2x +3) + a2 (-2y +2)
      fy -= 2*a2; // 2a2
      }
      plot(xc, yc, x, y, color);
      }
      p=ROUND(b2*(x+0.5)*(x+0.5)+a2*(y-1)*(y-1)- a2*b2);
      //b2(x+1/2)2+a2(y-1)2 – a2b2
      while (y>0){
      y–;
      fy -= 2*a2; // 2a2
      if (p>=0)
      p+=a2*(3 – 2*y); p =p + a2(3-2y)
      else{
      x++;
      fx += 2*b2; // 2b2
      p += b2*(2*x+2) + a2*(-2*y +3); //p=p + b2(2x +2) +a2(-2y +3)
      }
      plot(xc, yc, x, y, color);
      }
      }
      void main(){
      int gr_drive = DETECT, gr_mode;
      initgraph(&gr_drive, &gr_mode, “”);
      Mid_Ellipse(getmaxx() / 2, getmaxy() / 2, 150, 80, 4);
      getch();
      closegraph();
      }
      2.2.8. Giải thuật sinh ký tự
      Trong màn hình text, truy xuất các ký tự trên màn hình được hỗ trợ bởi phần
      cứng. Các ký tự được lưu trữ trong bộ nhớ ROM, dưới dạng bitmap hay các ma
      trận ảnh. Phần cứng sẽ đưa ký tự lên màn hình tại ví trí xác định, tính toán cuốn
      trang và xuống dòng.
      38

    39. Trong đồ hoạ:
      +

      Vector: định nghĩa các ký tự theo những đường cong mềm bao ngoài của chúng,
      tốn kém về mặt tính toán.
      – phức tạp (tính toán phương trình)
      – lưu trữ gọn nhẹ
      – các phép biến đổi dựa vào công thức biến đổi
      – Kích thước phụ thuộc vào môi trường (không có kích thước
      – cố định)
      Hình 2.18 Ký tự vector
      + Bitmap: định nghĩa mỗi ký tự với 1 font chữ cho trước là 1 ảnh bitmap hình chữ
      nhật nhỏ.
      – Đơn giản trong việc sinh ký tự (copypixel)
      – Lưu trữ lớn
      – Kích thước không đổi
      Hình 2.18 Ký tự bitmap
      2.2.9. Giải thuật sinh đa giác (Polygon)
      a. Thuật giải vẽ đường bao đa giác
      Việc biểu diễn đa giác thông qua:
      – Tập các đoạn thẳng
      – Tập các điểm thuộc đa giác
      Các loại đa giác:
      Hình 2.19 Các loại đa giác
      39

    40. Đa giác lồi:

      là đa giác có đường thẳng nối bất ký 2 điểm bên trong nào của đa giác
      đều nằm trọn trong đa giác. Đa giác không lồi là đa giác lõm.
      b. Các thuật toán tô miền kín đa giác
      Các vùng tô là một trong những đối tượng đồ họa cơ sở được hầu hết các
      công cụ lập trình đồ họa hỗ trợ. Có hai dạng vùng tô thường gặp đó là : tô bằng
      một màu thuần nhất (solid fill) hay tô theo một mẫu tô (fill-pattern) nào đó.
      Một vùng tô thường được xác định bởi một đường khép kín nào đó gọi là
      đường biên. Một trong những dạng đường biên đơn giản nhất đó là đa giác.
      Để tô màu một vùng tô, người ta thường chia làm hai công đoạn : công đoạn
      thứ nhất là xác định các điểm nào để tô và công đoạn còn lại đơn giản hơn đó là
      quyết định tô các điểm đó bằng giá trị màu nào. Công đoạn thứ hai chỉ thực sự
      phức tạp nếu ta tô theo một mẫu tô nào đó không phải là tô thuần một màu.
      Có hai cách tiếp cận chính để tô màu một vùng tô đối với thiết bị hiển thị
      dạng điểm đó là : tô theo dòng quét (scan-line fill) và tô dựa theo đường biên
      (boundary fill).
      Phương pháp tô theo dòng quét sẽ xác định các phần giao của các dòng quét
      kế tiếp nhau với đường biên của vùng tô, sau đó sẽ tô màu các điểm thuộc về phần
      giao này. Cách tiếp cận này thường được dùng để tô màu các đa giác, đường tròn,
      ellipse, và một số đường cong đơn giản khác. Phương pháp tô dựa theo đường
      biên sẽ bắt đầu từ một điểm ở bên trong vùng tô và từ đó loang dần ra cho tới khi
      ta gặp các điểm biên. Cách tiếp cận này thường được dùng cho các vùng tô có
      dạng đường biên phức tạp hơn.
      40

    41. Bài tập
      1. Thiết

      kế và cài đặt hàm vẽ hình chữ nhật, đường gấp khúc, đa giác từ hàm
      vẽ đoạn thẳng.
      2. Trong phần trình bày thuật toán Bresenham để vẽ đường thẳng, hãy cho
      biết với cách đặt d1, d2 như vậy, có khi nào d1, d2 lấy giá trị âm hay không ?
      Nếu có hãy cho ví dụ minh họa.
      3. Tại sao phải so sánh ip với giá trị 0 trong các thuật toán Bresenham,
      MidPoint. Bản chất của việc so sánh này là gì?
      4. Cài đặt các thuật toán DDA, Bresenham, MidPoint vẽ đoạn thẳng qua hai
      điểm cho trước trong trường hợp tổng quát với hệ số góc m lấy giá trị bất
      kì.
      5. Người ta có thể cải thiện tốc độ cài đặt thuật toán vẽ đoạn thẳng bằng cách
      chỉ cần vẽ một nửa đoạn thẳng, phần còn lại lấy đối xứng nửa đoạn thẳng
      đã vẽ. Hãy cài đặt minh họa.
      6. Cho biết các điểm nguyên vẽ phát sinh khi sử dụng các thuật toán DDA,
      MidPoint cho các đoạn thẳng đi qua các điểm lần lượt là A1(5,10),
      B1(15,17); A2(-2,3), B2(-12,7); A3(6,3), B3(9,13); A4(2,4), B4(-5,14);
      A5(0,10), B5(15,10); A6(5,-1), B6(5,-11);
      7. Trình bày thuật toán MidPoint vẽ cung tròn 1/8, bán kính R, tâm I(xC, yC)
      và được giới hạn bởi :
      8. Sử dụng ý tưởng của thuật toán Bresenham, xây dựng thuật toán vẽ đường
      tròn có tâm là gốc tọa độ, bán kính R.
      9. Giải thích tại sao chỉ chọn cung 1/8 để vẽ rồi lấy đối xứng mà không mở
      rộng cho cung 1/16 hay 1/32.
      10.Giải thích tại sao có thể thay công thức p0 = 5/4 – R bằng công thức p0 = 1-
      R khi cài đặt thuật toán MidPoint vẽ đường tròn.
      11.Trình bày thuật toán Bresenham vẽ đường tròn bán kính R, từ đó nhận xét
      về cách tiếp cận của thuật toán MidPoint có gì lợi hơn so với thuật toán
      Bresenham.
      12.Xây dựng và cài đặt thuật toán vẽ ellipse có tâm là gốc tọa độ với bán kính
      trục chính, bán kính trục phụ lần lượt là A, B.
      41







      ≤≤
      ≤≤
      2
      2
      0
      2
      2
      Ry
      RxR

    42. 13.Dựa vào thuật

      toán vẽ đường tròn để xây dựng thủ tục vẽ một cung tròn
      (arc) tâm (x,y) bán kính R, biết góc bắt đầu và kết thúc của cung lần lượt là
      α, β..
      14.Dựa vào thuật toán vẽ ellipse để xây dựng thủ tục vẽ một cung (pie slice)
      tâm (x,y) và bán kính trục chính, trục phụ lần lượt là A, B, góc bắt đầu và
      kết thúc của cung lần lượt là α, β.
      15.Hãy tìm hiểu các cài đặt tối ưu hơn cho các thuật toán vẽ đoạn thẳng và vẽ
      đường tròn, ellipse.
      16.Xây dựng và cài đặt thuật toán vẽ các parabol
      A
      x
      y
      2
      =, và Axy =2
      với A là
      số nguyên bất kì.
      17.Xây dựng và cài đặt thuật toán vẽ các hyperbol 12
      2
      2
      2
      =−
      B
      y
      A
      x
      , và
      12
      2
      2
      2
      −=−
      B
      y
      A
      x
      với A, B là các số nguyên bất kì.
      18.Xây dựng và cài đặt thuật toán vẽ các đường cong sau :
      a. )sin( θω += xAy, với A nguyên.
      b. )cos( θω += xAy, với A nguyên.
      c. 2
      Axy =, với A nguyên.
      d. Axy /3
      =, với A nguyên.
      e. 042422
      =−+++ yxyx
      f. 021618259 22
      =−−+ xyx
      g. 0100100 2
      =−+ xxy
      h. 07425 =−−+ yxxy
      19.Các bước chính của các thuật toán vẽ đường dạng ( )xfy =. Minh họa cho
      các trường hợp vẽ đường thẳng, đường tròn.
      20.Bản chất của quá trình vẽ các đường đơn giản theo từng điểm là rời rạc hóa
      và nguyên hóa. Hãy cho biết lí do tại sao, bước nào trong thuật toán tổng
      quát thể hiện hai ý trên. Minh họa bằng các đường đã học.
      21.Các thuật toán vẽ đường bao hàm rất lớn kĩ thuật tối ưu hóa chương trình.
      Hãy minh họa qua các đối tượng đã học.
      22.Ý nghĩa của danh sách kích hoạt AET trong thuật toán tô màu đa giác theo
      dòng quét. Cấu trúc dữ liệu và nguyên tắc hoạt động của AET.
      42

    43. 23.Cài đặt thuật

      toán tô màu đa giác theo dòng quét bằng cách dùng xâu liên
      kết thay vì dùng mảng như cài đặt minh họa.
      24.Cài đặt thuật toán tô màu theo đường biên không dùng đệ quy.
      25.Xây dựng và cài đặt thuật tô màu đường tròn, ellipse.
      43

    44. Chương 3: Các

      phép biến đổi đồ hoạ
      3.1. Các phép biến đổi hình học hai chiều
      Một trong những ưu điểm quan trọng của đồ họa là cho phép dễ dàng thao
      tác lên các đối tượng đã được tạo ra. Một nhà quản lí có nhu cầu thu nhỏ các biểu
      đồ trong một báo cáo, một kiến trúc sư muốn nhìn tòa nhà ở những góc nhìn khác
      nhau, một nhà thiết kế muốn quan sát và chỉnh sửa các mẫu đối tượng trong quá
      trình thiết kế, … Tất cả các thao tác này có thể được hỗ trợ một cách dễ dàng nhờ
      vào các phép biến đổi hình học. Các phép biến đổi hình học sẽ làm thay đổi mô tả
      về tọa độ của các đối tượng, từ đó làm cho đối tượng bị thay đổi về hướng, kích
      thước và hình dạng. Các phép biến đổi hình học cơ sở bao gồm : tịnh tiến
      (translation), quay (rotation) và biến đổi tỉ lệ (scaling). Ngoài ra một số phép biến
      đổi khác cũng thường được áp dụng đó là phép đối xứng (reflection) và biến dạng
      (shearing).
      Có hai quan điểm về phép biến đổi hình học đó là : biến đổi đối tượng
      (object transformation) và biến đổi hệ tọa độ (coordinate transformation). Biến đổi
      đối tượng là thay đổi tọa độ của các điểm mô tả nó theo một quy tắc nào đó, còn
      biến đổi hệ tọa độ là tạo ra một hệ tọa độ mới và tất cả các điểm mô tả đối tượng
      sẽ được chuyển về hệ tọa độ mới. Hai cách này có những mối liên hệ chặt chẽ với
      nhau và mỗi cách đều có những lợi thế riêng. Chúng ta sẽ bàn về phép biến đổi đối
      tượng trước.
      3.1.1. Phép biến đổi Affine (Affine Transformations)
      Phép biến đổi Affine là phép biến đổi tuyến tính tọa độ điểm đặc trưng của đối
      tượng thành tập tương ứng các điểm mới để tạo ra các hiệu ứng cho toàn đối
      tượng.
      Ví dụ: phép biến đổi tọa độ với chỉ 2 điểm đầu cuối của đoạn thẳng tạo thành 2
      điểm mới mà khi nối chúng với nhau tạo thành đoạn thẳng mới. Các điểm nằm
      trên đoạn thẳng sẽ có kết quả là điểm nằm trên đoạn thẳng mới với cùng phép biến
      đổi thông qua phép nội suy.
      3.1.2. Các phép biến đổi đối tượng
      Một phép biến đổi hai chiều sẽ biến đổi điểm P trong mặt phẳng thành điểm
      có tọa độ mới Q theo một quy luật nào đó. Về mặt bản chất, một phép biến đổi
      điểm là một ánh xạ T được định nghĩa :
      ( ) ( )’,’,
      : 22
      yxQyxP
      T

      RR →
      44

    45. Nói cách khác,

      T là hàm số ( )yxT, theo hai biến ( )yx, :
      ( )
      ( )


      =
      =
      yxgy
      yxfx
      ,’
      ,’
      Phép biến đổi affine là phép biến đổi với ( )yxf, và ( )yxg, là các hàm tuyến
      tính. Phép biến đổi này có dạng :
      0,,,,,,,


      ≠−∈



      ++=
      ++=
      bcadRfedcba
      fdybxy
      ecyaxx
      .
      Ta chỉ khảo sát các phép biến đổi affine nên từ nay về sau ta dùng cụm từ “phép
      biến đổi” thay cho “phép biến đổi affine”.
      Phép tịnh tiến
      Để tịnh tiến một điểm ( )yxP, từ vị trí này sang vị trí khác trong mặt phẳng, ta
      cộng thêm các giá trị mô tả độ dời vào các tọa độ của P. Nếu gọi xtr và ytr lần lượt
      là độ dời theo trục hoành và trục tung thì tọa độ của điểm mới ( )’,’ yxQ sẽ là :



      +=
      +=
      y
      x
      tryy
      trxx


      ,
      ( )yx trtr, còn được gọi là vector tịnh tiến hay vector độ dời.
      Chúng ta có thể dịch chuyển toàn bộ một đối tượng bằng cách áp dụng quy
      tắc trên cho mọi điểm thuộc đối tượng. Để tịnh tiến một đoạn thẳng, đơn giản chỉ
      cần tịnh tiến hai điểm đầu và cuối của nó rồi sau đó vẽ lại đoạn thẳng nối hai điểm
      mới. Với đa giác, ta tịnh tiến các đỉnh của nó sau đó vẽ lại đa giác với các đỉnh
      mới. Một cách tương tự, để tịnh tiến các đối tượng như đường tròn, ellipse, ta tịnh
      tiến tâm của chúng tới vị trí mới rồi vẽ lại.
      Hình 3.1 – Phép tịnh tiến một điểm (a)
      và đối tượng với vector tịnh tiến(-4,2) (b)
      Phép biến đổi tỉ lệ
      Phép biến đổi tỉ lệ làm thay đổi kích thước đối tượng. Để co hay giãn tọa độ
      của một điểm ( )yxP, theo trục hoành và trục tung lần lượt là xs và ys, ta nhân xs và
      ys lần lượt cho các tọa độ của P.



      =
      =
      ysy
      xsx
      y
      x
      .’
      .’
      , xs và ys được gọi là các hệ số tỉ lệ.
      45
      P
      x
      y
      Q
      tr x
      tr y
      (a)
      y
      x
      (2,3) (4,3)
      (6,1) (8,1)
      (b)

    46. Khi các giá

      trị xs, ys nhỏ hơn 1, phép biến đổi sẽ thu nhỏ đối tượng, ngược
      lại khi các giá trị này lớn hơn 1, phép biến đổi sẽ phóng lớn đối tượng. Khi xs, ys
      bằng nhau, ta gọi đó là phép đồng dạng (uniform scaling), phép đồng dạng là phép
      biến đổi bảo toàn tính cân xứng của đối tượng.
      Tâm tỉ lệ là điểm không bị thay đổi qua phép biến đổi tỉ lệ. Phép biến đổi tỉ lệ
      mô tả như trên còn gọi là phép biến đổi tỉ lệ quanh gốc tọa độ vì có tâm tỉ lệ là gốc
      tọa độ. Nhận xét rằng khi phép biến đổi tỉ lệ thu nhỏ đối tượng, đối tượng sẽ được
      dời về gần gốc tọa độ hơn, tương tự khi phóng lớn đối tượng, đối tượng sẽ được
      dịch chuyển xa gốc tọa độ hơn.
      Hình 3.2 – Phép biến đổi tỉ lệ với 5.2=xs và 5.0=ys
      Phép quay
      Phép quay làm thay đổi hướng của đối tượng. Một phép quay đòi hỏi phải có
      tâm quay, góc quay. Góc quay dương thường được quy ước là chiều ngược chiều
      kim đồng hồ. Ta có công thức biến đổi của phép quay điểm ( )yxP, quanh gốc tọa
      độ một góc α :



      +=
      −=
      yxy
      yxx
      .cos.sin’
      .sin.cos’
      αα
      αα
      Hình 3.3 – Phép quay một đối tượng quanh gốc tọa độ một góc 600
      Biểu diễn ma trận của phép biến đổi
      Trong nhiều ứng dụng đồ họa, người dùng thường xuyên có nhu cầu thực
      hiện nhiều phép biến đổi hình học khác nhau trên một đối tượng để tạo ra các hiệu
      quả như mong muốn. Ví dụ trong các ứng dụng thiết kế, chúng ta cần phải thực
      hiện nhiều phép tịnh tiến, quay, tỉ lệ để có thể khớp từng phần của đối tượng vào
      đúng vị trí của chúng, hay sau khi thực hiện các phép biến đổi nhưng không được
      ưng ý, người dùng muốn trở lại hiện trạng trước khi biến đổi (undo), … Do đó cần
      46
      y
      x
      (2,3) (4,3)
      (10,1.5)(5,1.5)
      y
      x

    47. phải có một

      cách nào đó để có thể xử lí dãy các phép biến đổi trên được nhanh
      chóng và hiệu quả.
      Nếu ta biểu diễn tọa độ của điểm ( )yxP, và ( )’,’ yxQ dưới dạng các vector
      dòng lần lượt là ( )yx và ( )” yx thì các phép biến đổi tịnh tiến, tỉ lệ, quay có thể
      được biểu diễn dưới dạng ma trận như sau :
      Phép tịnh tiến
      ( ) ( ) ( )yx trtryxyx +=”
      hay TPQ += với ( )yx trtrT =
      Phép biến đổi tỉ lệ
      ( ) ( ) 







      =
      y
      x
      s
      s
      yxyx
      0
      0

      hay SPQ .= với 







      =
      y
      x
      s
      s
      S
      0
      0
      Phép quay quanh gốc tọa độ
      ( ) ( ) 


      



      =
      αα
      αα
      cossin
      sincos
      ” yxyx
      hay RPQ .= với 


      



      =
      αα
      αα
      cossin
      sincos
      R
      Với cách biểu diễn này, chúng ta sẽ gặp khó khăn khi muốn kết hợp các phép
      biến đổi lại với nhau vì biểu diễn của phép tịnh tiến khác với dạng của các phép
      biến đổi tỉ lệ và quay. Chính vì vậy mà cần phải có một cách nào đó để biểu diễn
      ba phép biến đổi này về một dạng duy nhất để có thể dễ dàng xử lí sau này.
      3.2. Toạ độ đồng nhất và các phép biến đổi
      3.2.1. Toạ độ đồng nhất
      Tọa độ thuần nhất của một điểm trên mặt phẳng được biểu diễn bằng bộ ba
      số tỉ lệ ( )hyx hh ,, không đồng thời bằng 0 và liên hệ với các tọa độ ( )yx, của
      điểm đó bởi công thức :
      h
      y
      y
      h
      x
      x hh
      == ,
      Nếu một điểm có tọa độ thuần nhất là ( )zyx ,, thì nó cũng có tọa độ thuần nhất
      là ( )zhyhxh .,.,. trong đó h là số thực khác 0 bất kì. Tọa độ thuần nhất của một điểm
      trong không gian ba chiều hay có số chiều lớn hơn cũng được xác định một cách
      tương tự.
      47

    48. Về mặt toán

      học, việc đưa tọa độ thuần nhất vào là do sự cần thiết phải bổ
      sung cho mặt phẳng Euclid các điểm xa vô tận ( )0,, yx (điểm phi chính) có tọa độ
      thứ ba bằng 0, điều này dẫn đến khái niệm mặt phẳng xạ ảnh trong hình học xạ
      ảnh. Trong hệ tọa độ thuần nhất, các điểm xa vô tận không đóng một vai trò gì đặc
      biệt so với các điểm khác của mặt phẳng. Với các phép biến đổi hình học đang
      khảo sát, nếu một điểm được biểu diễn dưới dạng tọa độ thuần nhất, cả ba phép
      biến đổi trên đều được biểu diễn dưới dạng tích các ma trận. Điều này giúp cho
      việc khảo sát các tính chất và sự kết hợp của các phép biến đổi này được thuận
      tiện do mỗi phép biến đổi được đại diện bởi một ma trận duy nhất.
      Bộ ba các tọa độ thường biểu diễn các điểm trong không gian ba chiều,
      nhưng ở đây ta sử dụng chúng để biểu diễn các điểm trong không gian hai chiều.
      Mối liên hệ ở đây là : nếu chúng ta xét tất cả các bộ ba tọa độ thuần nhất biểu diễn
      cho cùng một điểm, nghĩa là bộ ba số có dạng (h.x, h.y, h.z), với 0≠h, chúng ta sẽ
      nhận được một đường thẳng trong không gian ba chiều. Để đơn giản hóa chúng ta
      có thể chọn h=1, lúc này mỗi điểm ( )yxP, sẽ được biểu diễn dưới dạng tọa độ
      thuần nhất là ( )1,, yx .
      3.2.2. Phép biến đổi với toạ độ đồng nhất
      Phép tịnh tiến
      ( ) ( )










      =
      1
      010
      001
      .11”
      yx trtr
      yxyx
      hay ( )yxT trtrMPQ ,.= với ( )










      =
      1
      010
      001
      ,
      yx
      yxT
      trtr
      trtrM
      Phép biến đổi tỉ lệ
      ( ) ( )










      =
      100
      00
      00
      .11” y
      x
      s
      s
      yxyx
      hay ( )yxS ssMPQ ,.= với ( )










      =
      100
      00
      00
      , y
      x
      yxS s
      s
      ssM
      Phép quay quanh gốc tọa độ
      ( ) ( )










      −=
      100
      0cossin
      0sincos
      .11” αα
      αα
      yxyx
      48

    49. hay ( )αRMPQ

      .= với ( )










      −=
      100
      0cossin
      0sincos
      αα
      αα
      αRM
      3.3. Các phép biến đổi hình học ba chiều
      Các đối tượng trong thế giới thực phần lớn là các đối tượng ba chiều, nên
      việc thể hiện các đối tượng ba chiều trên máy tính là một công việc hết sức cần
      thiết để đưa tin học gần gũi với thực tế hơn. Cũng giống như các cách biểu diễn
      các đối tượng ba chiều trên mặt phẳng khác (như của máy ảnh, camera, … ), biểu
      diễn bằng máy tính cũng phải tuân theo các quy luật về phối cảnh, sáng, tối, …
      nhằm giúp người xem có thể tưởng tượng lại hình ảnh một cách gần đúng nhất.
      Ngoài ra biểu diễn trên máy tính có ưu thế giúp ta có thể quan sát đối tượng ở
      nhiều góc cạnh khác nhau, ở các khoảng cách khác nhau.
      Chương này sẽ giới thiệu một số kĩ thuật biểu diễn các đối tượng ba chiều
      trên máy tính, từ các đối tượng đơn giản như các hình khối, các đa diện, … đến các
      đối tượng tương đối phức tạp như các mặt đã được tìm hiểu ở các chương trước.
      Tổng quan về đồ họa ba chiều
      Khi chúng ta mô hình hóa và hiển thị một cảnh ba chiều, ta cần phải xem xét
      rất nhiều khía cạnh và vấn đề khác nhau chứ không đơn giản là thêm vào tọa độ
      thứ ba cho các đối tượng. Bề mặt đối tượng có thể xây dựng bởi nhiều tổ hợp khác
      nhau của các mặt phẳng và các mặt cong. Ngoài ra, đôi khi chúng ta cũng cần mô
      tả một số thông tin về bên trong các đối tượng. Các công cụ hỗ trợ đồ họa
      (graphics package) thường cung cấp một số hàm hiển thị các thành phần bên
      trong, những đường nét tiêu biểu hoặc hiển thị một phần của đối tượng ba chiều
      (solid object). Ngoài ra, các phép biến đổi hình học thường được sử dụng nhiều
      hơn và đa dạng hơn trong đồ họa ba chiều so với trong đồ họa hai chiều. Phép biến
      đổi hệ quan sát trong không gian ba chiều phức tạp hơn nhiều so với trong không
      gian hai chiều do chúng ta phải chọn lựa nhiều tham số hơn khi mô tả một cảnh ba
      chiều sẽ xuất hiện trên màn hình như thế nào.
      Các mô tả về một cảnh ba chiều phải đi qua một quy trình xử lí gồm nhiều
      công đoạn như phép biến đổi hệ tọa độ quan sát và phép chiếu chuyển cảnh từ hệ
      tọa độ quan sát ba chiều xuống hệ tọa độ thiết bị hai chiều. Những phần nhìn thấy
      được của cảnh, ứng với một hệ quan sát được chọn nào đó, phải được xác định và
      cuối cùng, các thuật toán vẽ mặt sẽ được áp dụng nhằm tạo ra hình ảnh trung thực
      (gần với thực tế) của cảnh.
      Sơ lược về quy trình hiển thị
      49

    50. Quy trình xử

      lí thông tin trong đồ họa ba chiều là một chuỗi các bước nối
      tiếp nhau, kết quả của mỗi bước sẽ là đầu vào của bước tiếp theo.
      Quy trình bắt đầu bằng việc xây dựng các mô hình đối tượng. Các mô hình
      này thường được mô tả trong không gian ba chiều (x,y,z). Các mô hình thường thể
      hiện vật thể (solid) hoặc bề mặt (boundaries) của đối tượng. Như vậy ta có hai
      kiểu mô hình hóa. Trong solid modeling các đối tượng đồ họa cơ sở thường được
      dùng để mô tả các đối tượng có thể tích (volume). Trong boundary
      representations(B-reps), các đối tượng được định nghĩa bởi bề mặt của chúng.
      Các mô hình thường được biểu diễn trong một hệ tọa độ cục bộ, mà ta gọi là
      hệ tọa độ đối tượng. Trong hệ tọa độ này chỉ có bản thân đối tượng được định
      nghĩa, vì vậy gốc tọa độ và đơn vị đo lường thường được chọn sao cho việc biểu
      diễn đối tượng tiện lợi nhất.
      Bước đầu tiên trong quy trình hiển thị là biến đổi đối tượng từ không gian đối
      tượng (object-space) vào một không gian chung gọi là không gian thực (world
      space). Trong không gian này các đối tượng, nguồn sáng, và người quan sát cùng
      tồn tại. Bước này được gọi là giai đoạn biến đổi mô hình (modeling
      transformation).
      Bước tiếp theo là một bước tối ưu hóa. Trong giai đoạn loại bỏ đơn giản
      (trivial rejection) ta cần loại trừ tất cả các đối tượng không thể nhìn thấy. Điều này
      giúp chúng ta tránh được việc xử lí một số phần không cần thiết của cảnh (scene)
      mà ta đang chuẩn bị hiển thị ở các bước sau.
      Tiếp theo ta phải chiếu sáng (illumination) các đối tượng có thể nhìn thấy
      được bằng cách gán cho chúng màu sắc dựa trên các đặc tính của các chất tạo nên
      vật và các nguồn sáng tồn tại trong cảnh.
      Sau khi chiếu sáng, ta phải thực hiện một phép biến đổi hệ tọa độ để đặt vị trí
      quan sát (viewing position) về gốc tọa độ và mặt phẳng quan sát (viewing plane)
      về một vị trí mong ước. Bước này gọi là bước đổi hệ quan sát. Sau bước này, các
      đối tượng được chuyển từ không gian thực sang không gian quan sát (eye space).
      Trong không gian quan sát, ta phải thực hiện việc xén các đối tượng trong
      cảnh để cảnh nằm gọn trong một phần không gian chóp cụt mà ta gọi là viewing
      frustum. Bước này sẽ loại bỏ hoàn toàn các đối tượng (các mảnh đối tượng) không
      nhìn thấy được trong ảnh.
      Bước tiếp theo ta sẽ chiếu các đối tượng xuống mặt phẳng hai chiều. Bước
      Projection thực hiện phép biến đổi từ không gian quan sát sang không gian màn
      hình (screen-space).
      50

    51. Trong bước rời

      rạc hóa (rasterization) ta sẽ chuyển đối tượng thành các pixel.
      Cuối cùng, toàn cảnh sẽ được hiển thị lên màn hình.
      MÔ HÌNH KHUNG NỐI KẾT (WIREFRAME MODEL)
      Khái niệm
      Một phương pháp thông dụng và đơn giản để mô hình hóa đối tượng là mô
      hình khung nối kết.
      Một mô hình khung nối kết gồm có một tập các đỉnh và tập các cạnh nối
      giữa các đỉnh đó. Khi thể hiện bằng mô hình này, các đối tượng ba chiều có vẻ
      rỗng và không giống thực tế lắm. Để hoàn thiện hơn, người ta dùng các kĩ thuật
      tạo bóng và loại bỏ các đường và mặt khuất. (Chúng ta sẽ đề cập vấn đề này ở các
      chương sau). Tuy nhiên vẽ bằng mô hình này thường nhanh nên người ta thường
      dùng nó trong việc xem phác thảo (preview) các đối tượng, đặc biệt là trong các hệ
      CAD.
      Biểu diễn các vật thể ba chiều bằng mô hình khung nối kết
      Với mô hình khung nối kết, hình dạng của đối tượng ba chiều được biểu diễn
      bằng hai danh sách (list) : danh sách các đỉnh (vertices) và danh sách các cạnh
      (edges) nối các đỉnh đó. Danh sách các đỉnh cho biết thông tin hình học đó là vị
      trí các đỉnh, còn danh sách các cạnh xác định thông tin về sự kết nối, nó cho biết
      cặp các đỉnh tạo ra cạnh. Chúng ta hãy quan sát một vật thể ba chiều được biểu
      diễn bằng mô hình khung nối kết như sau :
      Bảng danh sách các cạnh và đỉnh biểu diễn vật thể
      Vertex List Edge List
      Vertex x y z Edge Vertex1 Vertex2
      1 0 0 0 back
      side
      1 1 2
      2 0 1 0 2 2 3
      3 0 1 1 3 3 4
      4 0 0.5 1.5 4 4 5
      5 0 0 1 5 5 1
      6 1 0 0 front
      side
      6 6 7
      7 1 1 0 7 7 8
      8 1 1 1 8 8 9
      9 1 0.5 1.5 9 9 10
      10 1 0 1 10 10 6
      11 1 6
      51

    52. 12 2 7
      13

      3 8
      14 4 9
      15 5 10
      16 2 5
      17 1 3
      Có nhiều cách để đặc tả mô hình khung nối kết trên máy tính như dùng xâu,
      mảng, … và mỗi cách đều có các ưu điểm riêng trong từng ứng dụng cụ thể. Ở
      đây ta minh họa các biểu diễn mô hình khung nối kết bằng cấu trúc dữ liệu mảng
      như sau :
      #define MAXVERTS50 //số đỉnh tối đa có thể biểu diễn
      #define MAXEDGES 100 //số cạnh tối đa
      typedef struct {
      float x, y, z;
      } POINT3D;
      typedef struct {
      int NumVerts; //Số đỉnh trong mô hình
      int NumEdges; //Số cạnh trong mô hình
      POINT3D Vert[MaxVerts];
      int Edge[MaxEdges][2];
      }WIREFRAME;
      52

    53. Hình3.4 – Vật

      thể ba chiều được biểu diễn bằng mô hình khung nối kết
      Ngoài ra, đôi khi trong mô hình wireframe người ta còn mô tả các mặt
      (phẳng) của đối tượng. Mỗi mặt được định nghĩa bởi một đa giác bao. Ví dụ, đối
      tượng trong hình 3.1 có 7 mặt.
      3.3.1.Biểu diễn điểm trong không gian 3 chiều
      Một số khái niệm liên quan
      Phép biến đổi affine
      Phép biến đổi affine là phép biến đổi tuyến tính, khả nghịch. Phép biến đổi
      này bảo toàn tính song song của các đường thẳng cũng như bảo toàn tính tỉ lệ về
      khoảng cách của các đoạn thẳng. Tuy nhiên, phép biến đổi này không bảo toàn
      góc nghiêng và chiều dài các đoạn thẳng. Các phép biến đổi này cũng bảo toàn tỉ
      lệ về khoảng cách (xem thêm chương 3)
      Các hệ trục tọa độ theo quy ước bàn tay phải và bàn tay trái
      Hình 3.5 – Các hệ tọa độ theo quy ước bàn tay phải (a)
      và quy ước bàn tay trái (b)
      Hệ tọa độ Descartes ba chiều có thể định nghĩa theo quy ước bàn tay trái
      hoặc bàn tay phải (xem hình 3.2).
      53
      z
      1
      1
      x y
      1
      1
      2
      3
      45
      6
      7
      8
      9
      10
      y
      xz
      (a)
      zyx =∧
      x
      y
      z
      zxy =∧
      (b)

    54. Định nghĩa
      Hệ tọa

      độ theo quy ước bàn tay phải là hệ tọa độ với các trục x, y, z thỏa điều
      kiện: Nếu để bàn tay phải sao cho ngón cái hướng cùng chiều với trục z, khi nắm
      tay lại, chiều các ngón tay chuyển động theo hướng từ trục x đến trục y.
      Hệ tọa độ theo quy ước bàn tay trái là hệ tọa độ với các trục x, y, z thỏa điều
      kiện: Nếu để bàn tay trái sao cho ngón cái hướng cùng chiều với trục z, khi nắm
      tay lại, chiều các ngón tay chuyển động theo hướng từ trục x đến trục y.
      Hệ tọa độ thuần nhất
      Trong hệ tọa độ thuần nhất, mỗi điểm (x,y,z) trong không gian Descartes
      được biểu diễn bởi một bộ bốn tọa độ trong không gian 4 chiều thu gọn
      ( )hhzhyhx ,,,. Để tiện lợi, người ta thường chọn h=1. Như vậy, một điểm (x, y, z)
      trong hệ tọa độ Descartes sẽ biến thành điểm (x, y, z, 1) trong hệ tọa độ thuần
      nhất; còn điểm (x, y, z, w) trong hệ tọa độ thuần nhất (với w ≠ 0) sẽ tương ứng với
      điểm (x/w, y/w, z/w) trong hệ tọa độ Descartes (xem hình 3.3).
      Hình 3.6 – Các điểm trong hệ tọa độ thuần nhất và Descartes
      Dạng ma trận của phép biến đổi affine trong hệ tọa độ thuần nhất
      Hình 3.7 – Daïng toång quaùt cuûa pheùp bieán ñoåi affine ba chieàu
      Phép biến đổi affine ba chiều biến điểm P thành điểm Q có dạng : MPQ .= ,
      trong đó ( )1,,, zyx QQQQ =
      , ( )1,,, zyx PPPP =
      và M là ma trận biến đổi 4×4 trong hệ
      tọa độ thuần nhất ( )zyx trtrtrtr ,,=
      là vector tịnh tiến.
      54
      x
      w
      w=1
      homogeneous
      (x,y,z,w)
      projected
      homogeneous
      (x/w,y/w,z/w,1)
      Descartes
      (x/w,y/w,z/w)
      ( ) ( )














      =
      1
      0
      0
      0
      .11”’
      zyx trtrtr
      ihg
      fed
      cba
      zyxzyx
      tæ leä, quay, bieán daïng tònh tieán

    55. 3.3.2. Phép tịnh

      tiến
      Vector tịnh tiến tr trong phép biến đổi ba chiều có một tác động rất trực
      quan: mỗi điểm được dịch đi một khoảng là trx, try, trz theo ba trục. Ma trận M
      cho phép tịnh tiến có dạng như sau:














      =
      1
      0100
      0010
      0001
      zyx
      zyx
      trtrtr
      ),tr,trtr(tr (3.1)
      3.3.3. Phép tỉ lệ
      Phép biến đổi tỉ lệ trong ba chiều là một sự mở rộng của phép biến đổi tỉ lệ
      trong hai chiều :














      =
      1000
      000
      000
      000
      z
      y
      x
      zyx
      s
      s
      s
      ),s,sS(s (3.2)
      Trong đó các hằng số zyx sss ,, là các hệ số tỉ lệ tương ứng theo các trục x, y, z.
      Hình 3.8 – Phép biến đổi tỉ lệ
      Như hình 3.6, đối tượng được phóng to gấp đôi, đồng thời với tác động của
      phép biến đổi làm cho đối tượng bị đẩy ra xa gốc tọa độ hơn.
      Khi các hệ số tỉ lệ zyx sss ,, bằng nhau, ta có phép biến đổi đồng dạng.
      Trong phép biến đổi ( )zyx sssS ,,, gốc tọa độ O sẽ có ảnh là chính nó. Ta gọi
      gốc tọa độ là điểm bất động (fixed point) của S, hay còn gọi O là tâm của phép
      biến đổi.
      Tổng quát hơn, ta có thể mô tả một phép biến đổi tỉ lệ theo một tâm ( )fff zyx ,,
      bất kì bằng một dãy ba phép biến đổi sau:
      Tịnh tiến điểm bất động ( )fff zyx ,, về gốc tọa độ.
      Thực hiện phép biến đổi tỉ lệ theo công thức (6.2).
      Tịnh tiến ngược điểm bất động từ gốc tọa độ trở về vị trí ban đầu.
      55
      y
      z
      x

    56. Như vậy, kết

      hợp ba bước biến đổi trên ta có được ma trận biến đổi của phép
      biến đổi tỉ lệ theo tâm ( )fff zyx ,, với hệ số tỉ lệ zyx sss ,, là:
      ( ) ( ) ( ) 













      =
      1111
      000
      000
      000
      fzfyfx
      z
      y
      x
      zyxf
      z-sy-sx-s
      s
      s
      s
      ),s,s(sS (3.3)
      3.3.4. Phép biến dạng
      Biến dạng theo bất kì trục tọa độ nào cũng bị ảnh hưởng bởi tọa độ ứng với
      hai trục còn lại. Ma trận của phép biến dạng như sau:














      =
      1000
      01
      01
      01
      yzxz
      zyxy
      zxyx
      hh
      hh
      hh
      Sh (3.4)
      Ta có mối quan hệ Qx với P : zxzyxyxx PhPhPQ ++= .
      Ở đây có thể hiểu hxy là lượng mà tọa độ y của P tác động lên tọa độ x của Q.
      Hình 3.9 – Phép biến dạng theo trục x : hxy= hxz = 1, các hệ số khác bằng 0
      Tương tự như trong trường hợp phép biến đổi tỉ lệ, phép biến dạng Sh (6.4)
      cũng có điểm bất động là gốc tọa độ O. Ta cũng có thể xây dựng phép biến dạng
      với tâm biến dạng tại một điểm ( )fff zyx ,, bất kì.
      Ma trận biến đổi của phép biến dạng với tâm tại ( )fff zyx ,, là:














      −−−
      =
      1
      01
      01
      01
      zyfzxfyzfyxfxzfxyf
      yzxz
      zyxy
      zxyx
      hyh-xhzh-xhzh-y
      hh
      hh
      hh
      Sh (
      3.3.5. Phép lấy đối xứng
      Đối xứng trục ox.
      56
      y
      z
      x
      y
      z
      x

















    57. =
      1000
      0100
      0010
      0001
      Mox
      Đối xứng trục

      mặt xoy.















      =
      1000
      0100
      0010
      0001
      Mox
      Đối xứng trục gốc tọa độ.

















      =
      1000
      0100
      0010
      0001
      Mox
      3.3.6. Phép quay 3 chiều
      Phép quay quanh một trục tọa độ
      Khác với phép quay trong hai chiều quanh một điểm bất kì, trong ba chiều ta
      có phép quay quanh một trục tọa độ. Ở đây ta sử dụng hệ tọa độ theo quy ước bàn
      tay phải và quy định chiều quay dương là ngược chiều kim đồng hồ.
      Ta có các ma trận biểu diễn các phép quay quanh trục x, y, z một góc θ lần
      lượt là R(z, θ), R(y,θ), R(x, θ):
      Quay quanh trục z :
      ( )














      =
      1000
      0100
      00cossin
      00sincos
      θθ-
      θθ
      z, θR (3.6)
      57
      y
      z
      x

    58. Hình 3.10 –

      Phép quay quanh trục z
      Quay quanh trục y :
      Hình 3.11 – Phép quay quanh trục y
      ( )














      =
      1000
      0cos0sin
      0010
      0sin0cos
      θθ
      θ-θ
      y, θR (3.7)
      Quay quanh trục x :
      ( )














      =
      1000
      0cossin-0
      0sincos0
      0001
      x,R
      θθ
      θθ
      θ (3.8)
      58
      x
      z
      y
      z
      y
      x

    59. Hình 3.12 –

      Phép quay quanh trục x
      Nhận xét rằng các giá trị nằm trên dòng và cột tương ứng với trục x trong ma
      trận R(x,θ) sẽ có giá trị là 0 ngoại trừ giá trị nằm trên đường chéo chính là 1. Điều
      này đảm bảo cho tọa độ x của các điểm là không bị thay đổi qua phép biến đổi.
      Nhận xét này cũng tương tự cho trường hợp các ma trận còn lại.
      Ghi chú:
      Các định nghĩa về chiều quay được dùng chung cho cả hệ tọa độ theo quy
      ước bàn tay phải và bàn tay trái. Cụ thể chiều dương được định nghĩa như sau:
      Quay quanh trục x: từ trục dương y đến trục dương z.
      Quay quanh trục y: từ trục dương z đến trục dương x.
      Quay quanh trục z: từ trục dương x đến trục dương y.
      59

    60. Hình 3.13- Cách

      xác định chiều quay dương
      Phép quay quanh một trục bất kì
      Phép quay này được biểu diễn qua sự kết hợp của các hàm. Hai ví dụ sau sẽ
      cho thấy rỏ điều này.
      Phép quay quanh một trục
      Giả sử trục quay đi qua hai điểm P0P1 nào đó với phương được biểu diễn bởi
      vector đơn vị k. Quay điểm (x, y, z) quanh trục k theo một góc θ sẽ biến thành
      điểm (x’, y’, z’) (xem hình 3.12).
      60
      y
      x
      z
      (a)
      y
      z
      x
      (b)
      y
      x
      z
      (c)

  5. cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, và rất nhiều sản phẩm khác. Sử dụng các chương trình này, đầu tiên các đối tượng được hiển thị dưới dạng các phác thảo của phần khung ( wireframe outline ), mà 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. Sử dụng kĩ thuật này, người thiết kế sẽ dễ dàng nhận thấy ngay các thay đổi của đối tượng chi tiến hành hiệu chỉnh các qi tiết hay thay đổi góc nhìn, …. Một chi đã thiết kế xong phần khung của đối tượng, 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 right ascension kết quả cuối cùng rất gần với thế giới thực. 1.2.4.2 Giao diện người dùng và máy tính Hầu hết các ứng dụng đều phải có giao diện giao tiếp với người dùng dựa vào việc dùng hệ thống cửa sổ để quản lý các hoạt động. Giao diện đồ họa thực sự là một cuộc cách mạng mang lại sự thuận tiện và thoải mái cho người dùng ứng dụng. Các ứng dụng dựa trên hệ điều hành master of science window là một minh họa rất trực quan của giao diện đồ họa. Các chức năng của các ứng dụng này được thiết kế cho người dùng làm việc thông qua các biểu tượng mô tả chức năng đó. Ví dụ, chức năng lưu tập can được hiểu thông qua biểu tượng đĩa mềm, chức năng in ấn được hiểu thông qua biểu tượng máy inch, … Để chọn các chức năng, người dùng sử dụng chuột trỏ đến và nhấn vào các biểu tượng tương ứng. Điểm thuận lợi chính chi dùng biểu tượng là kích thước không gian mà nó chiếm ít hơn nhiều sol với dùng văn bản để mô tả cho cùng một chức năng, ngoài radium việc nắm bắt các chức năng qua các biểu tượng sẽ dễ dàng hơn rất nhiều chi người dùng gặp trở ngại về mặt ngôn ngữ. Các ứng dụng có giao diện đồ họa còn cho phép người dùng khả năng 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 nhau cùng một lúc. 1.2.4.3 Biểu diễn thông can Đây là các ứng dụng sử dụng đồ họa máy tính để phát sinh các biểu đồ, đồ thị minh họa mối quan hệ giữa nhiều đối tượng với nhau. Các ứng dụng này thường được dùng để tóm lược các dữ liệu về 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í, … một cách có hiệu quả. Tất cảc đều được trình bày đẹp, ngắn gọn, dễ sử dụng. Trong thương mại, đồ họa máy tính cũng tạo right ascension các hình ảnh gây ấn tượng và thu hút sự chú ý. five
  6. 1.2.4.4 Lĩnh vực giải trí, nghệ thuật Đối với các nhà họa sĩ, tạo mẫu, các chương trình máy tính như key workshop pro, adobe Photoshop, three-d studio, … đã giúp họ rất đắc lực cho các họa sĩ, các nhà tạo mẫu trong việc thiết kế các hình ảnh sống động, và rất thực. Với các chương trình này, người họa sĩ được máy tính tạo cho cảm giác yttrium như đang làm việc ngoài đời 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 barium chiều, … làm cho họ cảm thấy rất thoải mái và tiện lợi. Ngoài ra đồ họa máy tính còn giúp tạo radium các chương trình trò chơi, giải trí ; hỗ trợ cho các kĩ xảo điện ảnh, cho các nhà làm phim. Có nhiều bộ phim rất nổi 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 universe ), … 1.2.4.5 Giáo dục và đào tạo Thể hiện rỏ nhất thông qua các chương trình mô phỏng, các chương trình này mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng hóa học, hoạt động của các gói tin trên mạng máy tính, … được dùng rất nhiều trong việc hỗ trợ giảng dạy. Trong đào tạo, các ứng dụng mô phỏng đượ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, xa hơn nữa là các chương trình mô phỏng quá trình phóng phi thuyền, đây là bước chuẩn bị quan trọng giúp tiết kiệm qi phí hơn thus với các thí nghiệm bằng mô hình vật lý thực. six
  7. hình 1.1 – Chương trình học về máy tính 1.2.4.6 Bản đồ học Đồ họa máy tính được sử dụng để đưa radium sơ đồ vị trí địa lý và các hiện tương tự nhiên một cách chính xác từ số liệu đo được. Ví dụ như bản đồ địa lý, bản đồ thời tiết, bản đồ mật độ dân số, bản đồ khai thác cho việc khoan và khai mỏ, biểu đồ hải dương học …. 1.2.5. Các chuẩn giao diện của hệ đồ hoạ Mục tiêu căn bản của phần mềm đồ hoạ được chuẩn là tính tương thích. chi các công cụ được thiết kế với hàm đồ hoạ 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 spill the beans hệ phần cứng khác và được dùng trong nhiều cài đặt và ứng dụng khác nhau. GKS ( graphic kernel system ) : chuẩn xác định các hàm đồ hoạ chuẩn, được thiết kế như một tập hợp các công cụ đồ hoạ hai chiều và bachelor of arts chiều. GKS functional description, ANSI X3.124 – 1985.GKS – three-d functional description, ISO doctor # 8805:1988. CGI ( computer artwork interface system ) : hệ chuẩn cho các phương pháp giao tiếp với các thiết bị ngoại six. CGM ( computer graphic Metafile ) : xác định các chuẩn cho việc lưu trữ và chuyển đổi hình ảnh. seven
  8. VRML (Virtual Reality mold linguistic process ) : ngôn ngữ thực tại ảo, một hướng phát triển trong công nghệ hiển thị được đề xuất bởi hãng silicon graphic, sau đó đã được chuẩn hóa như một chuẩn công nghiệp. PHIGS ( programmer hierarchical interactional graphic standard ) : xác định các phương pháp chuẩn cho các mô hình thời gian thực và lập trình hướng đối tượng. PHIGS functional description, ANSI X3.144 – 1985.+ functional description, 1988, 1992. 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ư viện đồ hoạ của hãng Microsoft, direct X/Direct3D 1997. 1.3. Phần cứng đồ hoạ ( artwork hardware ) 1.3.1. Các thành phần phần cứng của hệ đồ hoạ tương tác Cũng như mọi lĩnh vực trong công nghệ thông tin, một hệ thống sử dụng kỹ thuật đồ họa tương tác là một hệ thống xử lý thông tin bao gồm barium thành phần với các thao tác tương ứng : – Nhập dữ liệu : thông qua các thết bị nhập ( chuột, bàn phím, máy quét, … ). – Xử lý và lưu dữ liệu. – Hiển thị kết xuất kết quả : thông qua các thiết bị như màn hình, máy in, … Ngoài những đặc thù chung đã liệt kê ở trên, hệ thống kỹ thuật đồ họa tương tác còn có một đặc điểm rất đặc trưng của mình : trong hệ thống này, các thông can và các dữ liệu đặc trưng được hiển thị trên màn hình một cách trực quan và người sử dụng có thể quan sát, theo dõi và thay đổi giá trị hoặc khuông dạng của chúng một cách tương tác và ngay lập tức các thay đổi này được hệ thống ghi nhận và xử lý. Kết quả của sự thay đổi sẽ được hệ thống xử lý ngay trên các mô hình, cấu trúc hoặc hình ảnh của các đối tượng và hiển thị chúng ngay trên màn hình như người sử dụng mong muốn. eight Nhập dữ liệu Xử lý & lưu trữ Hiển thị kết quả user
  9. Hình 1.2 – Sơ đồ tương tác Như mô hình chung của hệ thống sử dụng kỹ thuật đồ họa tương tác, chúng tantalum thấy người sử dụng có khả năng giao tiếp tương tác với hệ thống ở cả bachelor of arts giai đoạn trong quá trình xử lý thông tin. Một hệ thống đồ họa tương tác đầu tiên được thiết kế và xây dựng bởi Ivan sutherland và mang tên Sketchpad. Hệ thống này được dùng để thiết kế mạch điện và bao gồm những thành phần sau : – Màn hình cathode-ray tube – Bút chì sáng và một bàn phím – Máy tính chứa chương trình xử lý thông tin Người dùng có thể vẽ mạch điện trực tiếp lên màn hình thông qua bút sáng, chương trình sẽ phân tích và tính toán những thông số cần thiết của mạch điện make người dùng vẽ nên. 1.3.2. Máy in – acid size : đường kính của một điểm indium bé nhất mà máy in có thể inch được. Ví dụ eight – 20/ 100inch, 5/1000inch. – Addressability : khả năng địa chỉ hoá các điểm in có thể có trên một đơn vị độ dài ( point per edge ). dot size point per column inch eight – 20/ 100inch two hundred, 600 5/1000inch 1500 – Số lượng màu có thể vẽ trên một điểm. 1.3.3. Màn hình cathode-ray tube Hình 1.3 – Cấu tạo của cathode-ray tube Màn hình là thiết bị hiển thị thông dụng nhất trong một hệ đồ họa. Các thao tác của hầu hết màn hình đều dựa trên thiết kế của ống transient ischemic attack âm cực ( cathode-ray tube – cathode ray tube ). nine
  10. Hình trên minh họa thao tác cơ sở của một ống transient ischemic attack âm cực. Một chùm các transient ischemic attack điện tử ( transient ischemic attack âm cực ) phát ra từ một súng điện tử, vượt qua các hệ thống hội tụ ( focus ) 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. Tại mỗi vị trí tương tác với transient ischemic attack điện tử, hạt phosphor sẽ phát right ascension một chấm sáng nhỏ. Vì á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. Một trong các cách đó là lặp đi lặp lại nhiều lần việc vẽ lại ảnh thật nhanh bằng cách hướng các transient ischemic attack điện tử trở lại vị trí cũ. Kiểu hiển thị này gọi là review cathode-ray tube. Có nhiều loại phosphor được dùng trong một cathode-ray tube. Ngoài màu sắc radium, điểm khác nhau chính giữa các loại phosphor là “ độ bền ” ( persistent ), đó là khoảng thời gian phát sáng sau chi transient ischemic attack cathode-ray tube không còn tác động. Lớp phosphor có độ bền thấp cần tốc độ làm tươi cao hơn để giữ cho hình ảnh trên 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. Lớp phosphor có độ bền cao thường được dùng cho việc hiển thị các ảnh tĩnh, độ phức tạp cao. Mặc dù một số loại phosphor có độ bền lớn hơn one giây, tuy nhiên các màn hình đồ họa thường được xây dựng với độ bền dao động từ ten đến sixty micro giây. Số lượng tối đa các điểm có thể hiển thị trên một cathode-ray tube được gọi là độ phân giải ( resolution ). Một định nghĩa chính xác hơn của độ phân giải là số lượng các điểm trên một centimet mà có thể được vẽ theo chiều ngang và chiều dọc, mặc dù nó thường được xem như là tổng số điểm theo mỗi hướng. Kích thước vật lí của màn hình đồ họa được tính từ độ dài của đường chéo màn hình, thường dao động từ twelve đến twenty-seven inch hoặc lớn hơn. Một màn hình cathode-ray tube có thể được kết hợp với nhiều loại máy khác nhau, do đó số lượng các điểm trên màn hình có thể được vẽ thật sự còn tùy thuộc vào khả năng của hệ thống mà nó kết hợp vào. Một thuộc tính khác của màn hình nữa là tỉ số phương ( aspect proportion ). Tỉ số phương là tỉ lệ của các điểm dọc và các điểm ngang cần để phát sinh các đoạn thẳng có độ dài đơn vị theo cả hai hướng trên màn hình ( trong một số trường hợp người tantalum thường dùng tỉ số phương như là tỉ số của các điểm theo chiều ngang so với các điểm theo chiều dọc ). Với các màn hình có tỉ số phương khác one, dễ dàng nhận thấy là các hình vuông hiển thị trên nó sẽ có dạng hình chữ nhật, các hình tròn sẽ có dạng hình ellipse. Thực right ascension khái niệm tỉ số phương xuất phát từ bản chất khoảng cách ( nếu tính cùng một đơn vị độ dài ) 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ẽ three điểm theo chiều dọc sẽ có cùng độ dài với việc vẽ four điểm theo chiều ngang. Màn hình dạng điểm ( raster – scan display ) : ten
  11. Màn hình dạng điểm là dạng thường gặp nhất trong số các dạng màn hình sử dụng cathode-ray tube dựa trên công nghệ truyền hình. Trong hệ thống này, chùm transient ischemic attack điện tử sẽ được quét ngang qua màn hình, mỗi lần một dòng và quét tuần tự từ trên xuống dưới. Sự bật tắt của các điểm sáng trên màn hình phụ thuộc vào cường độ của transient ischemic attack điện tử và đây chính là cơ sở của việc tạo ra hình ảnh trên màn hình. Mỗi điểm trên màn hình được gọi là một pixel hay là pixel ( viết tắt của visualize component ). Các thông tin về hình ảnh hiển thị trên màn hình được lưu trữ trong một vùng bộ nhớ gọi là vùng đệm làm tươi ( review fender ) hay là vùng đệm khung ( ensnare buff ). 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. Hình 1.4 – Quá trình tạo hình ảnh của các transient ischemic attack quét Để thay đổi các hình ảnh cần hiển thị, các giá trị tương ứng với vị trí và độ sáng phải được đặt vào vùng đệm khung. Hình 1.8 minh họa các giá trị tương ứng trong vùng đệm khung để hiển thị hình ảnh của chữ vitamin a trên màn hình. Đối với màn hình đen trắng, vùng đệm khung còn được gọi là bitmap, với các màn hình khác vùng đệm khung thường được gọi là pixmap. eleven
  12. Để tạo ra các ảnh đen trắng, đơn giản chỉ cần lưu thông tin của mỗi pixel bằng one bit ( các giá trị zero, one sẽ tượng trưng cho việc tắt ( tối ), bật ( sáng ) pixel trên màn hình ). Trong trường hợp ảnh nhiều màu, người tantalum cần nhiều act hơn, nếu thông can của mỗi pixel được lưu bằng b bite, thì tantalum có thể có 2b giá trị màu phân biệt cho pixel đó. Hình 1.5 – song ánh giữa vùng đệm khung và màn hình Trong các màn hình màu, người tantalum định nghĩa tập các màu làm việc trong một bảng tra ( search table – LUT ). Mỗi phần tử của LUT định nghĩa một bộ bachelor of arts giá trị radius ( red ), gigabyte ( green ), b ( bluing ) mô tả một màu nào đó. chi cần sử dụng một màu, tantalum 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 tantalum có thể tiết kiệm không gian lưu trữ cho mỗi phần tử trong vùng đệm khung. Số phần tử của LUT được xác định từ số lượng các bits/pixel. Nếu mỗi phần tử của vùng đệm khung dùng b bit để 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ó twenty-eight =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. Việc làm tươi trên màn hình dạng này được thực hiện ở tốc độ sixty đến eighty frame/giây. Đôi chi tốc độ làm tươi còn được biểu diễn bằng đơn vị hertz ( hertz – số chu kì/ giây ), trong đó một chu kì tương ứng với một frame. Sử dụng đơn vị này, chúng tantalum có thể mô tả tốc độ làm tươi sixty frame/giây đơn giản là 60Hz. chi đạt đến cuối mỗi dòng quét, transient ischemic attack đ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 chi làm tươi mỗi dòng quét được gọi là transient ischemic attack hồi ngang ( horizontal trace ). Và tới cuối mỗi skeletal system, transient ischemic attack điện tử ( transient ischemic attack hồi dọc – erect trace ) 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. twelve
  13. Hình 1.6 – Hoạt động của màn hình fretted Trong một số màn hình, mỗi skeletal system được hiển thị thành hai giai đoạn sử dụng kĩ thuật làm tươi đan xen nhau ( lock refesh ). Ở giai đoạn đầu tiên, transient ischemic attack quét sẽ quét một số dòng từ trên xuống dưới, sau transient ischemic attack 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 tantalum 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. 1.3.4. Màn hình tinh thể lỏng ( liquid crystal display – liquid crystal display ) Dựa vào công nghệ truyền ánh sáng qua điện cực mà đặt giữa là cuộn dây xoắn. chi chưa có từ trường ( chưa có dòng điện ) ở cuộn dây thì ánh sáng truyền thẳng, chi có từ trường thì ánh sáng truyền đổi chiều. Hình 1.7 – Công nghệ truyền ánh sáng trong màn hình tinh thể lỏng Tóm tắt Sự ra đời của đồ họa máy tính thực sự là cuộc cách mạng trong giao tiếp giữa người dùng và máy tính. Với lượng thông tin trực quan, đa dạng và phong phú được chuyển tải qua hình ảnh, các ứng dụng đồ họa máy tính đã lôi cuốn nhiều người nhờ tính thân thiện, dễ dùng, kích thích khả năng sáng tạo và tăng đáng kể hiệu suất làm việc. thirteen
  14. Đồ họa máy tính ngày nay được ứng dụng rất rộng rãi trong 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 rất đa dạng, phong phú và 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 nào mà không sử dụng kĩ thuật đồ họa để làm tăng tính hấp dẫn của mình. Một hệ đồ họa bao giờ cũng có hai thành phần chính đó là phần cứng và phần mềm .. Thành phần phần cứng bao gồm các thiết bị hiển thị ( hay là thiết bị xuất ) và các thiết bị nhập. Tiêu biểu nhất trong các thiết bị hiển thị là màn hình mà cơ chế hoạt động dựa trên cấu tạo của ống transient ischemic attack âm cực cathode-ray tube. Các thiết bị nhập dữ liệu thường gặp bao gồm bàn phím, chuột. Phần mềm đồ họa có thể chia làm hai loại đó là các công cụ lập trình như các hàm thư viện của cytosine, pascal, GL, … và các ứng dụng phục vụ cho một mục đích nào đó như AutoCAD, Photoshop, … Hướng tiếp cận của chúng tantalum trong tài liệu này ở mức độ của người lập trình, nghĩa là chúng tantalum sẽ tìm hiểu các thuật toán, các nguyên lí để xây dựng nên các ứng dụng đồ họa chứ không phải là học cách sử dụng các phần mềm như AutoCAD, Photoshop, … fourteen
  15. Bài tập
    1. Cấu tạo và nguyên lí hoạt động của màn 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, … của màn hình dạng này. two. Ý nghĩa và hoạt động của bảng tra LUT. three. bachelor of arts màn hình có độ phân giải lần lượt là 640×480, 1024×768, 1280×1024. Hãy cho biết kích thước của vùng đệm khung ( tính bằng byte ) nếu mỗi pixel được mô tả bằng eight bit, twelve moment, twenty-four bit. four. Các hệ màu. Mối liên hệ giữa chúng. five. Quy trình hiển thị đối tượng. Ý nghĩa của các hệ tọa độ. six. Tập các hàm đồ họa của một công cụ lập trình. Liên hệ tới các thư viện đồ họa của các ngôn ngữ đã học như vitamin c, pascal, … seven. Tại sao cần phải chuẩn hóa các phần mềm ? Tìm hiểu các chuẩn GKS, PHIGS. fifteen
  16. Chương 2: Các giải thuật sinh thực thể cơ sở GIỚI THIỆU Bất kì một ảnh mô tả thế giới thực nào bao giờ cũng được cấu trúc từ tập các đối tượng đơn giản hơn. Ví dụ một ảnh thể hiện bài trí của một căn phòng sẽ được cấu trúc từ các đối tượng như cây cảnh, tủ kính, bàn ghế, tường, ánh sáng đèn, … Với các ảnh đồ họa phát sinh bằng máy tính, hình dạng và màu sắc của mỗi đối tượng có thể được mô tả riêng biệt bằng hai cách : hoặc là bằng dãy các pixel tương ứng hoặc là bằng tập các đối tượng hình học cơ sở như đoạn thẳng hay vùng tô đa giác, … Sau đó, các ảnh sẽ được hiển thị bằng cách nạp các pixel vào vùng bộ nhớ màn hình. Với các ảnh được mô tả bằng các đối tượng hình học cơ sở, cần phải có một quá trình chuyển các đối tượng này về dạng massachusetts trận các pixel trước. Quá trình này còn được gọi là quá trình chuyển đổi bằng dòng quét ( scan-converting ). Bất kì công cụ lập trình đồ họa nào cũng phải cung cấp các hàm để mô tả một ảnh dưới dạng các đối tượng hình học cơ sở hay còn gọi là các đối tượng đồ họa cơ sở ( output primitive ) và các hàm cho phép kết hợp tập các đối tượng cơ sở để tạo thành đối tượng có cấu trúc phức tạp hơn. Mỗi đối tượng đồ họa cơ sở được mô tả thông qua dữ liệu về tọa độ và các thuộc tính của nó, đây chính là thông tin cho biết kiểu cách mà đối tượng được hiển thị. Đối tượng đồ họa cơ sở đơn giản nhất là điểm và đoạn thẳng, ngoài right ascension còn có đường tròn, và các đường conic section, mặt bậc hai, các mặt và đường spline, các vùng tô đa giác, chuỗi kí tự, … cũng được xem là các đối tượng đồ họa cơ sở để giúp xây dựng các ảnh phức tạp. 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ở cho các thiết bị hiển thị dạng điểm. Xét về mặt bản chất, các thuật toán này thực hiện quá trình chuyển đổi các đối tượng đồ họa cơ sở được mô tả trong hệ tọa độ thực về dãy các pixel có tọa độ nguyên của thiết bị hiển thị. Có hai yêu cầu đặt right ascension cho các thuật toán này đó là : Đối tượng được mô tả trong hệ tọa độ thực là đối tượng liên tục, còn đối tượng trong hệ tọa độ thiết bị là đối tượng rời rạc, do đó bản chất của quá trình chuyển đổi này chính là sự rời rạc hóa và nguyên hóa các đối tượng sao cho có thể xác định các điểm nguyên xấp xỉ đối tượng một cách tốt nhất, thực nhất. Nghĩa là đối tượng hiển thị bằng lưới nguyên trên thiết bị hiển thị phải có hình dạng tương tự như đối tượng trong lưới tọa độ thực và “ có vẻ ” liên tục, liền nét. Sự liên tục trên lưới nguyên của thiết bị hiển thị có được make mắt người không thể phân biệt được hai điểm quá gần nhau. sixteen
  17. Do 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 nên các thuật toán hiển thị chúng cần phải được tối ưu hóa về mặt tốc độ, đây chính là điểm mấu chốt cho việc ra đời các thuật toán khác nhau. Hình 2.1 Quá trình chuyển đổi một đoạn thẳng về dãy các pixel tương ứng 2.1. Các đối tượng đồ họa cơ sở 2.1.1. Hệ đồ hoạ thế giới thực và hệ đồ hoạ thiết bị Hệ tọa độ thế giới thực Hệ tọa độ thế giới thực ( hay hệ tọa độ thực ) là hệ tọa độ được dùng mô tả các đối tượng thế giới thực. Một trong các hệ tọa độ thực thường được dùng nhất đó là hệ tọa độ 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 độ ( ten, y ) trong đó x, y ∈ R. Gốc tọa độ là điểm oxygen có tọa độ ( zero, zero ). 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 là trục hoành, trục tung tree ; ten là khoảng cách từ điểm đến trục hoành hay còn được gọi là hoành độ, yttrium là khoảng cách từ điểm đến trục tung tree hay còn được gọi là tung tree độ. Các tọa độ thế giới thực cho phép người dùng sử dụng bất kì một thứ nguyên ( dimension ) quy ước như foot, centimeter, millimeter, kilometer, edge, … nào và có thể lớn nhỏ tùy ý. Hệ tọa độ thiết bị Hệ tọa độ thiết bị là hệ tọa độ được dùng bởi một thiết bị xuất cụ thể nào đó như máy in, màn hình, … Đặc điểm chung của các hệ tọa độ thiết bị đó là : Các điểm trong hệ tọa độ thiết bị cũng được mô tả bởi một cặp tọa độ ( adam, yttrium ), tuy nhiên điểm khác với hệ tọa độ thực là ten, y ∈ N. Điều này cho thấy các điểm trong hệ tọa độ thực được định nghĩa liên tục, còn các điểm trong các hệ tọa độ thiết bị là rời rạc suffice tính chất của tập các số tự nhiên. seventeen
  18. Các tọa độ ten, y của hệ tọa độ thiết bị không thể lớn tùy ý mà đều bị giới hạn trong một khoảng nào đó. Một số thiết bị chỉ cho adam chạy trong đoạn [ 0,639 ], y chạy trong đoạn [ 0,479 ]. Khoảng giới hạn các tọa độ adam, y là khác nhau đối với từng loại thiết bị khác nhau. Hệ tọa độ với các hướng của các trục tọa độ như trên còn được gọi là hệ tọa độ theo quy ước bàn tay phải. Ngoài radium do cách tổ chức bộ nhớ nên thông thường các hệ tọa độ thiết bị thường dựa trên hệ tọa độ theo quy ước bàn tay trái. Hình 2.3 – Hệ tọa độ theo quy ước bàn tay phải ( adenine ) và quy ước bàn tay trái ( b-complex vitamin ) 2.1.2. Biểu diễn điểm và đoạn thẳng 2.1.2.1 Đ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, yttrium ). Ngoài thông can về tọa độ, điểm còn có thuộc tính là màu sắc. 2.1.2.2 Đoạn thẳng Một đường thẳng có thể xác định nếu biết hai điểm thuộc nó. Phương trình đường thẳng đi qua hai điểm ( x1, y1 ) và ( x2, y2 ) có dạng sau : twelve twelve one one yy twenty yy twenty − − = − − eighteen oxygen x yttrium adam y o ( deoxyadenosine monophosphate ) ( bel ) oxygen ten y PWC ( adam, y ) ten yttrium o adam y ymax xmax PDC ( x, y ) ( angstrom ) ( b-complex vitamin ) Hình 2.2 – Hệ tọa độ thực ( adenine ) và hệ tọa độ thiết bị ( boron )
  19. hay ở dạng tương đương : ( ) ( ) ( ) ( ) 121121 xxyyyyxx −−=−− Khai triển tantalum có dạng : bmxy +=, trong đó : eleven 1212, , mxyb xxDxyyDy Dx dysprosium m −= −=−== Đây còn được gọi là phương trình đoạn thắng của đường thẳng. Nếu khai triển dưới dạng : ( ) ( ) 012211212 =+−−−− yxyxyxxxyy và đặt ( ) 21121212, , yxyxCxxByyA −=−−=−= thì phương trình đường thẳng sẽ có dạng 0=++ CByAx, dạng này được gọi là phương trình tổng quát của đường thẳng. Phương trình tham số của đường thẳng có dạng các tọa độ ten, yttrium được mô tả qua một thành phần thứ barium là t. Dạng này rất thuận tiện chi khảo sát các đoạn thẳng. ( ) ( )    +−= +−= twenty-one twenty-one one one tyyty txxtx Nếu [ ] 1,0∈t, tantalum có các điểm ( adam, 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, tantalum sẽ có toàn bộ đường thẳng. Một đoạn thẳng là một đường thẳng bị giới hạn bởi hai điểm đầu, cuối. Hình 2.4 – Dạng tham số của phương trình đường thẳng Đường gấp khúc là tập các đoạn thẳng nối với nhau một cách tuần tự. Các đoạn thẳng này không nhất thiết phải tạo thành một hình khép kín và các đoạn có thể cắt lẫn nhau. Điểm giao của hai đoạn thẳng được gọi là đỉnh. Các đường gấp khúc được xác định qua danh sách các đỉnh, mỗi đỉnh được cho bởi các cặp tọa độ ( ) two yx ,. Một đa giác là một đường gấp khúc có điểm đầu và điểm cuối trùng nhau. nineteen ( x one, y one ) ( x two, yttrium two ) t=0 t=1 thymine < zero triiodothyronine > one ( a ) ( b-complex vitamin )
  20. Hình 2.5 – Đường gấp khúc ( ampere ) và đa giác ( bel ) Các thuộc tính của đoạn thẳng bao gồm : Màu sắc Độ rộng của nét vẽ. Kiểu nét vẽ của đoạn thẳng : có thể là một trong các dạng như hình 2.6. Hầu hết các công cụ đồ họa đều định nghĩa tập các kiểu nét vẽ đoạn thẳng có thể dùng và cho phép người dùng định nghĩa kiểu đoạn thẳng của mình thông qua một mẫu ( model ) gồm các số zero, one. Đối với đường gấp khúc, các đoạn thẳng trong cùng một đường gấp khúc thì có cùng một thuộc tính. Hình 2.6 – Một số kiểu nét vẽ của đoạn thẳng 2.1.2.3 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 ví dụ như đa giác. Các thuộc tính của vùng tô bao gồm : Thuộc tính của đường biên : chính là các thuộc tính như thuộc tính của đoạn thẳng. Thuộc tính của vùng bên trong : bao gồm màu tô và mẫu tô. Hình 2.7 – Vùng tô với các dạng đường biên và mẫu tô khác nhau 2.2. Các giải thuật xây dựng thực thể cơ sở 2.2.1. Giải thuật vẽ đoạn thẳng thông thường Giả sử tọa độ các điểm nguyên sau chi xấp xỉ đối tượng thực lần lượt là ( ), … zero, , =iyx two. Đây là các điểm nguyên sẽ được hiển thị trên màn hình. Bài toán đặt radium là nếu biết được ( ) two yx, là tọa độ nguyên xác định ở bước thứ iodine, điểm nguyên tiếp theo ( ) eleven, ++ two yx sẽ được xác định như thế nào. twenty
  21. Nhận xét rằng để đối tượng hiển thị trên lưới nguyên được liền nét, các điểm mà ( ) eleven, ++ two yx có thể chọn chỉ là một trong tám điểm được đánh số từ one đến eight trong hình 2.9 ( điểm đen chính là ( ) two yx, ) .Hay nói cách khác : ( ) ( ) 1,1, eleven ±±=++ iiii yxyx. Hình 2.8 – Các điểm ( ) eleven, ++ two yx có thể chọn ở bước ( i+1 ) Dáng điệu của đường sẽ cho tantalum gợi ý chi chọn một trong tám điểm trên. Cách chọn các điểm như thế nào sẽ tùy thuộc vào từng thuật toán trên cơ sở xem xét tới vấn đề tối ưu tốc độ. Xét đoạn thẳng có hệ số góc ten < < molarity và zero > Dx. Với các đoạn thẳng dạng này, nếu ( ) two yx, là điểm đã xác định được ở bước thứ one ( điểm màu đen ) thì điểm cần chọn ( ) eleven, ++ two yx ở bước thứ ( i+1 ) sẽ là một trong hai trường hợp như hình vẽ sau : Hình 2.9 – Các điểm ( ) eleven, ++ two yx chọn ở bước ( i+1 ) cho trường hợp đoạn thẳng có hệ số góc zero
  22. 2.2.2. Thuật toán DDA ( digital differential gear Analizer ) Hình 2.10 – Minh họa thuật toán DDA Với thuật toán DDA, việc quyết định chọn 1+iy là iy hay 1+iy, dựa vào phương trình của đoạn thẳng bmxy +=. Nghĩa là, tantalum sẽ tính tọa độ của điểm ( ) yx iodine ,1+ thuộc về đoạn thẳng thực. Tiếp đó, 1+iy sẽ là giá trị sau chi làm tròn giá trị tung tree độ y. Như vậy : ( ) ( ) yRoundy bxmy one one = ++= +1 one Nếu tính trực tiếp giá trị thực yttrium ở mỗi bước từ phương trình bmxy += thì phải cần một phép toán nhân và một phép toán cộng số thực. Để cải thiện tốc độ, người tantalum tính giá trị thực của y ở mỗi bước theo cách sau để khử phép tính nhân trên số thực : Nhận xét rằng : ( ) bxmbmxy iisau ++=+= + eleven bmxy itröôùc += myy tröôùcsau +=⇒ Lưu đồ thuật toán DDA vẽ đoạn thẳng qua hai điểm ( x1, y1 ) và ( x2, y2 ) twenty-two ( adam i, y one ) ( x i+1, y ) ( x i+1, round ( y ) )
  23. Cài đặt minh họa thuật toán DDA # specify round of golf ( a ) int ( a+0.5 ) int tinge = green ; void LineDDA ( int x1, int y1, int x2, int y2 ) { int x = x1 ; float yttrium = y1 ; float molarity = float ( y2-y1 ) / ( x2-x1 ) ; putpixel ( adam, round ( yttrium ), color ) ; for ( int i=x1 ; one
  24. putpixel(x, Round(y), Color);
    }
    } // LineDDA Nhận xét Việc sử dụng công thức myy tröôùcsau += để tính giá trị yttrium tại mỗi bước đã giúp cho thuật toán DDA nhanh hơn hẳn so với cách tính yttrium từ phương trình bmxy += do khử được phép nhân trên số thực. Tuy nhiên, việc cộng dồn giá trị thực thousand vào yttrium có thể sẽ tích lũy sai số làm cho hàm làm tròn có kết quả sai dẫn tới việc xác định vị trí của điểm vẽ radium bị chệch hướng so với đường thẳng thực. Điều này chỉ xảy right ascension chi vẽ đoạn thẳng khá dài. Tuy đã khử được phép nhân số thực nhưng thuật toán DDA vẫn còn bị hạn chế về mặt tốc độ act vẫn còn phép toán cộng số thực và làm tròn. Có thể khắc phục thao tác cộng số thực thousand và làm tròn trong thuật toán bằng cách nhận xét Dx dysprosium megabyte = với dysprosium, Dx là các số nguyên. 2.2.3. Giải thuật Bresenham Thuật toán Bresenham đưa radium cách chọn 1+iy là iy hay 1+iy theo một hướng khác sao cho có thể tối ưu hóa về mặt tốc độ so với thuật toán DDA. Vấn đề mấu chốt ở đây là làm thế nào để hạn chế tối đa các phép toán trên số thực trong thuật toán. Hình 2.11 – Minh họa thuật toán Bresenham Gọi phosphorus ( ) yx one ,1+ là điểm thuộc đoạn thẳng. tantalum có : ( ) bxmy iodine ++= one. Đặt ( ) yyd yyd one one −+= −= twelve one twenty-four ( adam i+1, yttrium ) p south x one ten i+1 y iodine y one +1 y d one five hundred two
  25. Xét tất cả các vị trí tương đối của yttrium so với iy và 1+iy, việc chọn điểm ( ) eleven, ++ two yx là mho hay phosphorus phụ thuộc vào việc so sánh d1 và d2 hay dấu của twenty-one doctor of divinity − : Nếu 021 < − doctor of divinity, tantalum sẽ chọn điểm south, tức là two yy =+1. Ngược lại, nếu 021 ≥− doctor of divinity, tantalum sẽ chọn điểm p, tức là eleven +=+ two yy. Xét ( ) ( ) 12221 −−=−= two yyDxddDxp ( ) ( ) [ ] 1212 −−++=⇒ three ybxmDxp Thay Dx dysprosium megabyte = vào phương trình trên tantalum được : cDxyDyxp three +−= twenty-two, với ( ) DxbDyc 122 −+=. Nhận xét rằng serve zero > Dx nên dấu của biểu thức twenty-one doctor of divinity − cũng chính là dấu của information science. hay nói một cách khác, nếu tại bước thứ iodine tantalum xác định được dấu của information science thì xem như tantalum xác định được điểm cần chọn ở bước ( i+1 ). Vấn đề còn lại là làm thế nào để tính được information science tại mỗi bước thật nhanh. tantalum có : ( ) ( ) cDxyDyxcDxyDyxpp iiiiii +−−+−=− +++ 2222 111 ( ) ( ) iiiiii yyDxxxDypp −−−=−⇔ +++ 111 twenty-two ( ) 1do,22 111 +=−−=−⇔ +++ iiiiii xxyyDxDypp Từ đây tantalum có thể suy right ascension cách tính 1+ip từ information science như sau : Nếu zero
  26. Cài đặt minh họa thuật toán Bresenham invalidate LineBres ( int x1, int y1, int x2, int y2 ) { int Dx, dysprosium, phosphorus, Const1, Const2 ; int adam, y ; Dx = x2 – x1 ; dysprosium = y2 – y1 ; p = two * dysprosium – Dx ; // ( dysprosium < < one ) - Dx Const1 = two * dysprosium ; // dysprosium < < one twenty-six begin p=2Dy-Dx ; Const1=2Dy ; Const2=2 ( Dy-Dx ) ; x=x1 ; y=y1 ; putpixel ( ten, yttrium, c ) ; ten
  27. Const2 = 2*(Dy-Dx); // ( Dy-Dx ) < < one ten = x1 ; yttrium = y1 ; putpixel ( x, yttrium, color ) ; for ( i=x1 ; one
  28. Hình 2.12 – Minh họa thuật toán center tantalum có dạng tổng quát của phương trình đường thẳng : 0=++ CByAx với ( ) 21121212, , yxyxCxxByyA −=−−=−= Đặt ( ) CByAxyxF ++=, , tantalum có nhận xét : ( ) ( ) ( ) ( )                > = < thaúng.ñöôøngdöôùiphíanaèmyx, neáu,0 thaúngñöôøngveàthuoäcyx, neáu,0 thursday ? ngðý ? ngtrênphíanmyx, neáu,0, yxF Lúc này việc chọn các điểm south, p ở trên được đưa về việc xét dấu của ( )       ++== two one ,12MidPoint2 three yxFFp. Nếu zero
  29. Nhận xét rằng thuật toán center cho kết quả tương tự như thuật toán Bresenham. 2.2.5. Giải thuật sinh đường tròn dùng Bresenham ( scan convert r-2 ) Phương trình đường tròn có tâm là gốc tọa độ, bán kính r là : 222 Ryx =+. Từ phương trình này tantalum có thể đưa về dạng twenty-two xRy −±=. Để vẽ các đường tròn có tâm ( ) two hundred yx, bất kì, đơn giản chỉ cần tịnh tiến các điểm sau chi vẽ xong đường tròn có tâm là gốc tọa độ theo vector tịnh tiến ( ) two hundred yx ,. Một số cách tiếp cận vẽ đường tròn cause tính đối xứng nên để vẽ toàn bộ đường tròn, tantalum chỉ cần vẽ cung ¼ đường tròn sau đó lấy đối xứng để xác định các điểm còn lại. Một trong những cách đơn giản nhất là cho ten chạy từ zero đến roentgen, sau đó tính yttrium từ công thức trên ( chỉ lấy giá trị dương ) rồi làm tròn để xác định giá trị nguyên tương ứng. Cách làm này không hiệu quả do gặp phải các phép toán nhân và lấy căn làm hạn chế tốc độ, ngoài ra đường tròn vẽ radium theo cách này có thể không liền nét ( trừ trường hợp gas constant lớn ) chi ten gần gas constant ( do chỉ có một giá trị yttrium duy nhất cho một giá trị ten ). Chúng tantalum có thể khắc phục điều này bằng cách điều chỉnh đối tượng thay đổi là adam ( rồi tính yttrium theo ten ) hay y ( rồi tính x theo y ) tùy vào giá trị tuyệt đối của hệ số góc đường tròn là lớn hơn hay nhỏ hơn one, nhưng cách làm này đòi hỏi thêm các phép tính toán và kiểm tra nên làm cho thuật toán phức tạp thêm. ( Xem hình 2.14 ) Một cách tiếp cận khác là vẽ các điểm ( ) ( ) ( ), sin, carbon monoxide θθ RR với θ chạy từ 00 đến 900. Cách này sẽ khắc phục hạn chế đường không liền nét của thuật toán trên, tuy nhiên điểm hạn chế chính của thuật toán này đó là chọn bước nhảy cho θ như thế nào cho phù hợp chi bán kính thay đổi. Hình 2.13 – Đường tròn vẽ radium không liền nét theo cách vẽ trên Phương trình đường tròn đi qua tâm có toạ độ ( ninety, yc ) là : ( ten – ninety ) two + ( yttrium – yc ) two = r2 Hình tròn là hình đối xứng tám cách twenty-nine ( 0,17 ) ( 17,0 )
  30. Hình 2.14 Hình tròn đối xứng eight phần Để đơn giản tantalum xét tâm trùng gốc zero : x2 + y2 = r2 tantalum xét các điểm tạo right ascension từ góc phần tư thứ two : từ 450 đến 900, thực hiện theo hướng x, y Giả sử bắt đầu eleven vậy xi+1 = eleven +1 y2 = r2 – ( xi +1 ) two d1 = lolo two – y2 = lolo two – r2 + ( eleven +1 ) two d2 = y2 – ( lolo – one ) two = r2 – ( xi +1 ) two – ( lolo – one ) two private detective = d1 – d2 = two ( xi +1 ) two + lolo two + ( lolo – one ) two -2r2 Xét : principal investigator < zero ( d1 =0 (d1>=d2) chọn điểm nằm trong đường tròn yi+1 = yi +1
    pi = 2(xi +1 )2
    + 2yi
    2
    – 2yi +1 – 2r2
    pi+1 = 2(xi +2 )2
    + 2yi+1
    2
    – 2yi+1 + 1 – 2r2
    pi+1 = pi + 4xi +6 + 2yi+1
    2
    – 2yi
    2
    – 2yi+1 + 2yi
    pi+1 = pi + 4xi +6 + 2(yi+1
    2
    – yi
    2
    )- 2(yi+1 – yi )
    + Nếu pi <0 hay yi+1 = yi pi+1 = pi + 4xi +6 + Nếu pi >=0 hay yi+1 = yi -1
    pi+1 = pi + 4xi +6 – 4yi + 2 + 2
    pi+1 = pi + 4(xi – yi ) + 10
    + Tính p1 : khi đó ứng với x1=0 và y1 =r
    p1 = 2(x1 +1)2
    + y1
    2
    + (y1 – 1)2
    -2r2
    30







  31. ≤≤
    ≤≤
    RyR
    Rx
    2
    2
    2
    2
    0
    = 2 + r2 + ( r-1 ) two – 2r2 = three – 2r 2.2.6. Giải thuật sinh đường tròn center do tính đối xứng của đường tròn ( degree centigrade ) nên tantalum chỉ cần vẽ cung ( C1/8 ) là cung 1/8 đường tròn, sau đó lấy đối xứng. Cung ( C1/8 ) được mô tả như sau ( cung của phần tô xám trong hình vẽ ) : Hình 2.15 – Các vị trí đối xứng trên đường tròn ( cytosine ) tương ứng với ( x, y ) Như vậy nếu có ( ten, y ) ∈ ( C1/8 ) thì các điểm : ( yttrium, x ), ( ten, -y ), ( y, -x ), ( -x, -y ), ( -y, – ten ), ( -y, ten ), ( -x, yttrium ) sẽ thuộc ( deoxycytidine monophosphate ). Chọn điểm bắt đầu để vẽ là điểm ( zero, r ). Dựa vào hình vẽ, nếu ( ) two yx, là điểm nguyên đã tìm được ở bước thứ i, thì điểm ( ) eleven, ++ two yx ở bước thứ ( i+1 ) là sự lựa chọn giữa second và P. Như vậy : { }    −∈ += + + one, one one one three two yyy xx Tương tự như thuật toán center vẽ đoạn thẳng, việc quyết định chọn một trong hai điểm mho và p sẽ được thực hiện thông qua việc xét dấu của một hàm nào đó tại điểm center là điểm nằm giữa chúng. Hình 2.16 – Thuật toán center vẽ đường tròn Đặt ( ) 222, RyxyxF −+=, tantalum có : thirty-one two r ( x, yttrium ) ( -x, yttrium ) ( yttrium, adam ) ( -y, ten ) ( ten, -y ) ( -x, -y ) ( -y, -x ) ( yttrium, -x ) mho p center yttrium one yttrium i -1 ten one ten i+1 q ( adam one +1, y )

  32. ( )
    ( )
    ( ) ( )      > = < troøn.ñöôøngngoaøinaèmyx, neáu troønñöôøngtreânnaèmyx, neáu troønñöôøngtrongnaèmyx, neáu ,0 ,0 ,0 yttrium, xF Xét ( )       −+== two one ,1MidPoint three yxFFp. tantalum có : Nếu zero
  33. RRFyxFp −=





    −=





    −+=
    4
    5
    2
    1
    ,1
    2
    1
    ,1 000
    Lưu đồ thuật toán center vẽ đường tròn Cài đặt minh họa thuật toán center vẽ đường tròn // Ve eight diem department of the interior xung null Put8Pixel ( int ten, int y ) { putpixel ( x, yttrium, color ) ; putpixel ( yttrium, x, color ) ; putpixel ( y, -x, color ) ; putpixel ( ten, -y, color ) ; putpixel ( -x, -y, color ) ; putpixel ( -y, -x, semblance ) ; thirty-three begin p=5/4-R ; x=0 ; y=R ; Put8Pixel ( ten, y, speed of light ) ; x
  34. putpixel(-y, x, Color);
    putpixel(-x, y, color ) ; } // Put8Pixel invalidate CircleMidPoint ( int gas constant ) { int ten, y ; adam = zero ; yttrium = roentgen ; Put8Pixel ( adam, yttrium ) ; phosphorus = one – gas constant ; // 5/4-R while ( ten < y ) { if ( phosphorus < zero ) p += two * ten + three ; else { p += two * ( x -y ) + five ; yttrium -- ; } x++ ; Put8Pixel ( ten, y ) ; } } // CircleMidPoint 2.2.7. Giải thuật sinh đường ellipse Tính đối xứng được thực hiện trên four cách degree fahrenheit ( adam, y ) = b2 x2 + a2 y2 − a2 b2 = zero thirty-four
  35. Hình 2.17. Mô tả giải thuật sinh đường ellipse vector vuông góc với tiếp tuyến gradient =1 tantalum có tiếp tuyến với cung tròn ( độ dốc ) = -1= dy/dx = – fx/fy Trong đó fx=2b2 ten đạo hàm riêng phần của fluorine ( adam, yttrium ) với ten Và fy=2a2 y đạo hàm riêng phần của f ( ten, yttrium ) với y Giả sử tantalum chỉ xét trên góc phần tư thứ nhất : giả sử tantalum chia cung từ ( zero, b ) đến ( a,0 ) tại q, có độ dốc -1 Trên phần one : ten thay đổi thì yttrium thay đổi theo Trên phần two : y thay đổi thì ten thay đổi theo + Xét trên phần one : Bắt đầu từ ( zero, bel ), bước thứ one ( eleven, lolo ) chọn tiếp deoxyadenosine monophosphate ( xi+1, lolo ) bacillus ( xi+1, yi-1 ) Tham số quyết định : private detective = farad ( xi+1, yi-1/2 ) = b2 ( xi+1 ) two + a2 ( yi-1/2 ) two -a2 b2 Pi+1 = farad ( xi+1+1, yi+1-1/2 ) = b2 ( xi+1+1 ) two + a2 ( yi+1-1/2 ) two -a2 b2 Pi+1 – principal investigator = b2 ( ( xi+1+1 ) two – ( xi+1 ) two ) + a2 ( ( yi+1-1/2 ) two – ( yi-1/2 ) two ) Pi+1 = private detective + 2b2 xi+1+ b2 + a2 ( ( yi+1-1/2 ) two – ( yi-1/2 ) two ) – Nếu private detective < zero chọn ampere xi+1=xi+1 yi+1=yi Pi+1 = principal investigator + 2b2 xi ( xi+1 ) +b2 = protease inhibitor + 2b2 eleven +3b2 hay Pi+1 = protease inhibitor + b2 ( 2xi +3 ) - Nếu pi > =0 chọn bel xi+1=xi+1 yi+1=yi -1 thirty-five
  36. Pi+1 = Pi + 2b2 xi ( xi+1 ) +b2 + a2 ( ( yi-1 -1/2 ) two – ( yi-1/2 ) two ) = private detective + 2b2 eleven +3b2 +a2 ( -3yi +9/4 +yi -1/4 ) = principal investigator + 2b2 eleven +3b2 +a2 ( -2yi +2 ) hay Pi+1 = principal investigator + b2 ( 2xi +3 ) + a2 ( -2yi +2 ) – Tính P1 tại ( zero, bacillus ) P1 = f ( x1+1, y1-1/2 ) = b2 + a2 ( b-1/2 ) two -a2 b2 P1 = b2 – a2 barn +a2 /4 + Xét trên phần two : tantalum lấy toạ dộ của pixel sau cùng trong phần one của đường cong để tính giá trị prohibition đầu cho phần two. Giả sử pixel ( xk, yk ) vừa chuyển quét cuối cùng của phần one nhập vào bước j cho phần two ( xj, yj ). pixel kế tiếp có thể là : degree centigrade ( xj, yj-1 ) d ( xj+1, yj-1 ) Tham số quyết định : qj = f ( xj+1/2, yj-1 ) = b2 ( xj+1/2 ) two + a2 ( yj-1 ) two -a2 b2 qj+1 = farad ( xj+1+1/2, yj+1-1 ) = b2 ( xj+1+1/2 ) two + a2 ( yj+1-1 ) two -a2 b2 qj+1 – qj = b2 ( ( xj+1+1/2 ) two – ( xj+1/2 ) two ) + a2 ( ( yj+1-1 ) two – ( yj-1 ) two ) qj+1 = qj + b2 ( ( xj+1+1/2 ) two – ( xj+1/2 ) two ) + a2 – 2a2 yj+1 – Nếu qj < zero chọn vitamin d yj+1=yj-1 xj+1=xj +1 qj+1 = qj + b2 ( ( xj+3/2 ) two - ( xj+1/2 ) two ) + a2 - 2a2 ( yj -1 ) qj+1 = qj + b2 ( 3xj +9/4- xj -1/4 ) +3a2 -2a2 yj hay qj+1 = qj + b2 ( 2xj +2 ) +a2 ( -2yj +3 ) - Nếu qj > =0 chọn vitamin c yj+1=yj -1 xj+1= xj qj+1 = qj + a2 – 2a2 ( yj-1 ) hay qj+1 = qj + a2 ( three – 2yj ) – Tính q1 : thirty-six
  37. q1 = f(xk+1/2,yk -1 ) = b2 ( xk+1/2 ) two + a2 ( yk-1 ) two -a2 b2 Câu hỏi : lúc lấy đối xứng four cách để tìm one ellipse hoàn chỉnh từ các toạ độ pixel được tạo ra với cung phần tư thứ one. Có hiện tượng overstrike xảy ra hay không ? Trả lời : hiện tượng overstrike xảy right ascension tại : ( zero, b-complex vitamin ) ; ( zero, -b ) ; ( a,0 ) ; ( -a,0 ) Thuật toán # include
    #include
    #define ROUND(a) ((long)(a+0.5))
    void plot(int xc, int yc, int x, int y, int color){
    putpixel(xc+x, yc+y, color);
    putpixel(xc-x, yc+y, color);
    putpixel(xc+x, yc-y, color);
    putpixel(xc-x, yc-y, color);
    }
    void Mid_ellipse(int xc, int yc, int a, int b, int color){
    long x, y, fx, fy, a2, b2, p;
    x = 0;
    y = b;
    a2 = a * a; //a2
    b2 = b * b; // b2
    fx = 0;
    fy = 2 * a2 * y; // 2a2y
    plot(xc, yc, x,y, color);
    p = ROUND(b2-(a2*b)+(0.25*a)); // p=b2 – a2b + a2/4
    while (fx < fy){ x++; fx += 2*b2; //2b2 if (p<0) p += b2*(2*x +3); // p=p + b2 (2x +3) else{ 37
  38. y–;
    p+= b2*(2*x +3) + a2 * ( -2 * y +2 ) ; // phosphorus = p + b2 ( 2x +3 ) + a2 ( -2y +2 ) fy -= two * a2 ; // 2a2 } plot ( ninety, yc, x, y, semblance ) ; } p=ROUND ( b2 * ( x+0.5 ) * ( x+0.5 ) +a2 * ( y-1 ) * ( y-1 ) – a2 * b2 ) ; //b2 ( x+1/2 ) 2+a2 ( y-1 ) two – a2b2 while ( y > zero ) { yttrium — ; fy -= two * a2 ; // 2a2 if ( p > =0 ) p+=a2 * ( three – two * y ) ; p =p + a2 ( 3-2y ) else { x++ ; fx += two * b2 ; // 2b2 p += b2 * ( two * x+2 ) + a2 * ( -2 * yttrium +3 ) ; //p=p + b2 ( 2x +2 ) +a2 ( -2y +3 ) } diagram ( ninety, yc, adam, y, color ) ; } } null main ( ) { int gr_drive = detect, gr_mode ; initgraph ( & gr_drive, & gr_mode, “ ” ) ; Mid_Ellipse ( getmaxx ( ) / two, getmaxy ( ) / two, one hundred fifty, eighty, four ) ; getch ( ) ; closegraph ( ) ; } 2.2.8. Giải thuật sinh ký tự Trong màn hình text, truy xuất các ký tự trên màn hình được hỗ trợ bởi phần cứng. Các ký tự được lưu trữ trong bộ nhớ read-only memory, dưới dạng bitmap hay các ma trận ảnh. Phần cứng sẽ đưa ký tự lên màn hình tại ví trí xác định, tính toán cuốn trang và xuống dòng. thirty-eight
  39. Trong đồ hoạ:
    + vector : định nghĩa các ký tự theo những đường cong mềm bao ngoài của chúng, tốn kém về mặt tính toán. – phức tạp ( tính toán phương trình ) – lưu trữ gọn nhẹ – các phép biến đổi dựa vào công thức biến đổi – Kích thước phụ thuộc vào môi trường ( không có kích thước – cố định ) Hình 2.18 Ký tự vector + bitmap : định nghĩa mỗi ký tự với one font chữ cho trước là one ảnh bitmap hình chữ nhật nhỏ. – Đơn giản trong việc sinh ký tự ( copypixel ) – Lưu trữ lớn – Kích thước không đổi Hình 2.18 Ký tự bitmap 2.2.9. Giải thuật sinh đa giác ( polygon ) a. Thuật giải vẽ đường bao đa giác Việc biểu diễn đa giác thông qua : – Tập các đoạn thẳng – Tập các điểm thuộc đa giác Các loại đa giác : Hình 2.19 Các loại đa giác thirty-nine
  40. Đa giác lồi: là đa giác có đường thẳng nối bất ký two điểm bên trong nào của đa giác đều nằm trọn trong đa giác. Đa giác không lồi là đa giác lõm. b. Các thuật toán tô miền kín đa giác Các vùng tô là một trong những đối tượng đồ họa cơ sở được hầu hết các công cụ lập trình đồ họa hỗ trợ. Có hai dạng vùng tô thường gặp đó là : tô bằng một màu thuần nhất ( solid meet ) hay tô theo một mẫu tô ( fill-pattern ) nào đó. Một vùng tô thường được xác định bởi một đường khép kín nào đó gọi là đường biên. Một trong những dạng đường biên đơn giản nhất đó là đa giác. Để tô màu một vùng tô, người tantalum thường chia làm hai công đoạn : công đoạn thứ nhất là xác định các điểm nào để tô và công đoạn còn lại đơn giản hơn đó là quyết định tô các điểm đó bằng giá trị màu nào. Công đoạn thứ hai chỉ thực sự phức tạp nếu tantalum tô theo một mẫu tô nào đó không phải là tô thuần một màu. Có hai cách tiếp cận chính để tô màu một vùng tô đối với thiết bị hiển thị dạng điểm đó là : tô theo dòng quét ( scan-line fill ) và tô dựa theo đường biên ( boundary fill ). Phương pháp tô theo dòng quét sẽ xác định các phần giao của các dòng quét kế tiếp nhau với đường biên của vùng tô, sau đó sẽ tô màu các điểm thuộc về phần giao này. Cách tiếp cận này thường được dùng để tô màu các đa giác, đường tròn, ellipse, và một số đường cong đơn giản khác. Phương pháp tô dựa theo đường biên sẽ bắt đầu từ một điểm ở bên trong vùng tô và từ đó loang dần radium cho tới chi tantalum gặp các điểm biên. Cách tiếp cận này thường được dùng cho các vùng tô có dạng đường biên phức tạp hơn. forty
  41. Bài tập
    1. Thiết kế và cài đặt hàm vẽ hình chữ nhật, đường gấp khúc, đa giác từ hàm vẽ đoạn thẳng. two. Trong phần trình bày thuật toán Bresenham để vẽ đường thẳng, hãy cho biết với cách đặt d1, d2 như vậy, có chi nào d1, d2 lấy giá trị âm hay không ? Nếu có hãy cho ví dụ minh họa. three. Tại sao phải therefore sánh information science với giá trị zero trong các thuật toán Bresenham, center. Bản chất của việc sol sánh này là gì ? four. Cài đặt các thuật toán DDA, Bresenham, center vẽ đoạn thẳng qua hai điểm cho trước trong trường hợp tổng quát với hệ số góc meter lấy giá trị bất kì. five. Người tantalum có thể cải thiện tốc độ cài đặt thuật toán vẽ đoạn thẳng bằng cách chỉ cần vẽ một nửa đoạn thẳng, phần còn lại lấy đối xứng nửa đoạn thẳng đã vẽ. Hãy cài đặt minh họa. six. Cho biết các điểm nguyên vẽ phát sinh chi sử dụng các thuật toán DDA, center cho các đoạn thẳng đi qua các điểm lần lượt là A1 ( 5,10 ), B1 ( 15,17 ) ; A2 ( -2,3 ), B2 ( -12,7 ) ; A3 ( 6,3 ), B3 ( 9,13 ) ; A4 ( 2,4 ), B4 ( -5,14 ) ; A5 ( 0,10 ), B5 ( 15,10 ) ; A6 ( five, -1 ), B6 ( five, -11 ) ; seven. Trình bày thuật toán center vẽ cung tròn 1/8, bán kính radius, tâm i ( ninety, yC ) và được giới hạn bởi : eight. Sử dụng ý tưởng của thuật toán Bresenham, xây dựng thuật toán vẽ đường tròn có tâm là gốc tọa độ, bán kính R. nine. Giải thích tại sao chỉ chọn cung 1/8 để vẽ rồi lấy đối xứng mà không mở rộng cho cung 1/16 hay 1/32. 10.Giải thích tại sao có thể thay công thức p0 = 5/4 – r bằng công thức p0 = 1- radius chi cài đặt thuật toán center vẽ đường tròn. 11.Trình bày thuật toán Bresenham vẽ đường tròn bán kính radius, từ đó nhận xét về cách tiếp cận của thuật toán center có gì lợi hơn then với thuật toán Bresenham. 12.Xây dựng và cài đặt thuật toán vẽ ellipse có tâm là gốc tọa độ với bán kính trục chính, bán kính trục phụ lần lượt là angstrom, barn. forty-one        ≤≤ ≤≤ two two zero two two Ry RxR
  42. 13.Dựa vào thuật toán vẽ đường tròn để xây dựng thủ tục vẽ một cung tròn ( arc ) tâm ( ten, yttrium ) bán kính r, biết góc bắt đầu và kết thúc của cung lần lượt là α, β .. 14.Dựa vào thuật toán vẽ ellipse để xây dựng thủ tục vẽ một cung ( proto-indo european slice ) tâm ( x, yttrium ) và bán kính trục chính, trục phụ lần lượt là a, b, góc bắt đầu và kết thúc của cung lần lượt là α, β. 15.Hãy tìm hiểu các cài đặt tối ưu hơn cho các thuật toán vẽ đoạn thẳng và vẽ đường tròn, ellipse. 16.Xây dựng và cài đặt thuật toán vẽ các parabol a ten y two =, và Axy =2 với a là số nguyên bất kì. 17.Xây dựng và cài đặt thuật toán vẽ các hyperbol twelve two two two =− bel yttrium angstrom x, và twelve two two two −=− b yttrium a ten với a, b là các số nguyên bất kì. 18.Xây dựng và cài đặt thuật toán vẽ các đường cong sau : ampere. ) sin ( θω += xAy, với vitamin a nguyên. b. ) carbon monoxide ( θω += xAy, với angstrom nguyên. c. two Axy =, với vitamin a nguyên. d. Axy /3 =, với vitamin a nguyên. e. 042422 =−+++ yxyx f. 021618259 twenty-two =−−+ xyx g. 0100100 two =−+ xxy h. 07425 =−−+ yxxy 19.Các bước chính của các thuật toán vẽ đường dạng ( ) xfy =. Minh họa cho các trường hợp vẽ đường thẳng, đường tròn. 20.Bản chất của quá trình vẽ các đường đơn giản theo từng điểm là rời rạc hóa và nguyên hóa. Hãy cho biết lí doctor of osteopathy tại sao, bước nào trong thuật toán tổng quát thể hiện hai ý trên. Minh họa bằng các đường đã học. 21.Các thuật toán vẽ đường bao hàm rất lớn kĩ thuật tối ưu hóa chương trình. Hãy minh họa qua các đối tượng đã học. 22.Ý nghĩa của danh sách kích hoạt AET trong thuật toán tô màu đa giác theo dòng quét. Cấu trúc dữ liệu và nguyên tắc hoạt động của AET. forty-two
  43. 23.Cài đặt thuật toán tô màu đa giác theo dòng quét bằng cách dùng xâu liên kết thay vì dùng mảng như cài đặt minh họa. 24.Cài đặt thuật toán tô màu theo đường biên không dùng đệ quy. 25.Xây dựng và cài đặt thuật tô màu đường tròn, ellipse. forty-three
  44. Chương 3: Các phép biến đổi đồ hoạ 3.1. Các phép biến đổi hình học hai chiều Một trong những ưu điểm quan trọng của đồ họa là cho phép dễ dàng thao tác lên các đối tượng đã được tạo radium. Một nhà quản lí có nhu cầu thu nhỏ các biểu đồ trong một báo cáo, một kiến trúc sư muốn nhìn tòa nhà ở những góc nhìn khác nhau, một nhà thiết kế muốn quan sát và chỉnh sửa các mẫu đối tượng trong quá trình thiết kế, … Tất cả các thao tác này có thể được hỗ trợ một cách dễ dàng nhờ vào các phép biến đổi hình học. Các phép biến đổi hình học sẽ làm thay đổi mô tả về tọa độ của các đối tượng, từ đó làm cho đối tượng bị thay đổi về hướng, kích thước và hình dạng. Các phép biến đổi hình học cơ sở bao gồm : tịnh tiến ( translation ), quay ( rotation ) và biến đổi tỉ lệ ( scale ). Ngoài ra một số phép biến đổi khác cũng thường được áp dụng đó là phép đối xứng ( reflection ) và biến dạng ( fleece ). Có hai quan điểm về phép biến đổi hình học đó là : biến đổi đối tượng ( object transformation ) và biến đổi hệ tọa độ ( coordinate transformation ). Biến đổi đối tượng là thay đổi tọa độ của các điểm mô tả nó theo một quy tắc nào đó, còn biến đổi hệ tọa độ là tạo ra một hệ tọa độ mới và tất cả các điểm mô tả đối tượng sẽ được chuyển về hệ tọa độ mới. Hai cách này có những mối liên hệ chặt chẽ với nhau và mỗi cách đều có những lợi thế riêng. Chúng tantalum sẽ bàn về phép biến đổi đối tượng trước. 3.1.1. Phép biến đổi affine ( affine transformation ) Phép biến đổi affinal là phép biến đổi tuyến tính tọa độ điểm đặc trưng của đối tượng thành tập tương ứng các điểm mới để tạo radium các hiệu ứng cho toàn đối tượng. Ví dụ : phép biến đổi tọa độ với chỉ two điểm đầu cuối của đoạn thẳng tạo thành two điểm mới mà chi nối chúng với nhau tạo thành đoạn thẳng mới. Các điểm nằm trên đoạn thẳng sẽ có kết quả là điểm nằm trên đoạn thẳng mới với cùng phép biến đổi thông qua phép nội suy. 3.1.2. Các phép biến đổi đối tượng Một phép biến đổi hai chiều sẽ biến đổi điểm p trong mặt phẳng thành điểm có tọa độ mới q theo một quy luật nào đó. Về mặt bản chất, một phép biến đổi điểm là một ánh xạ thyroxine được định nghĩa : ( ) ( ) ‘, ‘, : twenty-two yxQyxP deoxythymidine monophosphate  RR → forty-four
  45. Nói cách khác, deoxythymidine monophosphate là hàm số ( ) yxT, theo hai biến ( ) yx, : ( ) ( )    = = yxgy yxfx, ‘, ‘ Phép biến đổi affinal là phép biến đổi với ( ) yxf, và ( ) yxg, là các hàm tuyến tính. Phép biến đổi này có dạng : zero, ,, ,, ,, ‘ ‘ ≠−∈    ++= ++= bcadRfedcba fdybxy ecyaxx. tantalum chỉ khảo sát các phép biến đổi affine nên từ nay về sau tantalum dùng cụm từ “ phép biến đổi ” thay cho “ phép biến đổi affinal ”. Phép tịnh tiến Để tịnh tiến một điểm ( ) yxP, từ vị trí này sing vị trí khác trong mặt phẳng, tantalum cộng thêm các giá trị mô tả độ dời vào các tọa độ của P. Nếu gọi xtr và ytr lần lượt là độ dời theo trục hoành và trục tung tree thì tọa độ của điểm mới ( ) ‘, ‘ yxQ sẽ là :    += += y ten tryy trxx ‘ ‘, ( ) yx trtr, còn được gọi là vector tịnh tiến hay vector độ dời. Chúng tantalum có thể dịch chuyển toàn bộ một đối tượng bằng cách áp dụng quy tắc trên cho mọi điểm thuộc đối tượng. Để tịnh tiến một đoạn thẳng, đơn giản chỉ cần tịnh tiến hai điểm đầu và cuối của nó rồi sau đó vẽ lại đoạn thẳng nối hai điểm mới. Với đa giác, tantalum tịnh tiến các đỉnh của nó sau đó vẽ lại đa giác với các đỉnh mới. Một cách tương tự, để tịnh tiến các đối tượng như đường tròn, ellipse, tantalum tịnh tiến tâm của chúng tới vị trí mới rồi vẽ lại. Hình 3.1 – Phép tịnh tiến một điểm ( angstrom ) và đối tượng với vector tịnh tiến ( -4,2 ) ( boron ) Phép biến đổi tỉ lệ Phép biến đổi tỉ lệ làm thay đổi kích thước đối tượng. Để cobalt hay giãn tọa độ của một điểm ( ) yxP, theo trục hoành và trục tung tree lần lượt là ten và yttrium, tantalum nhân ten và yttrium lần lượt cho các tọa độ của P.    = = ysy xsx y ten. ‘. ‘, x và yttrium được gọi là các hệ số tỉ lệ. forty-five phosphorus ten yttrium q tr x tr y ( angstrom ) y adam ( 2,3 ) ( 4,3 ) ( 6,1 ) ( 8,1 ) ( boron )
  46. Khi các giá trị ten, yttrium nhỏ hơn one, phép biến đổi sẽ thu nhỏ đối tượng, ngược lại chi các giá trị này lớn hơn one, phép biến đổi sẽ phóng lớn đối tượng. chi ten, yttrium bằng nhau, tantalum gọi đó là phép đồng dạng ( uniform scale ), phép đồng dạng là phép biến đổi bảo toàn tính cân xứng của đối tượng. Tâm tỉ lệ là điểm không bị thay đổi qua phép biến đổi tỉ lệ. Phép biến đổi tỉ lệ mô tả như trên còn gọi là phép biến đổi tỉ lệ quanh gốc tọa độ vì có tâm tỉ lệ là gốc tọa độ. Nhận xét rằng chi phép biến đổi tỉ lệ thu nhỏ đối tượng, đối tượng sẽ được dời về gần gốc tọa độ hơn, tương tự chi phóng lớn đối tượng, đối tượng sẽ được dịch chuyển xa gốc tọa độ hơn. Hình 3.2 – Phép biến đổi tỉ lệ với 5.2=xs và 5.0=ys Phép quay Phép quay làm thay đổi hướng của đối tượng. Một phép quay đòi hỏi phải có tâm quay, góc quay. Góc quay dương thường được quy ước là chiều ngược chiều kim đồng hồ. tantalum có công thức biến đổi của phép quay điểm ( ) yxP, quanh gốc tọa độ một góc α :    += −= yxy yxx .cos.sin’ .sin.cos’ αα αα Hình 3.3 – Phép quay một đối tượng quanh gốc tọa độ một góc 600 Biểu diễn milliampere trận của phép biến đổi Trong nhiều ứng dụng đồ họa, người dùng thường xuyên có nhu cầu thực hiện nhiều phép biến đổi hình học khác nhau trên một đối tượng để tạo right ascension các hiệu quả như mong muốn. Ví dụ trong các ứng dụng thiết kế, chúng tantalum cần phải thực hiện nhiều phép tịnh tiến, quay, tỉ lệ để có thể khớp từng phần của đối tượng vào đúng vị trí của chúng, hay sau chi thực hiện các phép biến đổi nhưng không được ưng ý, người dùng muốn trở lại hiện trạng trước chi biến đổi ( unwrap ), … do đó cần forty-six yttrium x ( 2,3 ) ( 4,3 ) ( 10,1.5 ) ( 5,1.5 ) y x
  47. phải có một cách nào đó để có thể xử lí dãy các phép biến đổi trên được nhanh chóng và hiệu quả. Nếu tantalum biểu diễn tọa độ của điểm ( ) yxP, và ( ) ‘, ‘ yxQ dưới dạng các vector dòng lần lượt là ( ) yx và ( ) ” yx thì các phép biến đổi tịnh tiến, tỉ lệ, quay có thể được biểu diễn dưới dạng ma trận như sau : Phép tịnh tiến ( ) ( ) ( ) yx trtryxyx += ” hay TPQ += với ( ) yx trtrT = Phép biến đổi tỉ lệ ( ) ( )         = y ten randomness south yxyx zero zero ” hay SPQ .= với         = yttrium adam second south s zero zero Phép quay quanh gốc tọa độ ( ) ( )       − = αα αα cossin sincos ” yxyx hay RPQ .= với       − = αα αα cossin sincos r Với cách biểu diễn này, chúng tantalum sẽ gặp khó khăn chi muốn kết hợp các phép biến đổi lại với nhau vì biểu diễn của phép tịnh tiến khác với dạng của các phép biến đổi tỉ lệ và quay. Chính vì vậy mà cần phải có một cách nào đó để biểu diễn bachelor of arts phép biến đổi này về một dạng duy nhất để có thể dễ dàng xử lí sau này. 3.2. Toạ độ đồng nhất và các phép biến đổi 3.2.1. Toạ độ đồng nhất Tọa độ thuần nhất của một điểm trên mặt phẳng được biểu diễn bằng bộ barium số tỉ lệ ( ) hyx hh, , không đồng thời bằng zero và liên hệ với các tọa độ ( ) yx, của điểm đó bởi công thức : hydrogen y yttrium h x x hh ==, Nếu một điểm có tọa độ thuần nhất là ( ) zyx, , thì nó cũng có tọa độ thuần nhất là ( ) zhyhxh. ,. ,. trong đó henry là số thực khác zero bất kì. Tọa độ thuần nhất của một điểm trong không gian barium chiều hay có số chiều lớn hơn cũng được xác định một cách tương tự. forty-seven
  48. Về mặt toán học, việc đưa tọa độ thuần nhất vào là do sự cần thiết phải bổ sung cho mặt phẳng euclid các điểm xa vô tận ( ) zero, , yx ( điểm phi chính ) có tọa độ thứ barium bằng zero, điều này dẫn đến khái niệm mặt phẳng xạ ảnh trong hình học xạ ảnh. Trong hệ tọa độ thuần nhất, các điểm xa vô tận không đóng một vai trò gì đặc biệt so với các điểm khác của mặt phẳng. Với các phép biến đổi hình học đang khảo sát, nếu một điểm được biểu diễn dưới dạng tọa độ thuần nhất, cả barium phép biến đổi trên đều được biểu diễn dưới dạng tích các massachusetts trận. Điều này giúp cho việc khảo sát các tính chất và sự kết hợp của các phép biến đổi này được thuận tiện do mỗi phép biến đổi được đại diện bởi một ma trận duy nhất. Bộ bachelor of arts các tọa độ thường biểu diễn các điểm trong không gian bachelor of arts chiều, nhưng ở đây tantalum sử dụng chúng để biểu diễn các điểm trong không gian hai chiều. Mối liên hệ ở đây là : nếu chúng tantalum xét tất cả các bộ barium tọa độ thuần nhất biểu diễn cho cùng một điểm, nghĩa là bộ bachelor of arts số có dạng ( h.x, h.y, h.z ), với 0≠h, chúng tantalum sẽ nhận được một đường thẳng trong không gian bachelor of arts chiều. Để đơn giản hóa chúng tantalum có thể chọn h=1, lúc này mỗi điểm ( ) yxP, sẽ được biểu diễn dưới dạng tọa độ thuần nhất là ( ) one, , yx. 3.2.2. Phép biến đổi với toạ độ đồng nhất Phép tịnh tiến ( ) ( )           = one 010 001 .11 ” yx trtr yxyx hay ( ) yxT trtrMPQ, .= với ( )           = one 010 001, yx yxT trtr trtrM Phép biến đổi tỉ lệ ( ) ( )           = hundred 00 00 .11 ” yttrium ten randomness second yxyx hay ( ) yxS ssMPQ, .= với ( )           = hundred 00 00, y adam yxS s s ssM Phép quay quanh gốc tọa độ ( ) ( )           −= hundred 0cossin 0sincos .11 ” αα αα yxyx forty-eight
  49. hay ( )αRMPQ .= với ( )           −= hundred 0cossin 0sincos αα αα αRM 3.3. Các phép biến đổi hình học bachelor of arts chiều Các đối tượng trong thế giới thực phần lớn là các đối tượng bachelor of arts chiều, nên việc thể hiện các đối tượng bachelor of arts chiều trên máy tính là một công việc hết sức cần thiết để đưa tin học gần gũi với thực tế hơn. Cũng giống như các cách biểu diễn các đối tượng bachelor of arts chiều trên mặt phẳng khác ( như của máy ảnh, television camera, … ), biểu diễn bằng máy tính cũng phải tuân theo các quy luật về phối cảnh, sáng, tối, … nhằm giúp người xem có thể tưởng tượng lại hình ảnh một cách gần đúng nhất. Ngoài ra biểu diễn trên máy tính có ưu thế giúp tantalum có thể quan sát đối tượng ở nhiều góc cạnh khác nhau, ở các khoảng cách khác nhau. Chương này sẽ giới thiệu một số kĩ thuật biểu diễn các đối tượng barium chiều trên máy tính, từ các đối tượng đơn giản như các hình khối, các đa diện, … đến các đối tượng tương đối phức tạp như các mặt đã được tìm hiểu ở các chương trước. Tổng quan về đồ họa barium chiều chi chúng tantalum mô hình hóa và hiển thị một cảnh bachelor of arts chiều, tantalum cần phải xem xét rất nhiều khía cạnh và vấn đề khác nhau chứ không đơn giản là thêm vào tọa độ thứ barium cho các đối tượng. Bề mặt đối tượng có thể xây dựng bởi nhiều tổ hợp khác nhau của các mặt phẳng và các mặt cong. Ngoài ra, đôi chi chúng tantalum cũng cần mô tả một số thông can về bên trong các đối tượng. Các công cụ hỗ trợ đồ họa ( artwork package ) thường cung cấp một số hàm hiển thị các thành phần bên trong, những đường nét tiêu biểu hoặc hiển thị một phần của đối tượng bachelor of arts chiều ( solid object ). Ngoài radium, các phép biến đổi hình học thường được sử dụng nhiều hơn và đa dạng hơn trong đồ họa bachelor of arts chiều so với trong đồ họa hai chiều. Phép biến đổi hệ quan sát trong không gian barium chiều phức tạp hơn nhiều so với trong không gian hai chiều practice chúng tantalum phải chọn lựa nhiều tham số hơn chi mô tả một cảnh barium chiều sẽ xuất hiện trên màn hình như thế nào. Các mô tả về một cảnh barium chiều phải đi qua một quy trình xử lí gồm nhiều công đoạn như phép biến đổi hệ tọa độ quan sát và phép chiếu chuyển cảnh từ hệ tọa độ quan sát bachelor of arts chiều xuống hệ tọa độ thiết bị hai chiều. Những phần nhìn thấy được của cảnh, ứng với một hệ quan sát được chọn nào đó, phải được xác định và cuối cùng, các thuật toán vẽ mặt sẽ được áp dụng nhằm tạo radium hình ảnh trung thực ( gần với thực tế ) của cảnh. Sơ lược về quy trình hiển thị forty-nine
  50. Quy trình xử lí thông can trong đồ họa bachelor of arts chiều là một chuỗi các bước nối tiếp nhau, kết quả của mỗi bước sẽ là đầu vào của bước tiếp theo. Quy trình bắt đầu bằng việc xây dựng các mô hình đối tượng. Các mô hình này thường được mô tả trong không gian barium chiều ( adam, yttrium, omega ). Các mô hình thường thể hiện vật thể ( firm ) hoặc bề mặt ( boundary ) của đối tượng. Như vậy tantalum có hai kiểu mô hình hóa. Trong solid model các đối tượng đồ họa cơ sở thường được dùng để mô tả các đối tượng có thể tích ( volume ). Trong boundary representation ( B-reps ), các đối tượng được định nghĩa bởi bề mặt của chúng. Các mô hình thường được biểu diễn trong một hệ tọa độ cục bộ, mà tantalum gọi là hệ tọa độ đối tượng. Trong hệ tọa độ này chỉ có bản thân đối tượng được định nghĩa, vì vậy gốc tọa độ và đơn vị đo lường thường được chọn sao cho việc biểu diễn đối tượng tiện lợi nhất. Bước đầu tiên trong quy trình hiển thị là biến đổi đối tượng từ không gian đối tượng ( object-space ) vào một không gian chung gọi là không gian thực ( global space ). Trong không gian này các đối tượng, nguồn sáng, và người quan sát cùng tồn tại. Bước này được gọi là giai đoạn biến đổi mô hình ( model transformation ). Bước tiếp theo là một bước tối ưu hóa. Trong giai đoạn loại bỏ đơn giản ( superficial rejection ) tantalum cần loại trừ tất cả các đối tượng không thể nhìn thấy. Điều này giúp chúng tantalum tránh được việc xử lí một số phần không cần thiết của cảnh ( scene ) mà tantalum đang chuẩn bị hiển thị ở các bước sau. Tiếp theo tantalum phải chiếu sáng ( miniature ) các đối tượng có thể nhìn thấy được bằng cách gán cho chúng màu sắc dựa trên các đặc tính của các chất tạo nên vật và các nguồn sáng tồn tại trong cảnh. Sau chi chiếu sáng, tantalum phải thực hiện một phép biến đổi hệ tọa độ để đặt vị trí quan sát ( screening position ) về gốc tọa độ và mặt phẳng quan sát ( watch plane ) về một vị trí mong ước. Bước này gọi là bước đổi hệ quan sát. Sau bước này, các đối tượng được chuyển từ không gian thực sing không gian quan sát ( eye distance ). Trong không gian quan sát, tantalum phải thực hiện việc xén các đối tượng trong cảnh để cảnh nằm gọn trong một phần không gian chóp cụt mà tantalum gọi là view frustum. Bước này sẽ loại bỏ hoàn toàn các đối tượng ( các mảnh đối tượng ) không nhìn thấy được trong ảnh. Bước tiếp theo tantalum sẽ chiếu các đối tượng xuống mặt phẳng hai chiều. Bước projection thực hiện phép biến đổi từ không gian quan sát sing không gian màn hình ( screen-space ). fifty
  51. Trong bước rời rạc hóa ( rasterization ) tantalum sẽ chuyển đối tượng thành các pixel. Cuối cùng, toàn cảnh sẽ được hiển thị lên màn hình. MÔ HÌNH KHUNG NỐI KẾT ( WIREFRAME model ) Khái niệm Một phương pháp thông dụng và đơn giản để mô hình hóa đối tượng là mô hình khung nối kết. Một mô hình khung nối kết gồm có một tập các đỉnh và tập các cạnh nối giữa các đỉnh đó. chi thể hiện bằng mô hình này, các đối tượng barium chiều có vẻ rỗng và không giống thực tế lắm. Để hoàn thiện hơn, người tantalum dùng các kĩ thuật tạo bóng và loại bỏ các đường và mặt khuất. ( Chúng tantalum sẽ đề cập vấn đề này ở các chương sau ). Tuy nhiên vẽ bằng mô hình này thường nhanh nên người tantalum thường dùng nó trong việc xem phác thảo ( preview ) các đối tượng, đặc biệt là trong các hệ computer-aided design. Biểu diễn các vật thể bachelor of arts chiều bằng mô hình khung nối kết Với mô hình khung nối kết, hình dạng của đối tượng bachelor of arts chiều được biểu diễn bằng hai danh sách ( list ) : danh sách các đỉnh ( vertex ) và danh sách các cạnh ( border ) nối các đỉnh đó. Danh sách các đỉnh cho biết thông tin hình học đó là vị trí các đỉnh, còn danh sách các cạnh xác định thông tin về sự kết nối, nó cho biết cặp các đỉnh tạo right ascension cạnh. Chúng tantalum hãy quan sát một vật thể barium chiều được biểu diễn bằng mô hình khung nối kết như sau : Bảng danh sách các cạnh và đỉnh biểu diễn vật thể vertex list edge list vertex x yttrium omega edge Vertex1 Vertex2 one zero zero zero back slope one one two two zero one zero two two three three zero one one three three four four zero 0.5 1.5 four four five five zero zero one five five one six one zero zero front side six six seven seven one one zero seven seven eight eight one one one eight eight nine nine one 0.5 1.5 nine nine ten ten one zero one ten ten six eleven one six fifty-one
  52. 12 2 7
    13 three eight fourteen four nine fifteen five ten sixteen two five seventeen one three Có nhiều cách để đặc tả mô hình khung nối kết trên máy tính như dùng xâu, mảng, … và mỗi cách đều có các ưu điểm riêng trong từng ứng dụng cụ thể. Ở đây tantalum minh họa các biểu diễn mô hình khung nối kết bằng cấu trúc dữ liệu mảng như sau : # define MAXVERTS50 //số đỉnh tối đa có thể biểu diễn # define MAXEDGES hundred //số cạnh tối đa typedef struct { float ten, y, z ; } POINT3D ; typedef struct { int NumVerts ; //Số đỉnh trong mô hình int NumEdges ; //Số cạnh trong mô hình POINT3D Vert [ MaxVerts ] ; int edge [ MaxEdges ] [ two ] ; } WIREFRAME ; fifty-two
  53. Hình3.4 – Vật thể bachelor of arts chiều được biểu diễn bằng mô hình khung nối kết Ngoài radium, đôi chi trong mô hình wireframe người tantalum còn mô tả các mặt ( phẳng ) của đối tượng. Mỗi mặt được định nghĩa bởi một đa giác bao. Ví dụ, đối tượng trong hình 3.1 có seven mặt. 3.3.1.Biểu diễn điểm trong không gian three chiều Một số khái niệm liên quan Phép biến đổi affinal Phép biến đổi affinal là phép biến đổi tuyến tính, khả nghịch. Phép biến đổi này bảo toàn tính song birdcall của các đường thẳng cũng như bảo toàn tính tỉ lệ về khoảng cách của các đoạn thẳng. Tuy nhiên, phép biến đổi này không bảo toàn góc nghiêng và chiều dài các đoạn thẳng. Các phép biến đổi này cũng bảo toàn tỉ lệ về khoảng cách ( xem thêm chương three ) Các hệ trục tọa độ theo quy ước bàn tay phải và bàn tay trái Hình 3.5 – Các hệ tọa độ theo quy ước bàn tay phải ( angstrom ) và quy ước bàn tay trái ( bel ) Hệ tọa độ descartes barium chiều có thể định nghĩa theo quy ước bàn tay trái hoặc bàn tay phải ( xem hình 3.2 ). fifty-three z one one ten yttrium one one two three forty-five six seven eight nine ten yttrium xz ( ampere ) zyx =∧ ten y omega zxy =∧ ( barn )
  54. Định nghĩa
    Hệ tọa độ theo quy ước bàn tay phải là hệ tọa độ với các trục x, yttrium, z thỏa điều kiện : Nếu để bàn tay phải sao cho ngón cái hướng cùng chiều với trục omega, chi nắm tay lại, chiều các ngón tay chuyển động theo hướng từ trục adam đến trục y. Hệ tọa độ theo quy ước bàn tay trái là hệ tọa độ với các trục ten, y, omega thỏa điều kiện : Nếu để bàn tay trái sao cho ngón cái hướng cùng chiều với trục omega, chi nắm tay lại, chiều các ngón tay chuyển động theo hướng từ trục ten đến trục y. Hệ tọa độ thuần nhất Trong hệ tọa độ thuần nhất, mỗi điểm ( x, yttrium, z ) trong không gian descartes được biểu diễn bởi một bộ bốn tọa độ trong không gian four chiều thu gọn ( ) hhzhyhx, , ,. Để tiện lợi, người tantalum thường chọn h=1. Như vậy, một điểm ( adam, y, omega ) trong hệ tọa độ descartes sẽ biến thành điểm ( ten, y, z, one ) trong hệ tọa độ thuần nhất ; còn điểm ( ten, yttrium, z, tungsten ) trong hệ tọa độ thuần nhất ( với west ≠ zero ) sẽ tương ứng với điểm ( x/w, y/w, z/w ) trong hệ tọa độ descartes ( xem hình 3.3 ). Hình 3.6 – Các điểm trong hệ tọa độ thuần nhất và descartes Dạng ma trận của phép biến đổi affine trong hệ tọa độ thuần nhất Hình 3.7 – Daïng toång quaùt cuûa pheùp bieán ñoåi affinal barium chieàu Phép biến đổi affine barium chiều biến điểm phosphorus thành điểm q có dạng : MPQ .=, trong đó ( ) one, ,, zyx QQQQ =, ( ) one, ,, zyx PPPP = và m là massachusetts trận biến đổi 4×4 trong hệ tọa độ thuần nhất ( ) zyx trtrtrtr, ,= là vector tịnh tiến. fifty-four adam tungsten w=1 homogeneous ( ten, y, z, w ) project homogeneous ( x/w, y/w, z/w,1 ) descartes ( x/w, y/w, z/w ) ( ) ( )               = one zero zero zero .11 ” ‘ zyx trtrtr ihg feed cba zyxzyx tæ leä, quay, bieán daïng tònh tieán
  55. 3.3.2. Phép tịnh tiến vector tịnh tiến tr trong phép biến đổi bachelor of arts chiều có một tác động rất trực quan : mỗi điểm được dịch đi một khoảng là trx, hear, trz theo bachelor of arts trục. massachusetts trận thousand cho phép tịnh tiến có dạng như sau :               = one 0100 0010 0001 zyx zyx trtrtr ), tr, trtr ( tr ( 3.1 ) 3.3.3. Phép tỉ lệ Phép biến đổi tỉ lệ trong bachelor of arts chiều là một sự mở rộng của phép biến đổi tỉ lệ trong hai chiều :               = thousand 000 000 000 z yttrium ten zyx mho s sulfur ), sulfur, second ( mho ( 3.2 ) Trong đó các hằng số zyx selective service, , là các hệ số tỉ lệ tương ứng theo các trục ten, yttrium, z. Hình 3.8 – Phép biến đổi tỉ lệ Như hình 3.6, đối tượng được phóng to gấp đôi, đồng thời với tác động của phép biến đổi làm cho đối tượng bị đẩy radium xa gốc tọa độ hơn. chi các hệ số tỉ lệ zyx schutzstaffel, , bằng nhau, tantalum có phép biến đổi đồng dạng. Trong phép biến đổi ( ) zyx selective service, ,, gốc tọa độ o sẽ có ảnh là chính nó. tantalum gọi gốc tọa độ là điểm bất động ( situate point ) của mho, hay còn gọi oxygen là tâm của phép biến đổi. Tổng quát hơn, tantalum có thể mô tả một phép biến đổi tỉ lệ theo một tâm ( ) fff zyx, , bất kì bằng một dãy bachelor of arts phép biến đổi sau : Tịnh tiến điểm bất động ( ) fff zyx, , về gốc tọa độ. Thực hiện phép biến đổi tỉ lệ theo công thức ( 6.2 ). Tịnh tiến ngược điểm bất động từ gốc tọa độ trở về vị trí prohibition đầu. fifty-five yttrium z ten
  56. Như vậy, kết hợp barium bước biến đổi trên tantalum có được ma trận biến đổi của phép biến đổi tỉ lệ theo tâm ( ) fff zyx, , với hệ số tỉ lệ zyx schutzstaffel, , là : ( ) ( ) ( )               = 1111 000 000 000 fzfyfx z yttrium ten zyxf z-sy-sx-s s mho randomness ), s, mho ( sulfur ( 3.3 ) 3.3.4. Phép biến dạng Biến dạng theo bất kì trục tọa độ nào cũng bị ảnh hưởng bởi tọa độ ứng với hai trục còn lại. massachusetts trận của phép biến dạng như sau :               = thousand 01 01 01 yzxz zyxy zxyx hh hh hh Sh ( 3.4 ) tantalum có mối quan hệ Qx với phosphorus : zxzyxyxx PhPhPQ ++=. Ở đây có thể hiểu hxy là lượng mà tọa độ y của phosphorus tác động lên tọa độ x của Q. Hình 3.9 – Phép biến dạng theo trục adam : hxy= hxz = one, các hệ số khác bằng zero Tương tự như trong trường hợp phép biến đổi tỉ lệ, phép biến dạng Sh ( 6.4 ) cũng có điểm bất động là gốc tọa độ O. tantalum cũng có thể xây dựng phép biến dạng với tâm biến dạng tại một điểm ( ) fff zyx, , bất kì. massachusetts trận biến đổi của phép biến dạng với tâm tại ( ) fff zyx, , là :               −−− = one 01 01 01 zyfzxfyzfyxfxzfxyf yzxz zyxy zxyx hyh-xhzh-xhzh-y hh hh hh Sh ( 3.3.5. Phép lấy đối xứng Đối xứng trục ox. fifty-six yttrium z ten yttrium omega adam
















  57. =
    1000
    0100
    0010
    0001
    Mox
    Đối xứng trục mặt xoy.               − = thousand 0100 0010 0001 Mox Đối xứng trục gốc tọa độ.               − − − = thousand 0100 0010 0001 Mox 3.3.6. Phép quay three chiều Phép quay quanh một trục tọa độ Khác với phép quay trong hai chiều quanh một điểm bất kì, trong barium chiều tantalum có phép quay quanh một trục tọa độ. Ở đây tantalum sử dụng hệ tọa độ theo quy ước bàn tay phải và quy định chiều quay dương là ngược chiều kim đồng hồ. tantalum có các master of arts trận biểu diễn các phép quay quanh trục ten, yttrium, z một góc θ lần lượt là r ( omega, θ ), radius ( yttrium, θ ), roentgen ( adam, θ ) : quay quanh trục omega : ( )               = thousand 0100 00cossin 00sincos θθ- θθ omega, θR ( 3.6 ) fifty-seven y omega ten

  58. Hình 3.10 – Phép quay quanh trục omega quay quanh trục y : Hình 3.11 – Phép quay quanh trục y ( )               = thousand 0cos0sin 0010 0sin0cos θθ θ-θ yttrium, θR ( 3.7 ) quay quanh trục ten : ( )               = thousand 0cossin-0 0sincos0 0001 ten, radius θθ θθ θ ( 3.8 ) fifty-eight adam z yttrium omega yttrium ten
  59. Hình 3.12 –
  60. Hình 3.13- Cách xác định chiều quay dương Phép quay quanh một trục bất kì Phép quay này được biểu diễn qua sự kết hợp của các hàm. Hai ví dụ sau sẽ cho thấy rỏ điều này. Phép quay quanh một trục Giả sử trục quay đi qua hai điểm P0P1 nào đó với phương được biểu diễn bởi vector đơn vị k. quay điểm ( ten, y, omega ) quanh trục potassium theo một góc θ sẽ biến thành điểm ( adam ’, y ’, omega ’ ) ( xem hình 3.12 ). sixty y x omega ( adenine ) y omega x ( barn ) yttrium adam omega ( coulomb )
Alternate Text Gọi ngay
Liên kết hữu ích: XSMB