Added LerpQuat/SLerpQuat/Blend(Transform)

This commit is contained in:
hyzboy 2024-07-29 13:27:47 +08:00
parent 7feefc65c9
commit e8b5f2a477
2 changed files with 24 additions and 1 deletions

View File

@ -170,6 +170,16 @@ namespace hgl
axis=glm::axis(quat);
}
inline Quatf LerpQuat(const Quatf &from,const Quatf &to,const float t)
{
return glm::lerp(from,to,t);
}
inline Quatf SLerpQuat(const Quatf &from,const Quatf &to,const float t)
{
return glm::slerp(from,to,t);
}
inline Vector3f TransformPosition(const Matrix4f &m,const Vector3f &v)
{
return Vector3f(m*Vector4f(v,1.0f));
@ -393,5 +403,7 @@ namespace hgl
};//Transform
constexpr const size_t TransformMatrix4fLength=sizeof(Transform);
Transform Blend(const Transform &from,const Transform &to,const float t);
}//namespace hgl
#endif//HGL_ALGORITHM_MATH_VECTOR_MATRIX_INCLUDE

View File

@ -1,4 +1,4 @@
#include<hgl/math/Matrix.h>
#include<hgl/math/Matrix.h>
// Vulkan Cookbook
// ISBN: 9781786468154
@ -167,4 +167,15 @@ namespace hgl
return true;
}
Transform Blend(const Transform &from,const Transform &to,const float t)
{
Transform result;
result.SetTranslation( from.GetTranslation()*(1.0f-t) + to.GetTranslation() *t);
result.SetRotation( SLerpQuat(from.GetRotationQuat(),to.GetRotationQuat(),t));
result.SetScale( from.GetScale() *(1.0f-t) + to.GetScale() *t);
return result;
}
}//namespace hgl