Add SLERP to Vector{2,3}, optimize Quat's Vector3 rotation.

Also even out Basis and Quat APIs a little.
This commit is contained in:
tagcup 2018-05-11 20:14:39 -04:00
parent 81b1d3c846
commit ed7aadcd87
11 changed files with 158 additions and 17 deletions

View file

@ -826,3 +826,16 @@ void Basis::set_diagonal(const Vector3 p_diag) {
elements[2][1] = 0;
elements[2][2] = p_diag.z;
}
Basis Basis::slerp(const Basis &target, const real_t &t) const {
// TODO: implement this directly without using quaternions to make it more efficient
#ifdef MATH_CHECKS
ERR_FAIL_COND_V(is_rotation() == false, Basis());
ERR_FAIL_COND_V(target.is_rotation() == false, Basis());
#endif
Quat from(*this);
Quat to(target);
return Basis(from.slerp(to, t));
}