mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-16 14:49:39 +08:00
fix bug #487: isometry * scaling was not compiling
This commit is contained in:
parent
d878cf2227
commit
54d55aeaf6
@ -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
|
||||
|
@ -545,7 +545,12 @@ public:
|
||||
|
||||
inline Transform& operator=(const UniformScaling<Scalar>& t);
|
||||
inline Transform& operator*=(const UniformScaling<Scalar>& s) { return scale(s.factor()); }
|
||||
inline Transform operator*(const UniformScaling<Scalar>& s) const;
|
||||
inline Transform<Scalar,Dim,int(Mode)==int(Isometry)?Affine:Isometry> operator*(const UniformScaling<Scalar>& s) const
|
||||
{
|
||||
Transform<Scalar,Dim,int(Mode)==int(Isometry)?Affine:Isometry,Options> res = *this;
|
||||
res.scale(s.factor());
|
||||
return res;
|
||||
}
|
||||
|
||||
inline Transform& operator*=(const DiagonalMatrix<Scalar,Dim>& s) { linear() *= s; return *this; }
|
||||
|
||||
@ -973,14 +978,6 @@ inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::o
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename Scalar, int Dim, int Mode, int Options>
|
||||
inline Transform<Scalar,Dim,Mode,Options> Transform<Scalar,Dim,Mode,Options>::operator*(const UniformScaling<Scalar>& s) const
|
||||
{
|
||||
Transform res = *this;
|
||||
res.scale(s.factor());
|
||||
return res;
|
||||
}
|
||||
|
||||
template<typename Scalar, int Dim, int Mode, int Options>
|
||||
template<typename Derived>
|
||||
inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const RotationBase<Derived,Dim>& r)
|
||||
|
@ -415,6 +415,9 @@ template<typename Scalar, int Mode, int Options> void transformations()
|
||||
Rotation2D<double> r2d1d = r2d1.template cast<double>();
|
||||
VERIFY_IS_APPROX(r2d1d.template cast<Scalar>(),r2d1);
|
||||
|
||||
t20 = Translation2(v20) * (Rotation2D<Scalar>(s0) * Scaling(s0));
|
||||
t21 = Translation2(v20) * Rotation2D<Scalar>(s0) * Scaling(s0);
|
||||
VERIFY_IS_APPROX(t20,t21);
|
||||
}
|
||||
|
||||
template<typename Scalar> void transform_alignment()
|
||||
|
Loading…
x
Reference in New Issue
Block a user