Cắt tam giác bằng 4 mặt phẳng của hình hộp bao con đường

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 87)

Một đoạn đường sẽ có một hình hộp bao lấy nó. Hình hộp này bao gồm 4 mặt xung quanh và 2 mặt đáy.

Chọn tất cả các tam giác của TIN nằm trong phạm vi con đường, nghĩa là những tam giác nào có một phần diện tích nằm trong hình hộp bao con đường sẽ được chọn. Ta thu được tập tam giác Ω. Với mỗi tam giác ∆ trong tập Ω ta thực hiện các bước sau:

a. Bước 1:

Kiểm tra tam giác ∆ có khả năng giao với ít nhất một trong bốn mặt phẳng xung quanh hay khơng?

Nếu khơng thì thốt khỏi thủ tục để xét tam giác khác.

Nếu có thì thực hiện tiếp bước 2.

b. Bước 2:

Nếu cả ba đỉnh của tam giác đều thuộc các mặt phẳng xung quanh thì số lượng giao

điểm commonPoints của tam giác với 4 mặt phẳng xung quanh sẽ là 3. Trả về kết quả

là commonPoints.

Nếu số giao điểm commonPoints bé hơn 3 thì thực hiện tiếp bước 3.

c. Bước 3:

Mỗi tam giác ∆ sẽ bao gồm 3 cạnh:

• Cạnh thứ nhất là cạnh tạo bởi đỉnh 0 và đỉnh 1. • Cạnh thứ hai là cạnh tạo bởi đỉnh 1 và đỉnh 2. • Cạnh thứ ba là cạnh tạo bởi đỉnh 2 và đỉnh 0.

Với mỗi cạnh của tam giác ∆, tìm giao điểm của nó với 4 mặt phẳng xung quanh. Nếu

có giao điểm thì tăng số lượng giao điểm commonPoints lên 1.

Tìm giao điểm của tam giác với 4 cạnh bên của hình hộp đoạn đường. Nếu có thì tăng

số lượng giao điểm commonPoints lên 1.

Đến đây, nếu như số lượng giao điểm commonPoints nhỏ hơn 3 thì trả về tam giác

khơng giao với 4 mặt phẳng xung quanh, nghĩa là trả về commonPoints bằng 0. Ngược lại, commonPoints lớn hơn hoặc bằng 3 thì tiến hành sắp xếp các giao điểm thành đa giác lồi.

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 87)