11#ifndef EIGEN_SCALING_H
12#define EIGEN_SCALING_H
15#include "./InternalHeaderCheck.h"
40template <
typename Scalar,
int Dim,
int Mode>
41struct uniformscaling_times_affine_returntype {
43 using type = Transform<Scalar, Dim, NewMode>;
47template <
typename Scalar_>
62 inline const Scalar& factor()
const {
return m_factor; }
63 inline Scalar& factor() {
return m_factor; }
75 template <
int Dim,
int Mode,
int Options>
76 inline typename internal::uniformscaling_times_affine_returntype<Scalar, Dim, Mode>::type
operator*(
78 typename internal::uniformscaling_times_affine_returntype<Scalar, Dim, Mode>::type res = t;
79 res.prescale(factor());
85 template <
typename Derived>
87 return other * m_factor;
90 template <
typename Derived,
int Dim>
103 template <
typename NewScalarType>
109 template <
typename OtherScalarType>
111 m_factor =
Scalar(other.factor());
119 const typename NumTraits<Scalar>::Real& prec = NumTraits<Scalar>::dummy_precision())
const {
120 return internal::isApprox(m_factor, other.factor(), prec);
132template <
typename Derived,
typename Scalar>
133EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived, Scalar, internal::scalar_product_op)
135 return matrix.derived() * s.factor();
141inline UniformScaling<double> Scaling(
double s) {
return UniformScaling<double>(s); }
143template <
typename RealScalar>
149template <
typename Scalar>
154template <
typename Scalar>
162template <
typename Derived>
164 return coeffs.asDiagonal();
168template <
typename Derived>
169inline typename DiagonalWrapper<const Derived>::PlainObject Scaling(
MatrixBase<Derived>&& coeffs) {
170 return typename DiagonalWrapper<const Derived>::PlainObject(std::move(coeffs.derived()));
183template <
typename Scalar>
188 res.
linear().diagonal().fill(factor());
190 res(Dim, Dim) =
Scalar(1);
Represents a diagonal matrix with its storage.
Definition DiagonalMatrix.h:233
Expression of a diagonal matrix.
Definition DiagonalMatrix.h:400
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:53
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:188
Common base class for compact rotation representations.
Definition RotationBase.h:33
RotationMatrixType toRotationMatrix() const
Definition RotationBase.h:48
Represents a translation transformation.
Definition Translation.h:34
@ Affine
Definition Constants.h:475
@ Isometry
Definition Constants.h:472