Pixel Perfect Collision Detection in HTML5 Canvas
Posted
by Armin Ronacher
on Stack Overflow
See other posts from Stack Overflow
or by Armin Ronacher
Published on 2010-04-30T10:03:09Z
Indexed on
2010/04/30
10:07 UTC
Read the original article
Hit count: 613
Hi,
I want to check a collision between two Sprites in HTML5 canvas. So for the sake of the discussion, let's assume that both sprites are IMG objects and a collision means that the alpha channel is not 0. Now both of these sprites can have a rotation around the object's center but no other transformation in case this makes this any easier.
Now the obvious solution I came up with would be this:
- calculate the transformation matrix for both
- figure out a rough estimation of the area where the code should test (like offset of both + calculated extra space for the rotation)
- for all the pixels in the intersecting rectangle, transform the coordinate and test the image at the calculated position (rounded to nearest neighbor) for the alpha channel. Then abort on first hit.
The problem I see with that is that a) there are no matrix classes in JavaScript which means I have to do that in JavaScript which could be quite slow, I have to test for collisions every frame which makes this pretty expensive. Furthermore I have to replicate something I already have to do on drawing (or what canvas does for me, setting up the matrices).
I wonder if I'm missing anything here and if there is an easier solution for collision detection.
© Stack Overflow or respective owner