ปริมาตรของลำตัวนูน 3D ของจุดเล็ก ๆ ตั้งอยู่บนตัวถัง


11

ฉันมีคำถามที่คล้ายกับคำถามนี้ที่ถามมาก่อนยกเว้นในแบบ 3 มิติและฉันต้องการเพียงเสียงเท่านั้นไม่ใช่รูปร่างที่แท้จริงของตัวถัง

แม่นยำยิ่งขึ้นฉันได้รับคะแนนจำนวนเล็กน้อย (พูด 10-15) ในรูปแบบสามมิติซึ่งทั้งหมดนี้เป็นที่รู้กันว่าอยู่บนเปลือกนูนของจุดที่กำหนดไว้ (ดังนั้นพวกเขาจึงทุกคน "สำคัญ" และกำหนดตัวเรือ) ฉันแค่ต้องการคำนวณปริมาตรของตัวถังเท่านั้นฉันไม่สนใจที่จะคำนวณรูปทรงหลายเหลี่ยมที่แท้จริง มีอัลกอริทึมที่มีประสิทธิภาพในการทำเช่นนี้หรือไม่?


คุณรู้ว่าจุดนั้นเป็นจุดยอดของรูปทรงหลายเหลี่ยม คุณรู้จักใบหน้า (รูปหลายเหลี่ยมบนตัวถัง) หรือไม่? ถ้าเป็นเช่นนั้นคุณสามารถคำนวณปริมาณได้ค่อนข้างง่าย (เป็นผลรวมของ "รูปกรวย" ปริมาณ)
hardmath

1
วิธีขี้เกียจจะวิเคราะห์ตำแหน่งก่อนจากนั้นจึงเพิ่มปริมาตรของเตตระฮีรา (คำนวณได้ง่ายมาก)
Shuhao Cao

@ ฮาร์ดมาท: ไม่ฉันรู้ว่าถ้าฉันรู้ว่ารูปร่างหน้าตามันคงเป็นเรื่องง่าย
Victor Liu

@Shuhao Cao: มีอัลกอริทึม triangulation ง่าย ๆ สำหรับกรณีพิเศษนี้หรือไม่? โดยทั่วไปอัลกอริทึม tetrahedralization ค่อนข้างซับซ้อนและฉันคาดหวังว่าจะต้องแก้ปัญหานี้เป็นพัน ๆ ครั้งหรือหลายล้านครั้ง
Victor Liu

คำตอบ:



2

การทดสอบขนาดเล็กใน MATLAB สำหรับจำนวนจุดยอดแต่ละองค์ประกอบเป็นตัวเลขสุ่มสม่ำเสมอใน[ 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;

ผลลัพธ์:

time_elapse =
              0.014807
Vol =
      0.67880219135839

ฉันจะบอกว่ามันเร็วพอสมควรถ้าคุณต้องการเรียกใช้ครั้งใช้เวลาน้อยกว่า 3 ชั่วโมงเท่านั้น นี่คือสิ่งที่มันเป็น:106

convhull

4×4N=105

time_elapse =
              3.244278
Vol =
     0.998068316875714

7×1051[0,1]3


BTW การทดสอบเสร็จสิ้นใน 2007 Core 2 T61p รุ่นเก่าของฉัน
Shuhao Cao

2

จากการคำนวณ Polyhedral 's ของ Komei Fukuda คำถามที่พบบ่อย :

Rd

เป็นที่ทราบกันดีว่าการคำนวณปริมาตรของ V-polytope (หรือ H-polytope) นั้นเป็น # P-hard, ดู [DF88] และ [Kha93] มีอัลกอริทึมแบบสุ่มที่มีประสิทธิภาพเชิงทฤษฎีเพื่อประมาณปริมาตรของตัวนูน [LS93] แต่ดูเหมือนว่าจะไม่มีการใช้งาน มีการศึกษาเปรียบเทียบ [BEF00] ของอัลกอริธึมการคำนวณปริมาตรที่หลากหลายสำหรับโพลีเอทิกนูน มันบ่งชี้ว่าไม่มีอัลกอริธึมเดียวที่ทำงานได้ดีสำหรับโพลิปโตชนิดต่าง ๆ มากมาย

[DF88] ME Dyer และ AM Frieze ความซับซ้อนของการคำนวณปริมาตรของรูปทรงหลายเหลี่ยม SIAM J. Comput , 17: 967-974, 1988

[Kha93] LG Khachiyan ความซับซ้อนของการคำนวณปริมาตร polytope ใน J. Pach, ผู้แก้ไข, เทรนด์ใหม่ในเรขาคณิตไม่ต่อเนื่องและการคำนวณ , หน้า 91-101 Springer Verlag, Berlin, 1993

[LS93] L. Lovasz และ M. Simonovits การสุ่มเดินในร่างกายนูนและอัลกอริธึมที่ปรับปรุงใหม่ โครงสร้างและอัลกอริธึมแบบสุ่ม , 4: 359-412, 1993

[BEF00] B. Bueler, A. Enge และ K. Fukuda การคำนวณปริมาตรที่แน่นอนสำหรับ polytopes นูน: การศึกษาเชิงปฏิบัติ ใน G. Kalai และ GM Ziegler บรรณาธิการPolytopes - Combinatorics and Computing , DMV-Seminar 29, หน้า 131-154 Birkhauser, 2000

นี่อาจดูเหมือนเป็นการฝังรายละเอียดเฉพาะของปัญหา 3 มิติท่ามกลางความยากลำบากของขนาดที่สูงขึ้นแม้ว่าจะมีชื่อเรื่องของกระดาษ Dyer และ Frieze ก็ตาม จากนามธรรมของพวกเขา: "เราแสดงให้เห็นว่าการคำนวณปริมาตรของรูปทรงหลายเหลี่ยมที่ได้รับไม่ว่าจะเป็นรายการของแง่มุมหรือรายการจุดยอดนั้นทำได้ยากเท่ากับการคำนวณเมทริกซ์ถาวร"

PPNvvPPPP={xR3:Axb}

P

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.