Se me acaba de ocurrir cómo computar eficientemente si el centro del círculo está en el interior del cuadrilátero aprovechando que se trata de un juego en vista isométrica.
En un juego de este tipo, el cuadrilátero será un rombo, con este aspecto:
B
/\
/ \
A / .O \
\ / C
\ /
\/
D
donde
A,
B,
C,
D y
O son puntos.
Viendo el dibujo podemos observar que
A y
C están a la misma altura, alineados con
O. También están alineados
B,
O y
D. Aprovechando esta característica se puede saber con pocos cálculos si el punto está en el interior del rombo realizando subdivisiones del espacio:
- Se calcula si el punto está a la izq. o a la dcha. de la recta BD (eficiente, pues está alineada con el eje Y). Esto nos divide el espacio en dos subespacios.</li>
- Calcular si el punto está encima o debajo de la recta AC (también eficiente). Esto nos divide el subespacio en el que estemos en otros dos.</li>
- Llegados a este punto, en el subespacio que estemos sólo habrá una recta: AB, BC, CD ó DA. Dependiendo de en el subespacio que estemos, habrá que saber si estamos encima o debajo de la recta.</li>
- Construimos la ecuación punto-pendiente de la recta correspondiente y sustituimos el valor de la componente X del punto.</li>
- Ya solo resta comparar el resultado con el valor de la componente Y del punto para saber si está encima o debajo de la recta.</li>
De esta manera, sólo hay que realizar un cálculo
complejo para uno de los segmentos, en vez de los cuatro.
Espero no haber metido la pata en ningún lado.
Un saludo.
Ruben3d