ฉันคิดว่าเราสามารถไขปริศนาออกได้ถ้าเราแค่คิดถึงมัน
เห็นได้ชัดว่าคุณต้องการสร้างใบหน้า (สามเหลี่ยม) ที่รูปทรงเรขาคณิตทั้งสองตัดกัน จากนั้นคุณจะเหลือสามตาข่าย: จุดตัดที่คุณแยกได้รูปทรงเรขาคณิต 1 และรูปทรงเรขาคณิต 2
จากนั้นเพียงลบสิ่งที่คุณไม่ต้องการ!
- BooleanDifference: ลบส่วนที่แยกและรูปทรงเรขาคณิต 2
- BooleanIntersection: ลบเรขาคณิต 1 และ 2 ออกจากส่วนที่แยก
- BooleanUnion: ผสานรูปทรงเรขาคณิตที่ 1 และ 2 แล้วลบส่วนที่แยกออก (ตรวจสอบให้แน่ใจว่าได้ต่อประสานรูปทรงเรขาคณิตที่ 1 และ 2 เข้าด้วยกันในรูปทรงเรขาคณิตที่เป็นของแข็ง)
- BooleanSplit: แยกเรขาคณิต 1, เรขาคณิต 2 และทำซ้ำส่วนแยก (แนบหนึ่งกับเรขาคณิต 1 และอีกหนึ่งกับเรขาคณิต 2)
ฉันคิดว่าครอบคลุมมันใช่มั้ย ส่วนที่ยากจะสร้างใบหน้าสี่แยก สำหรับการทำซ้ำนั้นให้ผ่านแต่ละหน้าของใบหน้าและตรวจสอบว่าใบหน้านั้นเป็นส่วนหนึ่งของใบหน้าอื่นหรือไม่ หากอยู่ข้างในทั้งหมดให้คัดลอกใบหน้าเป็นส่วนหนึ่งของรอยแยก ถ้ามันอยู่ข้างในบางส่วนคุณต้องแยกสามเหลี่ยมตามแนวสี่แยก ฉันคิดว่า DirectX และ OpenGL ทั้งคู่จะมีฟังก์ชั่นตัวช่วยสำหรับเรื่องนี้ ผมได้เรียนรู้ชนิดของสิ่งที่อยู่ในแคลคูลัส 3 (หรือถูกมัน 2?) แต่ถ้าคุณไม่ได้มีเงื่อนงำอาจจะขอให้ที่math.stackexchange.com และแน่นอนถ้าใบหน้าอยู่ข้างนอกอย่าทำอะไรเลย เมื่อคุณวนซ้ำใบหน้าทั้งหมดของทั้งสองตาข่ายคุณจะเหลือด้วยตาข่ายแยก