| 652 | } |
| 653 | |
| 654 | F32 xQuatNormalize(xQuat* o, const xQuat* q) |
| 655 | { |
| 656 | F32 one_len, len, len2; |
| 657 | len2 = xQuatLength2(q); |
| 658 | if (len2 == 1.0f) |
| 659 | { |
| 660 | if (o != q) |
| 661 | { |
| 662 | xQuatCopy(o, q); |
| 663 | } |
| 664 | return 1.0f; |
| 665 | } |
| 666 | |
| 667 | if (len2 == 0.0f) |
| 668 | { |
| 669 | if (o != q) |
| 670 | { |
| 671 | xQuatCopy(o, &g_IQ); |
| 672 | } |
| 673 | return 0.0f; |
| 674 | } |
| 675 | |
| 676 | len = xsqrt(len2); |
| 677 | one_len = 1.0f / len; |
| 678 | xQuatSMul(o, q, one_len); |
| 679 | return len; |
| 680 | } |
| 681 | |
| 682 | void xQuatSlerp(xQuat* q, const xQuat* a, const xQuat* b, F32 t) |
| 683 | { |
no test coverage detected