Mientras programaba me he enfrentado a un problema matemático que hay que resolver antes de poder seguir adelante. Tal vez necesite más datos de entrada para poder resolverlo, si ese es el caso, házmelo saber y consideraré esto como que no tiene solución y seguiré adelante y veré si hay otras formas de programarlo.
He aquí el problema:
-
Tienes un círculo pequeño,
- Predecidido radioso. Se puede cambiar pero siempre sabemos su valor
- Punto central, "A" es conocido, esto nunca será cambiado
- Tienes un punto predecidido, "C". Se puede cambiar pero siempre conocemos su valor
Ahora, la tarea consiste en idear un círculo más grande cuyo borde tenga que tocar el punto "C" y otro punto desconocido "D". El punto "D" se encuentra en algún lugar del borde del círculo pequeño.
En otras palabras, el círculo pequeño debe estar dentro del más grande y tocarse sólo en un punto "D" interno. Al mismo tiempo, el borde del círculo mayor también debe tocar el punto "C".
Este es nuestro punto de partida:
- Se conoce el radio del círculo pequeño
- El punto "A" es conocido
- El punto "B" es desconocido
- El punto "C" es conocido
- El punto "D" es desconocido
Tenemos que encontrar B y D, si lo hacemos, obtendremos un triángulo como el que muestra la imagen. Entonces deberíamos ser capaces de obtener el ángulo alfa CBD. Cuando tenemos el ángulo podemos fácilmente hacer el cálculo para obtener la distancia de arco entre el punto C y D para el círculo más grande, que es nuestra misión final.
Como he mencionado antes, dado que el punto "C" y el radio del círculo pequeño pueden variar, necesitamos encontrar una solución general para que el cálculo siempre funcione