Ik wil graag voor een computerspel een "collison detection" algoritme maken. Daarbij vraag ik of een vorm een andere vorm raakt(snijdt).
Van de beide vormen weet ik een middenpunt (x,y) en een breedte en hoogte (b,h).
Bij rechthoeken kan ik dit controleren met:
absoluut(x1-x2) absoluut(b1+b2)/2
absoluut(y1-y2) absoluut(h1+h2)/2
Als ze beide waar zijn snijden ze elkaar.
Nu wil ik een soortgelijke formule uitvoeren voor 2 ellipsen met dezelfde eigenschappen (x,y,b,h)
Met 2 cirkels begrijp ik 'm, echte afstand (abc formule) moet dan kleiner zijn dan de opgetelde stralen van beide cirkels.
Zat al te denken dat de richting van de lijn tussen de 2 middenpunten een invloed heeft op de gebruikte stralen, maar ik mis de nodige kennis om uit te vogelen hoe.
Kan dit ook om te controleren of een ellips een rechthoek snijdt?
Ik hoef (gelukkig) geen rekening te houden met draaihoeken van beide soorten vormen.
Ik hoop dat er snelle manieren zijn om dit te brekenen. Deze berekening voert de computer namelijk duizenden keren per seconde uit.
In ieder geval alvast bedanktWillem
21-6-2009
Voor de collision detection maakt het niet uit als je een van beide middenpunten gelijk stelt aan (0,0).
Stel het andere middenpunt gelijk aan l(cos(t),sin(t)).
Ik neem aan dat de hoofdassen van al uw ellipsen dezelfde richtingen hebben.
De verbindingslijn van de middenpunten snijdt de ene ellips in (0,0) + (b1cos(t)/2,h1sin(t)/2), de andere in l(cos(t),sin(t)) - (b2cos(t)/2,h2sin(t)/2).
Voor t tussen 0 en p/2 is er geen collision als de eerste coordinaat van het eerste snijpunt kleiner is dan de eerste van het tweede, en de tweede van het eerste kleiner dan de tweede van het tweede.
Soortgelijke conclusies voor andere t.
De eisen die je vindt voor l hangen inderdaad van de hoek t af.
Met een ellips en een rechthoek is het wat ingewikkelder, want nu hangt van hoek t af op welke zijde van de rechthoek het snijpunt ligt van de lijn door de twee middenpunten en de rechthoek.
hr
2-7-2009
#59699 - Analytische meetkunde - Iets anders