Purtroppo non ho abbastanza fama di commentare in modo da sto aggiungendo questo come un'altra risposta invece ...
risposta eccellente
di Cristiano lavora per controllare che il il cerchio si sovrappone a uno dei segmenti di linea del poligono, ma non controlla il caso più insolito in cui il cerchio è completamente contenuto all'interno del poligono, cosa che potrebbe accadere se un piccolo cerchio in rapido movimento entra in collisione con un grande poligono.
ho repasted codice di Cristiano sotto con una piccola modifica per risolvere il problema ...
public static boolean overlaps(Polygon polygon, Circle circle) {
float []vertices=polygon.getTransformedVertices();
Vector2 center=new Vector2(circle.x, circle.y);
float squareRadius=circle.radius*circle.radius;
for (int i=0;i<vertices.length;i+=2){
if (i==0){
if (Intersector.intersectSegmentCircle(new Vector2(vertices[vertices.length - 2], vertices[vertices.length - 1]), new Vector2(vertices[i], vertices[i + 1]), center, squareRadius))
return true;
} else {
if (Intersector.intersectSegmentCircle(new Vector2(vertices[i-2], vertices[i-1]), new Vector2(vertices[i], vertices[i+1]), center, squareRadius))
return true;
}
}
return polygon.contains(circle.x, circle.y);
}
fonte
2015-04-29 08:44:15
Sarà questo lavoro codice con PolyLine invece di poligono? – Vetalll
Spiacente, non so da quando ho fatto questa domanda/risposta a 2 anni fa =/ –
Ho controllato questo codice. Sì, questo è un codice funzionante per entrambe le varianti. Polygon e PolyLine – Vetalll