2D-Kollisionserkennung

Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
[gesichtete Version][unmarkierte Version]
(Kollision zwischen zwei Strecken)
(Kollision zwischen zwei Strecken)
Zeile 273: Zeile 273:
 
return ua >= 0 && ua <= 1 && ub >= 0 && ua <= 1;
 
return ua >= 0 && ua <= 1 && ub >= 0 && ua <= 1;
 
}
 
}
 +
</sourcecode>
 +
}}
 +
 +
{{Spoiler|
 +
<xh4>Implementierung in Python</xh4>
 +
|
 +
<sourcecode lang="python" tab="4">
 +
def lineSegmentCollision(a1, a2, b1, b2):
 +
denom = (b2[1] - b1[1]) * (a2[0] - a1[0]) -
 +
(b2[0] - b1[0]) * (a2[1] - a1[1])
 +
if (abs(denom) < EPSILON):
 +
return false
 +
 +
ua = ((b2[0] - b1[0]) * (a1[1] - b1[1]) -
 +
  (b2[1] - b1[1]) * (a1[0] - b1[0])) / denom
 +
ub = ((a2[0] - a1[0]) * (a1[1] - b1[1]) -
 +
  (a2[1] - a1[1]) * (a1[0] - b1[0])) / denom
 +
return ua >= 0 and ua <= 1 and ub >= 0 and ua <= 1
 
</sourcecode>
 
</sourcecode>
 
}}
 
}}

Version vom 5. November 2011, 19:20 Uhr

Klicke hier, um diese Version anzusehen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge