fix bug #487: isometry * scaling was not compiling

This commit is contained in:
Gael Guennebaud
2012-07-04 18:25:07 +02:00
parent d878cf2227
commit 54d55aeaf6
3 changed files with 15 additions and 20 deletions

View File

@@ -75,7 +75,12 @@ public:
/** Concatenates a uniform scaling and an affine transformation */
template<int Dim, int Mode, int Options>
inline Transform<Scalar,Dim,Mode> operator* (const Transform<Scalar,Dim, Mode, Options>& t) const;
inline Transform<Scalar,Dim,int(Mode)==int(Isometry)?Affine:Mode> operator* (const Transform<Scalar,Dim, Mode, Options>& t) const
{
Transform<Scalar,Dim,int(Mode)==int(Isometry)?Affine:Mode> res = t;
res.prescale(factor());
return res;
}
/** Concatenates a uniform scaling and a linear transformation matrix */
// TODO returns an expression
@@ -171,16 +176,6 @@ UniformScaling<Scalar>::operator* (const Translation<Scalar,Dim>& t) const
return res;
}
template<typename Scalar>
template<int Dim,int Mode,int Options>
inline Transform<Scalar,Dim,Mode>
UniformScaling<Scalar>::operator* (const Transform<Scalar,Dim, Mode, Options>& t) const
{
Transform<Scalar,Dim,Mode> res = t;
res.prescale(factor());
return res;
}
} // end namespace Eigen
#endif // EIGEN_SCALING_H