roby65
allora, ho un grandissimo problema: nn riesco a fare un codice ke funzioni efficacemente ke controlli la collisione cn una linea ed un rettangolo, ho provato trovando le coordinate in basso del rettangolo e poi trovando la y ke dobrebbe avere a quella x, ma nn funziona bene xke la linea risulta spostata......qualuno sa propormi una soluzione + efficace?
Mettiamo che l'origine della linea sia linea[0] e che la fine linea[1]
mentre il rettangolo è identificato dai vertici box[0],box[1],box[2],box[3]
Poi ovviamente sistemi il tutto per funzionare con il tuo codice...
Codice:
// invece di testare la collisione, diamo per scontato che ci sia e testiamo
// la non collisione per fare meno prove
// infatti basta vedere se i vertici della linea stanno entrambi da un lato o
// dall'altro rispetto la proiezione del rettangolo su x e poi se non su y
// per confermare
bool cx=true, collisione=true;
//controllo su X
if (linea[0].x<box[0].x&&linea[1].x<box[0].x) cx=false;
else if (linea[0].x>box[1].x&&linea[1].x>box[1].x) cx=false;
if (cx)
{
//controllo su Y
if (linea[0].y<box[0].y&&linea[1].y<box[0].y) collisione=false;
else if (linea[0].y>box[2].y&&linea[1].y>box[2].y) collisione=false;
}
non ho provato il codice ma funziona sicuro
E' inteso che box[0] sia il vertice in alto a sinistra del rettangolo, 1 quello in alto o in basso a destra (basta che sia a destra), e 2 quello in basso a sinistra o destra (anche qui basta che sia in basso)
squall88
okokok calma e spiegati meglio, magari capiamo qualcosa...
chiedeva come calcolare la collisione tra una retta e un rettagolo