2D-Kollisionserkennung
Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
[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.