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