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
|
#pragma once
|
||||||
|
|
||||||
#include <psemek/geom/vector.hpp>
|
#include <psemek/geom/vector.hpp>
|
||||||
|
#include <psemek/geom/point.hpp>
|
||||||
#include <psemek/geom/quaternion.hpp>
|
#include <psemek/geom/quaternion.hpp>
|
||||||
#include <psemek/geom/matrix.hpp>
|
#include <psemek/geom/matrix.hpp>
|
||||||
#include <psemek/geom/affine_transform.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)};
|
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>
|
template <typename T>
|
||||||
using pose = std::vector<bone_transform<T>>;
|
using pose = std::vector<bone_transform<T>>;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue