1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d

31 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Dùng Tool Và Ngôn Ngữ Lập Trình Viết Một Ứng Dụng Liên Quan Đến Xén Tỉa Trong 2D Và 3D
Tác giả Nguyễn Việt Cường, Đào Văn Đạt, Phan Minh Đức, Đỗ Thị Thu Hà, Phạm Năng Hưng, Trần Thanh Khải, Phan Văn Thìn
Người hướng dẫn Cô Nguyễn Thị Thanh Tâm
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Công nghệ thông tin
Thể loại báo cáo
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 31
Dung lượng 1,78 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỤC LỤC3.1 Xén tỉa đoạn thẳng bằng thuật toán Cohen-Sutherland 6 3.2 Xén tỉa đoạn thẳng bằng thuật toán Lyangbarsky 11 3.3 Xén tỉa đa giác bằng thuật toán Sutherland-Hogman 13 1.THIẾT KẾ

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO:

KỸ THUẬT ĐỒ HỌA

Đề tài: Dùng Tool và ngôn ngữ lập trình viết một ứng dụng liên

quan đến xén tỉa trong 2D và 3D

Thành viên nhóm Nguyễn Việt Cường B18DCCN070

Đào Văn Đạt B18DCCN134

Phan Minh Đức B18DCCN180

Đỗ Thị Thu Hà B18DCCN189

Phạm Năng Hưng B18DCCN287 Trần Thanh Khải B18DCCN299 Phan Văn Thìn B18DCCN642

Hà Nội, 2021

Trang 2

MỤC LỤC

3.1 Xén tỉa đoạn thẳng bằng thuật toán Cohen-Sutherland 6 3.2 Xén tỉa đoạn thẳng bằng thuật toán Lyangbarsky 11 3.3 Xén tỉa đa giác bằng thuật toán Sutherland-Hogman 13

1.THIẾT KẾ GIAO DIỆN HIỂN THỊ 20

Trang 3

LỜI NÓI ĐẦU

Như chúng ta đã thấy trong những năm gần đây sự phát triển vượtbậc về công nghệ đồ họa đã mang lại cho con người chúng ta vô vàn

sự tiện nghi, những trải nghiệm mới mẻ, chân thực

Kỹ thuật đồ họa góp phần quan trọng làm cho giao tiếp giữa conngười và máy tính trở nên thân thiện hơn Trong kỹ thuật đồ họa có nhiềuthuật toán khác nhau Xong mỗi thuật toán lại tỏ ra có những ưu việt vàhạn chế riêng đối với từng bài toán cụ thể

Là sinh viên khoa Công nghệ thông tin trường Học viện Công nghệBưu Chính Viễn Thông Chúng em cũng được tiếp xúc với môn học Kỹthuật đồ họa Với những kiến thức em đã học và được sự hướng dẫn của

cô Nguyễn Thị Thanh Tâm chúng em đã thực hiện đề tài “ Dùng tool vàngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2D và3D”

Có lẽ rằng chương trình và báo cáo của chúng em chưa đượcchuyên nghiệp, hoàn chỉnh nhất, còn có những thiếu sót Vì thế em rấtmong cô và các bạn có thể góp ý để nhóm em xây dựng đề đạt kết quả tốtnhất có thể

Trang 4

A PHÂN TÍCH BÀI TOÁN

1 XÉN TỈA LÀ GÌ?

Xén tỉa là tiến trình xác định các điểm của một đối tượng nằmtrong hay ngoài cửa sổ hiển thị Nằm trong được hiển thị, nằm ngoàiloại bỏ

Việc loại từng điểm ảnh của đối tượng thường chậm nhất là khi đốitượng mà phần lớn nằm ngoài cửa sổ hiển thị

Các thuật toán xén tỉa đoạn thẳng đều tập trung giải quyết hai vấn

đề chính nhằm tối ưu tốc độ thuật toán đó là: loại bỏ việc tìm giaođiểm đối với các đoạn thẳng chắc chắn không cắt cửa sổ (như nằmhoàn toàn trong, nằm hoàn toàn ngoài), và với đoạn thẳng có khả năngcắt cửa sổ, cần phải tìm cách hạn chế số lần tìm giao điểm với các biênkhông cần thiết

Tiến trình, giải thuật kiểm tra chấp nhận các đoạn thẳng nằm trong

và loại bỏ các đoạn thẳng nằm ngoài dựa trên 2 điểm đầu cuối

Lý do:

– Không kiểm tra mọi điểm trên đoạn thẳng

– Hầu hết các đoạn thẳng với 1 màn hình hiển thị đều được chấp nhậnhoặc loại bỏ

– Rất ít các đoạn thẳng cắt cửa sổ hiển thị

Trang 5

2.3Xén tỉa đa giác

Hình 2.3.1 Các loại đa giác

Đ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

Theo quy ước: một đa giác với các đỉnh P1, ,Pn (các cạnh là Pi-1Pi và PnP1) được gọi là theo hướng dương nếu các hình theo thứ

tự đã cho tạo thành một mạch ngược chiều kim đồng hồ

Nếu bàn tay trái của một người dọc theo bất kỳ cạnh Pi-1Pi hoặcPNP1 cũng chỉ về bên trong đa giác

Hình 2.3.2 Quy tắc tìm hướng dương của một đa giác hướng

Khảo sát một điểm so với một đường thẳng:

Có điểm A(x1,y1), B(x2,y2) và P(x,y)

Theo định nghĩa thì tích của hai vectơ (ABxAP) chỉ theo hướng củavectơ K với mặt phẳng (XoY) Có:⊥

AB=(x2-x1)i + (y2-y1)jAP=(x-x1)i + (y-y1)jVậy ABxAP=[ (x2-x1).(y-y1) – (y2-y1).(x-x1) ].K

Do đó hướng được xác định như sau:

Trang 6

C = (x2 - x1)(y - y1) - (y2 - y1)(x - x1)Nếu C dương thì P nằm bên trái AB.

Nếu C âm thì P nằm bên phải AB

3 CÁC GIẢI THUẬT XÉN TỈA

3.1 Xén tỉa đoạn thẳng bằng thuật toán Cohen-Sutherland

Cho đoạn thẳng P1P2, thuật toán cần tìm ra đoạn thẳng giao giữa

P P1 2 và cửa sổ Window được hiển thị như hình vẽ (Input: Đoạnthẳng P1P2; Output: P1P2 giao W(W ,Wl r ,Wb ,W )).t

Mặt phẳng được chia làm 5 vùng:

Trang 7

Lúc này, ta có:

+ Input: Đoạn thẳng P1P2

+ Output: P1P2 giao W(W ,Wl r ,Wb ,W )t

Trang 8

Bước 1: gán mã vùng 4 bit cho mỗi điểm cuối của đoạn thẳng.

C là mã vùng của P1 1

C là mã vùng của P2 2

Trang 9

Bước 2: quá trình kiểm tra vị trí của đoạn thẳng so với cửa sổ.

Trường hợp 1 : Đoạn thẳng nằm ở vùng bên trong

Trang 10

Trường hợp 2 : Đoạn thẳng thuộc các vùng bên ngoài

Trang 11

Trường hợp 3 : Đoạn thẳng cắt cửa sổ

3.2 Xén tỉa đoạn thẳng bằng thuật toán Lyangbarsky

Thuật toán xén tỉa đoạn thẳng LyaBarsky tập trung giải quyếthai vấn đề chính nhằm tối ưu tốc độ thuật toán đó là: loại bỏ việc tìm giao điểm đối với các đoạn thẳng chắc chắn không cắt cửa sổ (như nằm hoàn toàn trong, nằm hoàn toàn ngoài), và với đoạn thẳng

có khả năng cắt cửa sổ, cần phải tìm cách hạn chế số lần tìm giao điểm với các biên không cần thiết

Thuật toán LyaBarsky thì tuy dựa vào phương trình tham số của đoạn thẳng để lập luận nhưng thực chất là dựa trên việc xét các

Trang 12

giao điểm có thể có giữa đoạn thẳng kéo dài với các biên của cửa sổ(cũng được kéo dài) Các giao điểm này tương ứng với các giá trị rk

= qk/pk Cả hai thuật toán này đều có thể được mở rộng cho việc xén hình trong đồ hoạ 3D

Bước 1 : Xác định tọa tộ 2 điểm đầu và cuối của đoạn thẳng đang xét (x1; y1), (x2; y2)

Nếu u0 < u1 => đọa thẳng nằm trong cửa sổ

Thay tọa đồ u0, u1 vào phương trình để tìm tọa độ mới :

a Với điểm đầu : x = x1 + x*u0, y = y1 + x*u0 

b Với điểm cuối : x = x1 + x*u1, y = y1 + x*u1 

3.3 Xén tỉa đa giác bằng thuật toán Sutherland-Hogman

Cho đa giác P bất kì có n cạnh, thuật toán cần tìm ra đa giác Pgiao với cửa sổ Window (input: Đa giác P; output: P giao Window)

Trang 13

Mỗi cạnh mặt phẳng chia làm 2 phần: nửa mặt phẳng trong vànửa mặt phẳng ngoài.

Cửa sổ quan sát là giao của các nửa mặt phẳng trong của các cạnh

Trang 14

