All m(s) are 4x4. All v(s) are size 4 vectors. Return mout, vout, where mout*x+vout == m2*(m1*x+v1)+v2 mout = m2*m1 vout = m2*v1 + v2
| 314 | // mout = m2*m1 |
| 315 | // vout = m2*v1 + v2 |
| 316 | void GetMxbCombine(float* mout, float* vout, |
| 317 | const float* m1_, const float* v1_, |
| 318 | const float* m2_, const float* v2_) |
| 319 | { |
| 320 | float m1[16]; |
| 321 | float v1[4]; |
| 322 | float m2[16]; |
| 323 | float v2[4]; |
| 324 | memcpy(m1, m1_, 16*sizeof(float)); |
| 325 | memcpy(v1, v1_, 4*sizeof(float)); |
| 326 | memcpy(m2, m2_, 16*sizeof(float)); |
| 327 | memcpy(v2, v2_, 4*sizeof(float)); |
| 328 | |
| 329 | GetM44M44Product(mout, m2, m1); |
| 330 | GetM44V4Product(vout, m2, v1); |
| 331 | GetV4Sum(vout, vout, v2); |
| 332 | } |
| 333 | |
| 334 | bool GetMxbInverse(float* mout, float* vout, |
| 335 | const float* m_, const float* v_) |