จุดกึ่งกลางในไดอะแกรมของคุณเป็นขอบที่ลดลงของแผนภาพ Voronoi หากคุณสร้างไดอะแกรม Voronoi สำหรับคลาวด์จุดที่ผิดปกติจุดยอดทุกอันจะมีระดับ 3 จุดยอดที่มีระดับ 4 (หรือมากกว่า) สามารถเกิดขึ้นได้เมื่อจุดยอดสองจุดขึ้นไปตรงกัน นั่นหมายความว่ามีความยาวเป็นศูนย์ระหว่างพวกเขา แต่ขอบนั้นควรยังคงมีขอบที่สอดคล้องกันในการวิเคราะห์สามเหลี่ยม Delaunay ปัญหาคือว่ามันเป็นไปตามอำเภอใจซึ่งเป็นหนึ่งในสองขอบที่คุณเลือกเนื่องจากขอบความยาวศูนย์ไม่มีทิศทางที่เกี่ยวข้อง
เพื่อให้เห็นภาพสิ่งที่ฉันกำลังพูดถึงให้พิจารณาเริ่มต้นด้วยจุดที่มีระยะห่างน้อยกว่าสี่จุดอย่างสม่ำเสมอ (เช่นที่เราเริ่มต้นด้วยจุดยอดองศา -3 เท่านั้น) และค่อย ๆ แปลตำแหน่งเหล่านั้นเป็นตำแหน่งปกติ
เราสามารถทำได้สองวิธีที่แตกต่างกันซึ่งทั้งสองอย่างนี้นำไปสู่กรณีความเสื่อมในแผนภาพของคุณ คุณจะเห็นว่าคุณได้พบกับ Delaunay triangulations สองแบบซึ่งเป็นขีด จำกัด ที่ใช้ได้สำหรับกรณีเลว
ฉันคิดว่ารหัสของคุณหายไปจากกรณีเลวร้ายนี้ด้วยเหตุผลใดเหตุผลหนึ่ง แต่โดยไม่ได้เห็นว่าคุณคำนวณสามเหลี่ยม Delaunay จากแผนภาพ Voronoi ได้อย่างไรมันเป็นไปไม่ได้ที่จะชี้ให้คุณเห็นมากกว่านี้
นอกจากนี้โปรดทราบว่าการมีความเสื่อมที่สูงขึ้น (โดยการกระจายมากกว่าสี่จุดในมุมที่เท่ากันรอบวงกลม) อาจต้องการความสนใจเพิ่มเติม:
ภาพเคลื่อนไหวเหล่านี้ยังแสดงให้เห็นว่า (แม้ในกรณีที่ไม่เลว) ขอบ Voronoi และ Delaunay ที่เกี่ยวข้องไม่จำเป็นต้องข้ามในขอบเขตจริง นั่นอาจทำให้ยากขึ้นที่จะเห็นว่าขอบ 2 (หรือ 3) ที่เป็นรูปสามเหลี่ยมรูปหลายเหลี่ยมในตอนท้ายนั้นตรงกับขอบที่เสื่อมหลาย ๆ อันซึ่งอยู่ตรงกลาง โปรดสังเกตว่าทั้งหมดมีรูปสามเหลี่ยมห้าเหลี่ยมที่แตกต่างกัน 5 รูปห้าเหลี่ยมและรูปสามเหลี่ยมหกเหลี่ยม 14 รูปสามเหลี่ยม (แม้ว่าฉันไม่รู้ว่าสามารถรับ 14 รูปทั้งหมดได้ด้วยการเปลี่ยนรูปสามเหลี่ยมที่ไม่เสื่อมสภาพ)
แก้ไข (โดย OP)
แผนภาพ Voronoi ที่คำนวณด้วยBoost.polygonช่วยให้สามารถเดินผ่านจุดยอด Voronoi แต่ละจุดและแต่ละขอบเชื่อมโยงกับจุดยอดเหล่านั้น (ตามเข็มนาฬิกาหรือทวนเข็มนาฬิกา) ด้วยวิธีนี้มันเป็นไปได้ที่จะสร้างรูปสามเหลี่ยมหนึ่งอันสำหรับแต่ละคู่ของขอบ (ขอบที่เชื่อมต่อสองอันจะเชื่อมโยงกับ 3 เซลล์)