
I read the book. And I discovered that in your code you are calculating the transpose of the contact basis matrix that will be actually the inverse of it. In almost all of the code you used this matrix as worldtocollision (with TransposeTransform* methods).
But I found an exception in Collision.cs line 470, you used this matrix with Vector3.Transform to convert impulse to world coordinates!
I'm not sure that this is a bug (maybe the comments are wrong?) and also I'm not sure if this is the only case, but I think this needs some consideration. At least you may consider changing the name to worldToCollision?
Cheers.



Oops,
ignore the above post. I was so confused about the difference between Matrix and Vector multiplications between cyclone and Oops that I messed up.



Thanks for looking at the problem. You are correct. The Matrix multiplications (as well as quaternion representation) is different between the cyclone engine and XNA. But, I also went off of other literature as well, so if you find anything else, let me
know.
Good luck!

