En uno de mis proyectos tengo un área de juego en forma de círculo. Dentro de este círculo se mueve otro círculo pequeño. Lo que quiero hacer es evitar que el círculo pequeño se mueva fuera del más grande. A continuación puede ver que en el cuadro 2 el círculo pequeño está parcialmente afuera, necesito una forma de moverlo de regreso justo antes de que esté a punto de moverse afuera. ¿Cómo se puede hacer esto?
Además, necesito el punto de colisión a lo largo del arco del círculo grande para poder actualizar la velocidad del círculo pequeño. ¿Cómo se podría calcular este punto?
Lo que me gustaría hacer es antes de mover el círculo pequeño, predigo su próxima posición y si está afuera encuentro el tiempo de colisión entre t = 0 y t = 1 (t = 1 paso de tiempo completo). Si tengo el tiempo de colisión t, entonces solo muevo el círculo pequeño durante t en lugar de un paso de tiempo completo. Pero nuevamente, el problema es que no sé cómo detectar en ese momento que la colisión ocurre cuando se trata de dos círculos y uno está dentro del otro.
EDITAR:
Ejemplo de punto de colisión (verde) que quiero encontrar. Tal vez la imagen está un poco apagada, pero entiendes la idea.