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: 670
        
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