Hol a hiba ebben a függvényben? (Javascript ütközésvizsgálat) Rossz az elvem, vagy csak valami apró hibát nem látok?
A függvény feladata az lenne, hogy 2 objektumról (obj1 egy téglalap, obj2 egy kör [r sugárral]) eldöntse, hogy átlapolódnak-e. A baj vele, hogy egyáltalán nem érzékeli.
A kód:
function utkozik(obj1, obj2)
{
//ob1 teglalap, obj2 kor [r sugar]
var top1=obj1.x; //tegla
var right1=obj1.x+obj1.szel;
var top1=obj1.y;
var left1=obj1.x;
var bot1=obj1.x+obj1.mag;
console.log("1. right: "+right1+" Top: "+top1
+"left: "+left1+"bot: "+bot1);
//kor
var right2=obj2.x+obj2.r;
var top2=obj2.y-obj2.r;
var left2=obj2.x-obj2.r;
var bot2=obj2.y+obj2.r;
console.log("2. right: "+right2+" Top: "+top2
+" left: "+left2+" wbot: "+bot2);
if (bot1 < top2) return false;
if (top1 > bot2) return false;
if ( right1 < left2) return false;
if (left1 > rigth2 ) return false;
return true;
}
A körömnek a 4 fixpontja a vízszintes és merőleges átmérőknek a körvonallal vett metszéspontjai (felső, alsó, jobb és bal, mintha a köré írt legkisebb négyzet oldalait vizsgálnám).
A feltételeim valószínűleg tényleg értelmetlenek, át kellene jobban gondolnom.
Köszönöm a segítséged, írhat más is, ha tud valamit hozzátenni!
Az a gond, hogy a kört befoglaló négyzettel való közelítés miatt akkor is ütközést detektálnál, ha valójában még nem lenne ütközés.
Fenti kód ettől függetlenül is tartalmaz hibát, méghozzá az obj1 adatainak kiszámításánál. Eleve, top1-et kétszer számolod, de itt szerencsére jó eredménnyel csapod felül a rosszat. bot1-nél ugyanakkor x koordinátát használsz (mint az első top1-nél), amely ugye nyilván rossz...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!