Add bone_transform * vector and * point
This commit is contained in:
parent
df59cffd43
commit
4dcd85021e
1 changed files with 13 additions and 0 deletions
|
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <psemek/geom/vector.hpp>
|
||||
#include <psemek/geom/point.hpp>
|
||||
#include <psemek/geom/quaternion.hpp>
|
||||
#include <psemek/geom/matrix.hpp>
|
||||
#include <psemek/geom/affine_transform.hpp>
|
||||
|
|
@ -84,6 +85,18 @@ namespace psemek::gfx
|
|||
return {geom::slerp(m1.rotation, m2.rotation, t), std::exp(geom::lerp(std::log(m1.scale), std::log(m2.scale), t)), geom::lerp(m1.translation, m2.translation, t)};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
geom::vector<T, 3> operator * (bone_transform<T> const & m, geom::vector<T, 3> const & v)
|
||||
{
|
||||
return m.translation + m.scale * geom::rotate(m.rotation, v);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
geom::point<T, 3> operator * (bone_transform<T> const & m, geom::point<T, 3> const & p)
|
||||
{
|
||||
return p.zero() + m * (p - p.zero());
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
using pose = std::vector<bone_transform<T>>;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue