Pregunta

Tengo un arco girado dibujado con gráficos Android 2D

c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);

el arco girar Mientras el juego está funcionando,

Quiero saber cómo puedo detectar si algún otro juego de juego (rects, círculos) chocan con él ??

Esta es la primera vez para escribir un juego :)

Vi algo como esto en http://hakim.se/experiments/html5/core/01/

Gracias por adelantado

¿Fue útil?

Solución

Las colisiones de ARC son ligeramente más difíciles que las colisiones normales, pero al usar álgebra booleana, puede verificar fácilmente si un punto dado está dentro de su arco.

Eche un vistazo a la siguiente imagen.

Hay 3 objetos aquí. La esfera negra, esto visualiza su arco, si algo choca con él, podría estar dentro de su arco. La esfera roja en la parte superior de la esfera negra, esto visualiza el 'interior' del arco, si algo está dentro de la esfera roja, definitivamente no está 'dentro del arco. Ahora también está el triángulo verde que visualiza el "corte" de su arco, cualquier cosa dentro del triángulo verde tampoco está definitivamente en su arco.

Probar si algo está dentro de la esfera negra es fácil. (Distancia del objeto al centro de la esfera <= radio de la esfera). Lo mismo para la esfera roja. El triángulo verde es un poco complicado, primero tienes que construir esto. Encuentra los radianes de inicio y finalización de tu arco. y rotar un vector unitario por radianes iniciales. Luego gire un vector unitario por radianes finales. Alargar ambos vectores por 2 * El radio de la esfera negra. Ahora use el punto central de su arco y las posiciones de dos vectores con la posición central agregada como los 3 puntos del triángulo. Luego puede usar uno de los solucionadores de colisión del triángulo puntual: http://www.bing.com/search?q=point+triangle+Collision&go=&form=qblh&scope=web

Así que recuerde: colisión con arc = (colisión con esfera negra) &&! (Colisión con esfera roja) &&! (Colisión con triángulo verde).

ARC Collision

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top