【发布时间】:2013-02-26 16:26:21
【问题描述】:
我的类模板AnimCurve 中有一个静态成员函数lerp(),我想专门用于四元数,这样:
template<>
inline Quatf AnimCurve<Quatf>::lerp(
const Quatf& start,
const Quatf& end,
float time
)
{
return start.slerp(time, end);
}
但是,这还不够通用,因为还可以使用Quatd。由于Quatf 和Quatd 都是Quaternion<T> 的类型定义,是否可以编写一个对两者都适用的函数?
这是AnimCurve的当前定义:
template< typename T >
class AnimCurve {
public:
AnimCurve() {}
void addKeyframe(float time, T value);
T getvalue(float time) const;
private:
static inline T lerp( const T& start, const T& end, float time );
std::map<float, T> mKeyframes;
};
【问题讨论】:
-
你说你有一个“通用 lerp 函数”,但你的代码似乎表明它实际上是一个模板类
AnimCurve。您能否确认这一点(也许通过发布lerp的声明)? -
另一个问题,只是为了确定:您希望您的专长用于所有
Quaternions,还是只用于Quatf和Quatd?跨度> -
@LucTouraille 两者兼而有之。另外,类 AnimCurve 确实是一个模板,我的 lerp 函数的声明在我的问题的第一行。