ทดสอบว่าจัตุรมุขอยู่ข้างในรูปทรงหลายเหลี่ยมหรือไม่


15

ฉันมีจัตุรมุข และรูปทรงหลายหน้าถูก จำกัด เช่นนั้นจะแบ่งปันจุดยอดทั้งหมดกับเสมอ ฉันต้องการตรวจสอบว่าอยู่ภายในหรือไม่p t p t pเสื้อ พีเสื้อพีเสื้อ พี

ฉันต้องการที่จะเพิ่มรายละเอียดในการแก้ไขปัญหาในกรณีที่อาจนำไปสู่การแก้ปัญหา:เป็นDelaunayจัตุรมุขและใบหน้าของเป็นรูปสามเหลี่ยมและขอ Delaunayทั้งที่เกี่ยวกับจุดของพีจัตุรมุขเป็นDelaunayถ้าcircumsphereของจุดของมันไม่มีจุดสุดยอดอื่น ๆ ภายในมัน ใบหน้าเป็นอย่างยิ่ง Delaunayถ้ามี circumsphere ที่มีจุดของใบหน้าที่อยู่บนพื้นผิวของมัน แต่ไม่มีจุดสุดยอดอื่น ๆบนหรือภายในมันp pเสื้อพีพี

ตัวเลขต่อไปนี้แสดงปัญหาเดียวกันในพื้นที่ : 2D

รูปหลายเหลี่ยมเดิมพี :

ป้อนคำอธิบายรูปภาพที่นี่

Delaunay การหาจุดยอดของพี :

ป้อนคำอธิบายรูปภาพที่นี่

ผลของการทดสอบภายใน / ภายนอกสำหรับสามเหลี่ยมเสื้อ p (สามเหลี่ยมแรเงาอยู่ข้างใน และส่วนที่เหลืออยู่ด้านนอก ):พี

ป้อนคำอธิบายรูปภาพที่นี่

ผลลัพธ์ที่ต้องการ (การตัดแต่งนอกรูปสามเหลี่ยม) :

ป้อนคำอธิบายรูปภาพที่นี่


ปัญหาเดิมของฉันอยู่ในพื้นที่ 3D เพื่อสามเหลี่ยมในข้างต้นตัวเลขแปล Tetrahedrons และรูปหลายเหลี่ยมแปลโดยพลรูปทรงหลายหน้าฉันพบสูตรบางส่วนของปัญหานี้แล้ว:p pเสื้อพีพี

สูตร 1
ส่วนเดียวของที่สามารถจะอยู่นอกขอบและใบหน้าสามเหลี่ยม แต่โดยทั่วไปอาจมีอยู่ซึ่งมีขอบของทุกนอก 's บนพื้นผิวเพื่อผลัดปัญหานี้ก็อาจจะเป็นสูตรที่เป็นไปได้ การทดสอบไม่ว่าจะเป็นจัตุรมุขมีอยู่ใบหน้าซึ่งโกหกนอก ?p p t t pเสื้อพีพี เสื้อเสื้อ พี

สูตรที่ 2
ฉันมีมุมมองที่เป็นไปได้อีกทางสำหรับปัญหานี้ แต่ขาดความคิดที่เป็นทางการ:
เรขาคณิตถ้าอยู่ภายนอกมันจะติดอยู่บนพื้นผิวด้านนอกของเสมอ ดังนั้นหากเราสามารถคำนวณรูปทรง (อย่างไม่เป็นทางการขอบเขตด้านนอก) และเช่นนั้นและเป็นชุดของจุดยอดในตามลำดับแล้ว IFFอยู่ภายในหน้า p C V C V p V = V tV p V t , V p t , p C V = C V p t pเสื้อพีVVพีV=Vเสื้อVพีVเสื้อ,Vพีเสื้อ,พีV=Vพี เสื้อพี

ผมอยากจะรู้ว่า:

  • ฉันจะแก้ปัญหาสูตร 1หรือสูตร 2 ได้อย่างไร
  • หรือมีวิธีการที่แตกต่างอย่างสิ้นเชิงในการแก้ปัญหานี้หรือไม่?

