Add inverse(bone_transform)
This commit is contained in:
parent
4dcd85021e
commit
b724b8d68a
1 changed files with 10 additions and 0 deletions
|
|
@ -79,6 +79,16 @@ namespace psemek::gfx
|
|||
return bone_transform<T>{m1.rotation * m2.rotation, m1.scale * m2.scale, m1.translation + m1.scale * geom::rotate(m1.rotation, m2.translation)};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bone_transform<T> inverse(bone_transform<T> const & m)
|
||||
{
|
||||
// [(1, T) * (S, 0) * (R, 0)]^-1 = (R^-1, 0) * (S^-1, 0) * (1, -T) =
|
||||
// = (1, - R^-1 S^-1 T) * (S^-1, 0) * (R^-1, 0)
|
||||
|
||||
auto ir = geom::inverse(m.rotation);
|
||||
return bone_transform<T>{ir, T{1} / m.scale, - geom::rotate(ir, m.translation) / m.scale};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bone_transform<T> lerp(bone_transform<T> const & m1, bone_transform<T> const & m2, T t)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue