Cấu trúc dữ liệu và thuật toán thích hợp cho phép tam giác 3-D Delaunay


8

Tôi đã tìm ra một số mã kém để đạt được mục tiêu tam giác 3D Delauney (điểm ngẫu nhiên trong E3), nhưng thời gian tiêu tốn là rất lớn và khi năm điểm chính xác (hoặc gần như do lỗi làm tròn) trên một hình cầu, mã của tôi không thể xử lý tình huống này đúng cách.

Tôi sử dụng cấu trúc dữ liệu cơ bản là danh sách các tứ diện và danh sách các điểm và danh sách các mối quan hệ của tứ diện với vùng lân cận của chúng. Thuật toán được chèn tăng dần.

Ai đó có thể cho tôi biết nên sử dụng loại cấu trúc dữ liệu và thuật toán nào không? Cấu trúc dữ liệu bốn cạnh có thể được sử dụng trong tình huống này không? Khi tôi đọc các bài viết về chủ đề này, tôi thấy rằng có thể cấu trúc dữ liệu này không phù hợp với ứng dụng 3D (nói đúng ra, không phù hợp với ứng dụng đa tạp 3D? Tôi chỉ biết những gì được thể hiện ngày hôm qua, xin hãy giúp tôi ...). Là chia-chinh phục một thuật toán tốt hơn? Cảm ơn!


1
Chào mừng đến với SciComp. Câu hỏi của bạn có vẻ hợp pháp cho diễn đàn này. Có lẽ, bạn có thể làm việc một chút về sự rõ ràng và định dạng của bài đăng của bạn, điều gì sẽ cải thiện cơ hội nhận được câu trả lời nhanh chóng và mang tính hướng dẫn.
ngày

Hãy dùng thử Voro ++: math.lbl.gov/voro++ Mã của nó là có sẵn miễn phí (và có thể sửa đổi) và tôi tin rằng bạn có thể có được tam giác delaunay từ nó. (Hoặc Zeo ++ maciejharanchot.info/Zeopp để biết thêm các tính năng).
Nick

@Jan, Xin lỗi vì tiếng Anh của tôi kém, tôi đã hoàn thành những bài đăng này với sự trợ giúp của từ điển, cảm ơn vì bài đăng của bạn!
mengxia

Câu trả lời:


4

Điều này được thực hiện trong qhull có sẵn từ scipy (python). Nếu bạn không thể sử dụng các triển khai này trực tiếp vì một số lý do, các giải thích về cấu trúc dữ liệu trong tài liệu có thể hữu ích.

http://www.qhull.org/

http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Delaunay.html#scipy.spatial.Delaunay


Liên kết bạn cung cấp chỉ có ví dụ 2d. Cấu trúc dữ liệu 3d khó khăn hơn đáng kể.
Shuhao Cao

Ngoài ra, liên kết qhull bạn cung cấp không liên kết đến trang giải thích cấu trúc dữ liệu. Theo tiêu chuẩn stackexchange, đây là câu trả lời -1 điển hình.
Shuhao Cao

Xin chào, @ShuhaoCao, bạn có thể cho tôi biết cách tốt hơn để thực hiện tam giác delaunay 3D không?
mengxia

@clipper, cảm ơn bài viết của bạn, tôi sẽ đọc tài liệu.
mengxia

Phần quan trọng nằm trong phần thuộc tính: điểm, đơn giản, hàng xóm, phương trình
meawoppl

0

Cấu trúc dữ liệu trong 3D là đại số thuần túy.

Những gì bạn cần phải có là các mảng sau:

  • Vertex V(# of vertices)×3xyz

  • Element to Vertex E2V(# of tetrahedra)×4V

  • Face to Vertex F2V(# of faces)×3V

  • Edge to Vertex F2V(# of edges)×2V

Hai đầu tiên là cấu trúc dữ liệu cần thiết , tất cả các mảng khác có thể được tạo từ hai đầu tiên bằng cách sử dụng các phép toán đại số. Mảng đáng chú ý khác là Element to Edge, Face to Edge, Vertex to Element(các yếu tố chia sẻ một đỉnh), Face to Element(các yếu tố chia sẻ một khuôn mặt), Edge to Face(những gương mặt chia sẻ một cạnh) vv

Việc thực hiện tam giác 3D Delaunay nghe có vẻ không tầm thường như câu trả lời khác đã nói. Phụ thuộc vào phần mềm bạn quan tâm, tôi có thể cập nhật câu trả lời của mình nhiều hơn.


Cảm ơn bài đăng của bạn, cấu trúc dữ liệu tôi đã sử dụng gần giống với những gì bạn đã nói ở trên. Tôi thấy rất khó để xác định mối quan hệ liền kề của tứ diện. Thuật toán tôi đã sử dụng là chèn tăng dần và lần này tôi muốn thử cách tốt hơn .. xin lỗi cho tiếng Anh kém của tôi.
mengxia

Những loại mối quan hệ kề bên có nghĩa là gì? Bạn có muốn tìm thấy tất cả các tứ diện là hàng xóm của một tứ diện đã cho không? Hay bạn muốn tìm nút nào là hàng xóm của một nút đã cho?
Daniel Shapero

@mengxia Bạn đã có mảng Face to Element chưa? Nếu bạn có điều đó thì các yếu tố hàng xóm tương đối dễ tìm.
Shuhao Cao

HI, @ DanielShapero, cảm ơn vì bài đăng của bạn, tôi muốn tìm mối quan hệ của tứ diện
mengxia

Xin chào tốn kém. việc sử dụng mảng cạnh là gì? Nếu tôi sử dụng mảng này, mã của tôi sẽ tăng tốc hay hiệu quả hơn? Cảm ơn!
mengxia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.