Prólogo: tengo muy moderado conocimiento de las matemáticas (secundaria, estudiante de segundo nivel). Cualquier explicación debe ser descompuesto a masticables bits. Lo siento si esta inconvenientes chicos.
Tengo el siguiente problema: ¿Cómo puedo averiguar si un círculo y un arco sector de un círculo que se cruzan?
Los círculos pequeños ejemplos anteriores. Los que están en rojo son los que no se cruzan, los que están en verde son aquellos que se cruzan.
Este es mi enfoque, basado en la inmediata de los datos de que dispongo sobre el arco del sector y el otro círculo:
deje $A$ ser el arco del sector de un círculo definido de la siguiente manera:
- $C$ $(Cx, Cy)$ es el centro del círculo.
- $D$ es un radio del círculo, del que se conocen la longitud. ($D$ es sinónimo de dirección).
- $\alpha$ el ángulo del arco del sector, de modo que $D$ biseca $\alpha$
También sabemos que el punto donde $D$ intercepta el círculo (no mencionado en el dibujo de arriba)
\begin{equation} \\ \end{equation}
Para los más pequeños círculos:
deje $P$ ser un círculo, que se define de la siguiente manera:
- $c$ $(cx, cy)$ es el centro del círculo.
- $r$ es el radio del círculo.
En primer lugar, puedo comprobar si $P$ está dentro o se cruza el círculo definido por $C$$D$:
$$(D + r)^2 \geq (Cx - cx)^2 + (Cy - cy)^2$$ (suma de los radios cuadrado es mayor o igual al cuadrado de la distancia entre el$C$$c$)
En segundo lugar, si lo anterior es cierto, mi plan es encontrar el ángulo entre el radio de $D$ y cada una de las dos tangentes a un círculo en $P$ (hay un problema aquí, leer más abajo) que pasan a través de $C$; si alguno de estos dos ángulos es igual o menor que $\frac{\alpha}{2}$, entonces tengo una intersección.
Nota: El problema con este enfoque es que no funciona en el caso de $C$ está dentro de $P$ (como el pequeño círculo verde que contiene C en la figura 1). Me caso omiso de este caso, porque no sé cómo lidiar con ella. En definitiva, sé que mi respuesta es errónea, sólo estoy dejando que usted sabe lo que tengo hasta ahora. Teniendo en cuenta que el conjunto de argumentos de la función, que será el resultado en $P$ contiene $C$ es casi insignificante, un resultado donde los casos son excluidos es aceptable, incluso si no es ideal.
Sé cómo encontrar el ángulo entre el $Cc$ y las tangentes:
$$\measuredangle uCc = \measuredangle vCc = \arcsin(\frac{r}{d})$$
Pero creo que eso es irrelevante.
Lo que necesitas es encontrar el ángulo entre cada una de las tangentes (líneas negras) y $D$, y si el ángulo es igual a o menor que $\frac{\alpha}{2}$, entonces es un éxito, de lo contrario, una miss.
Creo que necesito encontrar las pendientes de las líneas de $Cu$$Cv$, por lo que puedo comparar a la pendiente de $D$ encontrar el ángulo entre las líneas, usando la relación:
$$\tan(\theta) = \left| \frac{m_{a} - m_{b}}{1 + m_{a}m_{b}}\right|$$
Para mí encontrar las pendientes de las líneas, creo que necesito saber los puntos de $u$$v$.
Hay un último problema con mi enfoque: la función de $arctan$ (que me gustaría utilizar para encontrar $\theta$, determinado $\tan(\theta)$) me puede dar resultados equivocados en caso de que uno de los círculos está en una posición dentro de la opuesta arc $A'$ formados por la extensión de $D$ y las piernas de la arc en diámetros. Oigo $arctan2$ puede solucionar este problema, pero no estoy seguro de cómo usarlo.
Si hay una solución más fácil que la mía, es muy bienvenida. Como ya he mencionado, el tercer punto del triángulo es necesario para mí para saber cómo resolver esta de acuerdo con mi enfoque hasta ahora. Si hay un mejor y más rápido, por favor hágamelo saber, ya que este problema es para ser utilizado en un algoritmo computacional.