Multiply a matrix times the transpose of a matrix
| 361 | |
| 362 | // Multiply a matrix times the transpose of a matrix |
| 363 | void vm_MatrixMulTMatrix(matrix *dest, matrix *src0, matrix *src1) { |
| 364 | // For multiplying two 3x3 matrices together |
| 365 | |
| 366 | assert((dest != src0) && (dest != src1)); |
| 367 | |
| 368 | dest->rvec.x = src0->rvec.x * src1->rvec.x + src0->uvec.x * src1->uvec.x + src0->fvec.x * src1->fvec.x; |
| 369 | dest->uvec.x = src0->rvec.x * src1->rvec.y + src0->uvec.x * src1->uvec.y + src0->fvec.x * src1->fvec.y; |
| 370 | dest->fvec.x = src0->rvec.x * src1->rvec.z + src0->uvec.x * src1->uvec.z + src0->fvec.x * src1->fvec.z; |
| 371 | |
| 372 | dest->rvec.y = src0->rvec.y * src1->rvec.x + src0->uvec.y * src1->uvec.x + src0->fvec.y * src1->fvec.x; |
| 373 | dest->uvec.y = src0->rvec.y * src1->rvec.y + src0->uvec.y * src1->uvec.y + src0->fvec.y * src1->fvec.y; |
| 374 | dest->fvec.y = src0->rvec.y * src1->rvec.z + src0->uvec.y * src1->uvec.z + src0->fvec.y * src1->fvec.z; |
| 375 | |
| 376 | dest->rvec.z = src0->rvec.z * src1->rvec.x + src0->uvec.z * src1->uvec.x + src0->fvec.z * src1->fvec.x; |
| 377 | dest->uvec.z = src0->rvec.z * src1->rvec.y + src0->uvec.z * src1->uvec.y + src0->fvec.z * src1->fvec.y; |
| 378 | dest->fvec.z = src0->rvec.z * src1->rvec.z + src0->uvec.z * src1->uvec.z + src0->fvec.z * src1->fvec.z; |
| 379 | } |
| 380 | |
| 381 | matrix operator*(matrix src0, matrix src1) { |
| 382 | // For multiplying two 3x3 matrices together |
no outgoing calls
no test coverage detected