| 616 | } |
| 617 | |
| 618 | void xQuatToMat(const xQuat* q, xMat3x3* m) |
| 619 | { |
| 620 | F32 tx = (2.0f * q->v.x); |
| 621 | F32 ty = (2.0f * q->v.y); |
| 622 | F32 tz = (2.0f * q->v.z); |
| 623 | F32 tsx = tx * q->s; |
| 624 | F32 tsy = ty * q->s; |
| 625 | F32 tsz = tz * q->s; |
| 626 | F32 txx = tx * q->v.x; |
| 627 | F32 txy = ty * q->v.x; |
| 628 | F32 txz = tz * q->v.x; |
| 629 | F32 tyy = ty * q->v.y; |
| 630 | F32 tyz = tz * q->v.y; |
| 631 | F32 tzz = tz * q->v.z; |
| 632 | |
| 633 | m->right.x = (1.0f - tyy) - tzz; |
| 634 | m->right.y = txy - tsz; |
| 635 | m->right.z = txz + tsy; |
| 636 | |
| 637 | m->up.x = txy + tsz; |
| 638 | m->up.y = (1.0f - tzz) - txx; |
| 639 | m->up.z = tyz - tsx; |
| 640 | |
| 641 | m->at.x = txz - tsy; |
| 642 | m->at.y = tyz + tsx; |
| 643 | m->at.z = (1.0f - txx) - tyy; |
| 644 | |
| 645 | m->flags = 0; |
| 646 | } |
| 647 | |
| 648 | void xQuatToAxisAngle(const xQuat* q, xVec3* a, F32* t) |
| 649 | { |
no outgoing calls
no test coverage detected