[Java / C] Botsen van 2 objecten

Pagina: 1
Acties:

  • CT
  • Registratie: September 2001
  • Laatst online: 29-08 19:57

CT

📱💻 🎮 ⌚🖥

Topicstarter
Stel je hebt een 2 dimensionale omgeving, een X en een Y as van x bij y lengte.

Nu heb je een object, vierkant, van bijv. op x=10 en y=10 van 10 bij 10.

Hoe ziet de vergelijking eruit waaruit blijkt dat een ander object van bijv. 3 bij 3 dit object aanraakt ??

Kijk, met een enkele stip is het gewoon tussen de x en de x+lengte en tussen y en y+hoogte. Dus:


code:
1
2
3
4
5
6
7
8
9
int x=10,y=10;
int lengte=10;

public void aanraken(_x, _y) {
    if( (_x > x) && (_y > y) && (_x < x+lengte) && (_y < y+lengte) {
         return true;
    }
 return false;
}


Maar omdat dit object niet 1 punt heeft maar 3 x 3 punten lukt het me maar niet een goede vergelijking te maken :(

Wie helpt mij ??? :?

De functie zou leeg in iedergeval er zo uitzien:

code:
1
2
3
4
5
6
7
8
9
int x=10,y=10;
int lengte=10;

public void aanraken(_x, _y, _hoogte, _breedte) {
    if( [onbekend] ) {
         return true;
    }
 return false;
}

Verwijderd

vergelijking opschrijven:
Als _x > x en _y > y OF (_x + 3) > x OF (_x - 3) > x etc
etc

zo maar even uit mijn blote hoofd,
Ik denk dat een switch of iets dergelijk mooier is omdat je 2 X 2 X 2 = 8 mogelijkheden krijgt
2 x 2 vanwege de 2 dimensionale en dan 2 vierkantjes dus nog een keer x2
Wordt iig geen simpele vergelijking denk ik zo

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 29-08 03:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het kan makkelijk te elimineren zijn mbv een aantal tests. Allereerst is het makkelijker om x2 en y2 te gebruiken, dan hoef je breedte en hoogte niet steeds bij x en y op te tellen in je vergelijkingen :)

als A zich links van B bevindt is de A.x2 natuurlijk kleiner dan B.x1. En dit is natuurlijk ook om te draaien (B links van A) en vervangbaar door y (A boven B, B boven A)
C:
1
2
if (A.x2 < B.x1 || A.x1 > B.x2 || A.y2 < B.y1 || A.y1 > B.y2)
    return GEEN_SNIJDING;


in alle andere gevallen is er wel een snijding

Als je nog een methode wilt weten die geldt voor convex objecten moet je dit even lezen: [rml].oisyn in "[ Alg] advanced collision detection (uitv"[/rml]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • CT
  • Registratie: September 2001
  • Laatst online: 29-08 19:57

CT

📱💻 🎮 ⌚🖥

Topicstarter
Heyy hartstikke bedankt mensen :) hier kan ik wat mee.

  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 26-08 21:49

NDF82

Doomed Space Marine

Wat ook wel eens wil helpen is op plain wiskunde papier een simpel tekeningetje maken. Helpt voor mij veel, omdat je dan toch alles makkelijk kunt overzien.

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II