Tôi đang xây dựng bộ chuyển đổi tệp CAD trên hai thư viện (Opencascade và DWF Toolkit).Tìm các đỉnh độc đáo từ 'canh tam giác'
Tuy nhiên, câu hỏi của tôi là plattform thuyết bất khả tri:
Given:
tôi đã tạo ra một lưới như một danh sách các mặt hình tam giác tạo thành một mô hình được xây dựng thông qua ứng dụng của tôi. Mỗi tam giác được xác định thông qua ba đỉnh, trong đó bao gồm ba phao (x, y & z tọa độ). Kể từ khi hình tam giác tạo thành một lưới, hầu hết các đỉnh được chia sẻ bởi nhiều hơn sau đó một hình tam giác.
Mục tiêu:
tôi cần phải tìm ra danh sách các đỉnh độc đáo, và để tạo ra một loạt các gương mặt bao gồm các bộ ba chỉ số trong danh sách này.
//step 1: build a list of unique vertices
for each triangle
for each vertex in triangle
if not vertex in listOfVertices
Add vertex to listOfVertices
//step 2: build a list of faces
for each triangle
for each vertex in triangle
Get Vertex Index From listOfvertices
AddToMap(vertex Index, triangle)
Trong khi tôi có một thực hiện mà thực hiện điều này, bước 1 (thế hệ của danh sách các đỉnh duy nhất) là rất chậm theo thứ tự của O (n:
gì tôi muốn làm điều này là !), vì mỗi đỉnh được so sánh với tất cả các đỉnh đã có trong danh sách. Tôi nghĩ "Này, cho phép xây dựng một hashmap của các thành phần đỉnh của tôi bằng cách sử dụng std :: map, để tăng tốc mọi thứ!", Chỉ để thấy rằng tạo ra một khóa duy nhất từ ba giá trị dấu chấm động không phải là một nhiệm vụ tầm thường. Ở đây, các chuyên gia của stackoverflow đi vào chơi: Tôi cần một số loại hàm băm hoạt động trên 3 phao, hoặc bất kỳ chức năng nào khác tạo ra một giá trị duy nhất từ một vị trí 3d-đỉnh.
Độ độc đáo của đỉnh này phải như thế nào? Ý tôi là, bạn chỉ đang cố gắng tiết kiệm không gian, hay bạn cần cấu trúc liên kết rất mạnh mẽ. Giả sử đỉnh Va và Vb nhận được các id khác nhau pn và pq nhưng thực sự thực sự là 'giống nhau', đó có phải là bộ ngắt giao dịch không? – Tarydon
Vâng, nó sẽ là kể từ khi tôi đang cố gắng để xuất khẩu mắt lưới của Topology. Nếu một Vertex duy nhất từ nguồn sẽ tồn tại nhiều lần trong đích, các hình tam giác được biểu diễn từ nó sẽ không chia sẻ mép - cấu trúc liên kết có thể mở ra. – sum1stolemyname