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:
parent
81b1d3c846
commit
ed7aadcd87
11 changed files with 158 additions and 17 deletions
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue