One thing I noticed is that your coordinate system is left-handed, so your cross-products follow a left-hand rule instead of a right-hand rule.
Not technically wrong but, since right-handed coordinate systems are the more common convention, I think it would be a better learning tool if you flipped it. You can make it right-handed by either:
- negating any axis, or
- swapping any two axes