Dùng từng cạnh của cửa sổ lần lượt xén đa giác

+ input: Đa giác IN = {P0, P1, , Pn-1}

+ output: Đa giác OUT = IN giao W{Wl, Wr, Wb, Wt}

Trang 15

Bước 1:

OUT = {}

Bước 2:

Lặp P: P0 … Pn-1

S là đỉnh kề trước của PTrường hợp 1, P bên trong S bên trong

Trường hợp 2: P bên ngoài, S bên trong

Trang 16

Trường hợp 3: P bên ngoài, S bên ngoài

Trường hợp 4: P bên trong, S bên ngoài

Trang 17

Ta xét ví dụ minh họa sau để hiểu rõ thuật toán hơn.

VD: Xén đa giác ABCDEF vào vùng cửa sổ như hình:

Trang 19

1.1Giao diện thanh chọn

Bao gồm 4 nút chọn (button) với các chức năng:

+ Nút Line : vẽ 1 đường thẳng với 2 điểm cho trước

+ Nút ViewPoint : vẽ một hình chữ nhật với 2 điểm cho trước

+ Nút Cut : Thực hiện xén tỉa hình vẽ

+ Nút Delete: Xóa các đối tượng có trong giao diện

1.2 Giao diện bảng vẽ

Là một khu vực hình vuông, nền đen với kích thước 400 x 400

Trang 20

- Để thực hiện thuật toán: chọn nút Cut để xén tỉa hình đã vẽ

Chú ý: Nếu như chưa vẽ ViewPoint mà thực hiện xén tỉa thì sẽkhông hợp lệ, hộp thông báo chưa vẽ ViewPoint sẽ hiển thị để nhắcnhở

- Chọn nút Delete để xóa và làm mới bảng vẽ

2.1Thuật toán Cohen-Sutherland

Trang 23

2.2Thuật toán Lyangbarsky

Trang 27

2.3Thuật toán Sutherland-Hodgman

Trang 28

3 DEMO

❖ Xén tỉa đoạn thẳng

Trang 29

⮚ Kết quả:

❖ Xén tỉa đa giác

Trang 30

⮚ Kết quả

Trang 31

TÀI LIỆU THAM KHẢO

[1] Hoàng Kiếm, Dương Anh Đức, Lê Đình Duy, Vũ Hải Quân Giáo trình cơ sở Đồ hoạ Máy tính, NXB Giáo dục, 2000

[2] Lê Tấn Hùng, Huỳnh Quyết Thắng Kỹ thuật đồ hoạ máy tính, NXB khoa học và kỹ thuật,

2002

[3] Trịnh Thị Vân Anh Bài giảng Kỹ thuật đồ họa, Học viện Công nghệ Bưu chính Viễn thông, 2020.

Ngày đăng: 23/04/2022, 07:24

HÌNH ẢNH LIÊN QUAN

– Hầu hết các đoạn thẳng với 1 màn hình hiển thị đều được chấp nhận hoặc loại bỏ. - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
u hết các đoạn thẳng với 1 màn hình hiển thị đều được chấp nhận hoặc loại bỏ (Trang 4)
Hình 2.3.1 Các loại đa giác - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
Hình 2.3.1 Các loại đa giác (Trang 5)
Hình 2.3.2 Quy tắc tìm hướng dương của một đa giác hướng - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
Hình 2.3.2 Quy tắc tìm hướng dương của một đa giác hướng (Trang 5)
PP 12 và cửa sổ Window được hiển thị như hình vẽ (Input: Đoạn - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
12 và cửa sổ Window được hiển thị như hình vẽ (Input: Đoạn (Trang 6)
3. CÁC GIẢI THUẬT XÉN TỈA - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
3. CÁC GIẢI THUẬT XÉN TỈA (Trang 6)
+ Nút ViewPoin t: vẽ một hình chữ nhật với 2 điểm cho trước - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
t ViewPoin t: vẽ một hình chữ nhật với 2 điểm cho trước (Trang 19)
+ Nút Cu t: Thực hiện xén tỉa hình vẽ - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
t Cu t: Thực hiện xén tỉa hình vẽ (Trang 19)
- Để vẽ hình: ta chọn nút Line sau đó di chuyển chuột vào vùng giao diện bảng vẽ, click chọn 2 điểm bất kỳ để vẽ 1 đường thẳng - BÁO cáo kỹ THUẬT đồ họa đề tài dùng tool và ngôn ngữ lập trình viết một ứng dụng liên quan đến xén tỉa trong 2d và 3d
v ẽ hình: ta chọn nút Line sau đó di chuyển chuột vào vùng giao diện bảng vẽ, click chọn 2 điểm bất kỳ để vẽ 1 đường thẳng (Trang 20)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w