aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/star_control/matrix_inv.h
AgeCommit message (Collapse)Author
2017-09-02TITANIC: Templatize matrix_invDavid Fioramonti
This allows DAffine and FPose to use a double version and a float version of matrix4Inv.
2017-08-31TITANIC: Add 4x4 inverse to Daffine and use itDavid Fioramonti
Very important for StarCamera:lockMarker2 is an inverse of the difference between locked star1 and about to be star2. Before it was calculating the col4 values by doing a new col4 = -inv(R)*col4. col4 represents the x,y,z position of the vector. This calculation is not correct in the most general sense and is only valid for a single rotation and translation. For any more than one rotation and translation the upper left 3x3 inverse is still the transpose of the previous 3x3 portion there since that is just the rotation part, but the translation part is now R2T1 + T2, which can't be undone by simply multiplying by the inverse of R2. This gets more complicated for lots of rotations so I've added a general 4x4 inverse calculation and just pulled of the column 4 values. The inverse implementation I used was from the mesa 3d library and that has an MIT license so its okay to use in GPL.