Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

การแปลง B-Reps เป็น Tree ในโครงสร้างข้อมูล


สตรีมตัวแทน 1 รายการ

มีการระบุไว้อย่างชัดเจนในการตั้งค่ากระบวนการผลิตที่นำเข้าตัวแทน B ซึ่งกำหนดโดยภายนอกด้วยรูปแบบหลายเหลี่ยมมาตรฐานบางรูปแบบ เช่น ไม่ว่าจะเป็นไฟล์ wave front หรือ java3D obj ลงในสตรีมอินพุตสำหรับไปป์ไลน์เรขาคณิตของเรา การแสดงขอบเขตที่ให้ไว้โดยรูปหลายเหลี่ยมและค่าปกติต้องสอดคล้องกัน อาจจำเป็นต้องมีการกรองไฟล์อินพุตเพื่อจัดการกับรูปหลายเหลี่ยมที่ไม่ใช่ระนาบและความไม่ถูกต้องทางเรขาคณิตอื่นๆ สำหรับแบบจำลองทางเรขาคณิตที่เก็บถาวรโดยทั่วไปซึ่งนำไปใช้ในคอมพิวเตอร์กราฟิกเป็นหลัก สตรีมเอาต์พุตของรูปสามเหลี่ยมที่มีการวางแนวที่สอดคล้องกันจะถูกแปลงเป็นทรีโปรเกรสซีฟ-BSP (Binary Search Partitioning) แฝดของเราโดยขั้นตอนอัลกอริทึมที่อธิบายไว้ด้านล่าง

2 B-rep ถึง BSP Algorithm Outline

ขั้นตอนพื้นฐานของวิธีการของเราคือการคำนวณความเฉื่อยของเซตย่อยของสามเหลี่ยมโดยการหดตัวของความเฉื่อยที่คำนวณไว้ล่วงหน้าของสามเหลี่ยมแต่ละรูป และการสลายตัวของไอเกนของความเฉื่อยของเซตย่อยของรูปสามเหลี่ยมเพื่อผูกรูปร่างให้เหมาะสมที่สุดและวนซ้ำ

ในกรณีของกรณีมิติ d ได้การจำกัดรูปร่างโดยใช้ไฮเปอร์เพลนแทนเจนต์สุดขั้ว 2 อันสำหรับเวกเตอร์ลักษณะเฉพาะของเมทริกซ์ออยเลอร์ จุดตัดของไฮเปอร์สเปซ 2d ที่สอดคล้องกันจะสร้างเส้นคู่ขนานที่เหมาะสมที่สุด (ไฮเปอร์) ของเซ็ตย่อยขอบเขตที่รวมอยู่ในเซลล์ปัจจุบัน ใน 3 มิติ มีเครื่องบินดังกล่าว 6=2×3 ลำ

การเริ่มต้น

  • เทนเซอร์ออยเลอร์แบบขยายสัมพัทธ์ของสามเหลี่ยมอินพุตแต่ละอันจะถูกคำนวณก่อน (ในเวลาเชิงเส้น)
  • สามเหลี่ยมอินพุตทั้งชุดเชื่อมต่อกับรูท BSP
  • ช่องว่าง E3 ทั้งหมด (ที่นูน) ถูกรวมเข้ากับรูท
  • รูทเลเบลตั้งค่าเป็น Fuzzy

กรณีแบบเรียกซ้ำ

  • เซลล์ FUZZY ปัจจุบันถูกหารด้วยไฮเปอร์เพลนมุมฉากสูงสุด 6 อันที่ตั้งฉากกับเวกเตอร์ลักษณะเฉพาะของการแสดงเมทริกซ์ของออยเลอร์เทนเซอร์ของเซตย่อยของสามเหลี่ยมปัจจุบัน
  • ระนาบดังกล่าวคำนวณโดยใช้ค่าต่ำสุดและสูงสุดของฟังก์ชันเชิงเส้น w =a • v ประเมินบนจุดยอด v ของเซตย่อยของรูปสามเหลี่ยมปัจจุบัน โดยที่ a จะถูกแทนด้วยเวกเตอร์ลักษณะเฉพาะปัจจุบัน
  • ในกรณีของเวกเตอร์ลักษณะเฉพาะ แต่ละเซลล์นูนสูงสุดสามเซลล์ถูกสร้างโดยไฮเปอร์เพลนคู่ขนานสูงสุดขั้นต่ำสองอัน นั่นคือ {OUT, FUZZY, IN} หรือ {OUT, FUZZY, OUT}
  • แต่ละเซลล์ FUZZY ถูกแบ่งเพิ่มเติมด้วยไฮเปอร์ระนาบหลักที่เกี่ยวข้องกับเวกเตอร์ลักษณะเฉพาะสูงสุด
  • ส่วนย่อยของรูปสามเหลี่ยมที่เล็กกว่าจะเชื่อมต่อกับแต่ละเซลล์ที่ถูกแบ่งโดยการทดสอบการกักกันของจุดยอด
  • รูปสามเหลี่ยมที่ข้ามระนาบแบ่งจะถูกแบ่ง และรูปสามเหลี่ยม (ย่อย) จะรวมเข้ากับทรีย่อยของโหนด

กรณีพื้นฐาน

การหารตามความเฉื่อยแบบเรียกซ้ำจะหยุดเมื่อเซลล์ปัจจุบันประกอบด้วยสามเหลี่ยมขอบเขตจำนวนเล็กน้อยเท่านั้น การแบ่งเซลล์ขั้นสุดท้ายจะดำเนินการโดยใช้ระนาบของสามเหลี่ยมขอบเขต