Khối lượng vỏ lồi 3D của điểm nhỏ đặt tất cả trên thân tàu


11

Tôi có một câu hỏi tương tự như câu hỏi này trước đây ngoại trừ trong 3D và tôi chỉ cần âm lượng, không phải hình dạng thực tế của thân tàu.

Chính xác hơn, tôi đã đưa ra một tập hợp các điểm nhỏ (giả sử, 10 - 15) trong 3D, tất cả đều được biết là nằm trên thân lồi của tập hợp điểm (vì vậy tất cả đều "quan trọng" và xác định thân tàu). Tôi chỉ muốn tính toán thể tích của thân tàu, tôi không quan tâm đến việc tính toán khối đa diện thực tế. Có một thuật toán hiệu quả để làm điều này?


Bạn biết các điểm là các đỉnh của khối đa diện. Bạn có biết các khuôn mặt (đa giác trên thân tàu)? Nếu vậy, bạn có thể tính toán âm lượng khá dễ dàng (dưới dạng tổng của các khối "hình nón").
hardmath

1
Một cách lười biếng sẽ là tam giác đầu tiên, sau đó cộng các thể tích của tứ diện (rất dễ tính toán).
Shuhao Cao

@hardmath: Không. Tôi biết rằng nếu tôi biết các hình dạng khía cạnh thì sẽ dễ dàng.
Victor Liu

@Shuhao Cao: Có thuật toán tam giác đơn giản cho trường hợp đặc biệt này không? Nói chung các thuật toán tứ diện 3D khá phức tạp và tôi hy vọng sẽ cần giải quyết vấn đề này hàng ngàn hoặc hàng triệu lần.
Victor Liu

Câu trả lời:


5

Tôi sẽ ngạc nhiên nếu bạn có thể đánh bại gợi ý của Shuhao Cao: tính toán thân tàu và sau đó là âm lượng khi bạn có một hình tam giác của thân tàu. Bạn có thể tính toán thân tàu bằng thuật toán gia tăng hoặc thuật toán gói quà. Nếu bạn thực sự muốn mã dễ dàng, bạn chỉ cần viết một vòng lặp trên tất cả các hình tam giác có thể để xem chúng có nằm trên thân tàu không. Đối với , điều này vẫn khá nhanh và bạn có thể dễ dàng thực hiện các phím tắt. Khi bạn có tất cả các mặt tam giác, sau đó chọn một đỉnh và tạo một tứ diện với mỗi tam giác và . Khối lượng của nó là một định thức trong tọa độ đỉnh.Ôi(n2)n4n= =15vTv4×4


2

Một thử nghiệm nhỏ trong MATLAB, với số lượng đỉnh , mỗi thành phần là một số ngẫu nhiên thống nhất trong [ 0 , 1 ] :N= =100[0,1]

N = 100;
p=rand(N,3);
tic;
T = delaunayTri(p(:,1),p(:,2),p(:,3));
t = T.Triangulation;
e1 = p(t(:,2),:)-p(t(:,1),:);
e2 = p(t(:,3),:)-p(t(:,1),:);
e3 = p(t(:,4),:)-p(t(:,1),:);
V = abs(dot(cross(e1,e2,2),e3,2))/6;
Vol = sum(V);
time_elapse = toc;

Kết quả:

time_elapse =
              0.014807
Vol =
      0.67880219135839

Tôi sẽ nói rằng nó khá nhanh, nếu bạn muốn chạy nó lần, chỉ mất chưa đến 3 giờ. Đây là những gì nó giống như:106

đoàn kết

4×4N= =105

time_elapse =
              3.244278
Vol =
     0.998068316875714

7×1051[0,1]3


BTW thử nghiệm được thực hiện trên Core 2 T61p 2007 cũ của tôi.
Shuhao Cao

2

Từ Câu hỏi thường gặp về tính toán đa diện của Komei Fukuda :

Rd

Được biết, việc tính toán âm lượng của một đa giác V (hay H-polytope) là # P-hard, xem [DF88] và [Kha93]. Có các thuật toán ngẫu nhiên hiệu quả về mặt lý thuyết để tính gần đúng thể tích của một cơ thể lồi [LS93] nhưng dường như không có triển khai nào. Có một nghiên cứu so sánh [BEF00] về các thuật toán tính toán khối lượng khác nhau cho các đa giác lồi. Nó chỉ ra rằng không có thuật toán duy nhất hoạt động tốt cho nhiều loại đa giác khác nhau.

[DF88] ME Dyer và AM Frieze. Sự phức tạp của việc tính toán khối lượng của một khối đa diện. SIAM J. Tính toán. , 17: 967-974, 1988.

[Kha93] LG Khachiyan. Độ phức tạp của tính toán khối lượng đa giác. Trong J. Pach, biên tập viên, Xu hướng mới về Hình học rời rạc và tính toán , trang 91-101. Springer Verlag, Berlin, 1993.

[LS93] L. Lovasz và M. Simonovits. Đi ngẫu nhiên trong một cơ thể lồi và một thuật toán âm lượng được cải thiện. Các cấu trúc và thuật toán ngẫu nhiên , 4: 359-1212, 1993.

[BEF00] B. Bueler, A. Enge và K. Fukuda. Tính toán khối lượng chính xác cho các đa giác lồi: Một nghiên cứu thực tế. Trong G. Kalai và GM Ziegler, các biên tập viên, Polytopes - Combinatorics and Computing, DMV-Seminar 29, trang 131-154. Birkhauser, 2000.

Điều này dường như có thể chôn vùi các chi tiết cụ thể của vấn đề 3D trong số những khó khăn của kích thước cao hơn, mặc dù tiêu đề của bài báo Dyer và Frieze. Từ Tóm tắt của họ: "Chúng tôi cho thấy rằng việc tính toán khối lượng của khối đa diện được đưa ra dưới dạng danh sách các khía cạnh hoặc như một danh sách các đỉnh cũng khó như tính toán vĩnh viễn của ma trận."

PPNvvPPPP= ={xR3:Mộtxb}

P

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.