ฉันคิดว่าคุณอาจลองใส่คีย์สแควร์เป็นรูกลมโดยใช้ SAT ในแบบที่คุณเป็น เห็นได้ชัดว่ามันไม่ได้ออกแบบมาสำหรับการชนแบบเว้าและถึงแม้ว่าฉันขอชื่นชมความพยายามของคุณในการปรับให้เข้ากับจุดประสงค์นั้น แต่ก็มีข้อควรพิจารณาที่ทำให้สิ่งนี้ไม่น่าทำงาน
สัจนิยม
แรงกระตุ้นเชิงมุมและเอฟเฟกต์แบบน็อคออนเป็นชื่อของเกมที่นี่
ลำดับของจุดติดต่อมีความสำคัญสำหรับการแก้ไขการชนที่สมจริง ในโลกแห่งความจริงหนึ่งในจุดเหล่านั้นมักจะตีกันต่อไป และเป็นเพียงการเลียนแบบลำดับการติดต่อและผลลัพธ์ของ "subcollision" แต่ละอันที่แสดงโดยที่คุณสามารถคาดหวังว่าจะได้ผลลัพธ์ที่สมจริงในการจำลอง นี่เป็นหนึ่งในเหตุผลที่ทำไมคุณถึงแยกเว้าออกเป็นส่วนแรก - มันช่วยให้สามารถตรวจจับชิ้นส่วนได้เป็นอันดับแรก แน่นอนสิ่งนี้สามารถเลียนแบบได้ตามความคิดเห็นของฉันภายใต้หัวข้อ "ความสมจริงที่น้อยลง"
การติดตั้งนูนของคุณรวมกันเพื่อให้วัตถุทั้งร่างและเซนทรอยด์ (และแน่นอนในการจำลองที่ซับซ้อนมากขึ้นแต่ละฟิกซ์เจอร์อาจมีผลต่อความหนาแน่นแตกต่างกันเช่นกัน) เหตุผลที่ฉันพูดถึงเรื่องนี้ก็คือในการแก้ไขการชนกันอย่างแนบเนียนคุณจะต้องคำนวณไม่เพียง แต่เชิงเส้นเท่านั้น แต่ยังมีแรงกระตุ้นเชิงมุมตามด้วย "การชนกันย่อย" ของจุดสัมผัสของคุณ ไม่ง่ายเหมือนการ "แยก" พื้นฐานที่คุณสมัครกับ SAT
สิ่งนี้จะเปลี่ยนลักษณะของปัญหาของคุณอย่างสิ้นเชิงเพราะอย่างที่คุณเห็นมันไม่มีจุดหมายที่จะได้รับและพยายามใช้จุดติดต่อ 2 จุดขึ้นไปเพราะจริงๆแล้วมันเป็นเพียงจุดแรกที่สำคัญ เมื่อคุณได้แก้ไขข้อแรกในแง่ของแรงกระตุ้นเชิงเส้นและเชิงมุมคุณจะต้องคำนวณใหม่สำหรับการชนเพิ่มเติมเนื่องจากการวางแนวของวัตถุแต่ละชิ้นจะเปลี่ยนไป ยิ่งไปกว่านั้นการตรวจจับผู้ติดต่อแต่ละคนในขั้นตอนนั้นอาจจะหรือไม่จำเป็นต้องทำในขั้นตอนเดียวกันนั้น - ขึ้นอยู่กับระยะเวลาระหว่างผู้ติดต่อเมื่อสัมผัสจุดแรกของวัตถุสัมผัสที่แรงกระตุ้นเชิงเส้นและเชิงมุมตามมา สัมผัสกับจุดติดต่อและอื่น ๆ
ความสมจริงที่น้อยลง
แน่นอนว่าคุณไม่สนใจที่จะตัดสินใจหาแรงกระตุ้นเชิงมุมดังนั้นสิ่งที่ดีที่สุดที่คุณสามารถทำได้กับ SAT จะกลายเป็นสิ่งที่คุณควรทำถ้าคุณหุ้มรูปหลายเหลี่ยมเหล่านี้เป็นรูปนูนโดยใช้ Graham's Scan: แยกออกจากกัน เวกเตอร์ พูดอีกอย่างหนึ่งก็คือมันไม่มีเหตุผลที่จะพยายามแก้ไขเวกเตอร์สามตัวตามที่คุณได้แสดง มันใหญ่ที่สุดในกลุ่มที่นับ
แก้ไขเพื่อตอบคำถามของคุณ
สิ่งที่คุณต้องทำถ้าคุณต้องการวิธีการแบบง่าย ๆ มีดังนี้:
กำหนดทิศทางที่ถูกต้องของการกระจัด วิธีนี้ทำได้ง่ายที่สุดโดยการนูนตัวเรือแต่ละเส้น
ตอนนี้คุณจำเป็นต้องตรวจสอบการกระจัดขนาด ทำไมเราไม่ใช้ขนาดตามที่ SAT กำหนด เพราะถ้าคุณคิดเกี่ยวกับมันความลึกของการแทรกซึมจะมีมากขึ้นสำหรับลำตัวนูนมากกว่าที่จะเป็นสำหรับลำเรือเว้าที่เข้าคู่กัน - ลองนึกถึงอีสองตัวด้วยฟันของพวกมันในกันและกัน! ตามที่คุณได้ทำไปแล้วให้ค้นหาจุดติดต่อทั้งหมดสำหรับขั้นตอนที่กำหนด แต่พบว่าพวกมันขนานกับบรรทัดฐานของแกนเพราะมันเป็นทิศทางที่ถูกต้องของการกระจัด ทีนี้พิจารณาว่าเวกเตอร์เหลื่อมซ้อนอันใดอันหนึ่งยาวที่สุด แทนที่โดยหนึ่งนั้นทิ้งส่วนที่เหลือและดำเนินการขั้นตอนฟิสิกส์ต่อไป