MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xQuatSlerp

Function xQuatSlerp

src/SB/Core/x/xMath3.cpp:682–721  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

680}
681
682void xQuatSlerp(xQuat* q, const xQuat* a, const xQuat* b, F32 t)
683{
684 F32 one_sintheta;
685 F32 temp_t;
686 F32 abdot;
687 xQuat b2;
688
689 xQuat* qp1 = 0;
690 xQuat* qp2 = 0;
691
692 abdot = xQuatDot(a, b);
693 if (abdot < 0.0)
694 {
695 abdot = -abdot;
696 b2.v.x = -b->v.x;
697 b2.v.y = -b->v.y;
698 b2.v.z = -b->v.z;
699 b2.s = -b->s;
700 b = &b2;
701 }
702 if (0.999 <= abdot)
703 {
704 temp_t = 1.0 - t;
705 }
706 else
707 {
708 abdot = xacos(abdot);
709 one_sintheta = 1.0 / isin(abdot);
710 temp_t = isin(t);
711 temp_t = one_sintheta * temp_t;
712 abdot = isin(t * abdot);
713 t = one_sintheta * abdot;
714 }
715
716 xQuatSMul(qp1, a, temp_t);
717 xQuatSMul(qp2, b, t);
718 xQuatAdd(q, qp1, qp2);
719 xQuatNormalize(q, q);
720 return;
721}
722
723void xQuatMul(xQuat* o, const xQuat* a, const xQuat* b)
724

Callers 8

_xCameraUpdateFunction · 0.70
updateMethod · 0.70
xCutscene_SetCameraFunction · 0.70
xEntMPMoveFunction · 0.70
update_trailFunction · 0.50
zCameraConversUpdateFunction · 0.50
zCameraFlyUpdateFunction · 0.50
update_detach_cameraMethod · 0.50

Calls 6

xQuatDotFunction · 0.85
xacosFunction · 0.85
isinFunction · 0.85
xQuatSMulFunction · 0.85
xQuatAddFunction · 0.85
xQuatNormalizeFunction · 0.70

Tested by

no test coverage detected