Pixelgenaue Kollisionserkennung in HTML5-Canvas

Möchte ich überprüfen, eine Kollision zwischen zwei Sprites, die in HTML5 canvas. So zum Wohle der Diskussion, lassen Sie uns davon ausgehen, dass beide sprites sind, IMG-Objekte und eine Kollision bedeutet, dass der alpha-Kanal nicht 0 ist. Nun, diese beiden sprites haben kann, eine rotation um die Mitte des Objekts, aber keine weitere transformation in diesem Fall macht dies nicht leichter.

Jetzt die offensichtliche Lösung kam ich mit wäre dieser:

  • berechnen Sie die Transformationsmatrix für beide
  • herauszufinden, eine grobe Abschätzung des Bereichs, in dem der code getestet werden sollte (wie offset der beiden + berechnet extra Raum für die rotation)
  • für alle Pixel in dem sich überschneidenden Rechteck, transformieren Sie das Koordinatensystem und testen Sie das Bild an der berechneten position (gerundet auf den nächsten Nachbar) für den alpha-Kanal. Dann Abbruch auf den ersten Treffer.

Das problem, das ich sehe, ist, dass a) es gibt keine matrix-Klassen in JavaScript, das heißt, ich habe zu tun, dass in JavaScript, das könnte sehr langsam sein, ich habe zum test für Kollisionen jeder Rahmen, der macht das schon ziemlich teuer. Außerdem habe ich zu replizieren, etwas, was ich bereits zu tun haben, auf die Zeichnung (oder das, was die Leinwand für mich tut, einrichten der Matrizen).

Frage ich mich, ob ich etwas fehlt hier, und wenn es eine einfachere Lösung für die Kollisionserkennung.

  • Ich kann nicht finden, eine Antwort, ich Stelle diese Frage auch 🙁
Schreibe einen Kommentar