The totally mix of some opensource math lib like cgmath aljabar;
We do not use the other matured math lib, because we want:
- explore some more solid and useful abstraction
- make sure the implementation is light weight and easy to maintain and understand
- make strong connection with other rendiation infra for example shader-api
use marco from cgmath heavily, but did some modification.
- Normalized vec wrap type. Use type system to avoid unnecessary normalize.
- Unit typed scalar and angle type. Use type system to avoid unit mis conversion.