อัปเดต:
ตอนนี้ฉันทราบแล้วว่าปัญหานี้สามารถลดเป็นPoint inปัญหารูปทรงหลายเหลี่ยมได้ ตั้งแต่นอกจัตุรมุขจะมีอย่างน้อยหนึ่งหน้าซึ่งอยู่นอกดังนั้นจุดโดยพลการใด ๆ บนใบหน้า (ยกเว้นจุดของทั่วไป) มักจะอยู่นอกหน้าดังนั้นสำหรับแต่ละหน้าของฉันต้องใช้จุดโดยพลการและทดสอบว่าจุดนั้นอยู่นอกหรือไม่p p t pเสื้อพี พีเสื้อ พี

จากจุดในรูปหลายเหลี่ยมบทความผมมารู้เกี่ยวกับเรย์หล่อขั้นตอนวิธีการและคดเคี้ยวอัลกอริทึมจำนวน เรย์หล่อไม่ได้เป็นตัวเลขที่มีเสถียรภาพสำหรับกรณีที่จุดโกหกบนพื้นผิวของพีแต่ความทนทานเชิงตัวเลขของอัลกอริทึมตัวเลข Winding ยังไม่ได้รับการแก้ไข พี

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


เพียงชี้แจง: 1) รูปทรงหลายเหลี่ยมสามารถจะไม่ใช่นูนและ 2) ถ้าTและPหุ้นใบหน้าหรือขอบ (หรือส่วนหนึ่ง) ไม่ว่าตัดสิทธิ์ตันจากการเป็น "ภายใน" ของพี ? (เห็นได้ชัดว่าขึ้นอยู่กับความต้องการของคุณจะต้องได้รับอนุญาตให้ใช้tและpเพื่อแชร์จุดยอด)พีเสื้อพีเสื้อพีเสื้อพี
Ilmari Karonen

@IlmariKaronen 1) ใช่ 2) ไม่เท่าที่ฉันจินตนาการได้ความแตกต่างเพียงอย่างเดียวระหว่างจัตุรมุขภายในและภายนอกก็คือใบหน้า / ขอบที่ไม่แบ่งกันของมันจะอยู่ข้างนอกถ้าอยู่นอกpและภายในถ้าtอยู่ข้างในp (ดังที่ฉันได้กล่าวไว้ในสูตร 1 ) BTW คุณหมายถึงอะไรโดย "... หรือส่วนหนึ่งของ ... "? เสื้อพีเสื้อพี
Pranav

1
พี

1
non-convexity มีความแปลกที่ทุกจุดสามารถอยู่ในรูปทรงหลายเหลี่ยมและรูปทรงจัตุรมุขสามารถอยู่ข้างนอกได้ (เนื่องจากขอบไม่จำเป็นต้องอยู่ข้างในโดยรวม) อัลกอริทึมที่เป็นไปได้ดูว่าขอบ (ระหว่างรูปทรงหลายเหลี่ยมกับจัตุรมุข) สามารถมีจุดตัด => ปัญหาที่จัตุรมุขอยู่ข้างนอกนั้นยอดเยี่ยมหรือไม่
Nikos M.

1
คุณเคยเห็นอัลกอริทึมของระยะทาง Gilbert – Johnson – Keerthi หรือไม่? คุณจะต้องแยกรูปหลายเหลี่ยม / รูปทรงหลายเหลี่ยมออกเป็นรูปทรงนูนก่อน (ดังที่คุณจดบันทึกไว้คอมเพล็กซ์แบบง่ายจะทำงานได้) GJK นั้นมีความเสถียรและรวดเร็วมาก
นามแฝง

คำตอบ:


2

ฉันเพิ่งพบทางออกหนึ่งในการแก้ไขปัญหานี้ในกระดาษ 'การแบ่งส่วนภายในนอกที่แข็งแกร่งโดยใช้ตัวเลขที่คดเคี้ยวทั่วไป' โดยอเล็กซ์ Jacobson et.al. , ที่นี่ มันแก้ปัญหาของตำแหน่งถ้าจุดอยู่ภายใน (หรือนอก) พล (หนึ่งกับแยกตัวเองไม่ใช่นานาเปิดพื้นผิว ฯลฯ ) เหลี่ยมตาข่ายโดยใช้ความคิดของจำนวนคดเคี้ยวทั่วไป

เสื้อพี


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