9 template <
typename Scalar>
11 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1> ReturnType;
12 return ReturnType::Constant(1,
value);
15 template <
typename Scalar>
16 Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>
matrix1x1(
17 const Scalar&
value) {
18 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> ReturnType;
19 return ReturnType::Constant(1, 1,
value);
22 template <
typename Scalar>
24 std::cout <<
mat << std::endl;
33 Eigen::MatrixXd
emptyMatrix() {
return Eigen::MatrixXd(0, 0); }
36 Eigen::MatrixXd
mat(
R, C);
37 for (
int r = 0;
r <
R; ++
r)
38 for (
int c = 0;
c < C; ++
c)
mat(
r,
c) =
r * C +
c;
40 if (
verbose) std::cout <<
"EigenMat = " <<
mat << std::endl;
45 Eigen::VectorXd
mat(
R);
48 if (
verbose) std::cout <<
"EigenMat = " <<
mat << std::endl;
54 for (
int r = 0;
r < 3; ++
r)
55 for (
int c = 0;
c < 3; ++
c)
mat(
r,
c) =
r * 3 +
c;
57 if (
verbose) std::cout <<
"EigenMat = " <<
mat << std::endl;
61 template <
typename MatType>
63 if (
verbose) std::cout <<
"EigenMat = " <<
M << std::endl;
64 return Eigen::MatrixXd(
M);
67 template <
typename MatrixDerived>
68 MatrixDerived
base(
const Eigen::MatrixBase<MatrixDerived>&
m) {
72 template <
typename MatrixDerived>
73 MatrixDerived
plain(
const Eigen::PlainObjectBase<MatrixDerived>&
m) {
77 template <
typename Scalar>
79 typedef Eigen::Matrix<Scalar, 6, 6> ReturnType;
80 return ReturnType::Constant(
value);
83 template <
typename Scalar>
84 Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
86 const Eigen::DenseIndex
cols) {
87 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
90 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1> Vector;
91 Eigen::Map<Vector>(
A.data(),
A.size()) =
92 Vector::LinSpaced(
A.size(), 1,
static_cast<Scalar
>(
A.size()));
93 std::cout <<
"Matrix values:\n" <<
A << std::endl;
97 template <
typename Scalar>
98 Eigen::Matrix<Scalar, 1, Eigen::Dynamic, Eigen::RowMajor>
100 typedef Eigen::Matrix<Scalar, 1, Eigen::Dynamic, Eigen::RowMajor>
102 RowMajorVector
A(size);
103 A.setLinSpaced(size, 1,
static_cast<Scalar
>(size));
104 std::cout <<
"Vector values: " <<
A.transpose() << std::endl;
108 template <
typename Scalar>
110 const Eigen::DenseIndex
rows,
const Eigen::DenseIndex
cols) {
111 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> ColMajorMatrix;
113 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1> Vector;
114 Eigen::Map<Vector>(
A.data(),
A.size()) =
115 Vector::LinSpaced(
A.size(), 1,
static_cast<Scalar
>(
A.size()));
116 std::cout <<
"Matrix values:\n" <<
A << std::endl;
120 template <
typename Scalar>
122 const Eigen::DenseIndex size) {
123 typedef Eigen::Matrix<Scalar, 1, Eigen::Dynamic> ColMajorVector;
124 ColMajorVector
A(size);
125 A.setLinSpaced(size, 1,
static_cast<Scalar
>(size));
126 std::cout <<
"Vector values: " <<
A.transpose() << std::endl;
130 template <
typename Matrix,
typename ReturnMatrix>
131 ReturnMatrix
copy(
const Eigen::MatrixBase<Matrix>&
mat) {
135 template <
typename Matrix>
141 using namespace Eigen;
146 typedef Eigen::Matrix<double, 6, 6> Matrix6;
147 eigenpy::enableEigenPySpecific<Matrix6>();
150 typedef Eigen::Matrix<double, 4, 6> Matrix46;
151 eigenpy::enableEigenPySpecific<Matrix46>();
153 Eigen::MatrixXd (*naturalsXX)(int, int, bool) =
naturals;
154 Eigen::VectorXd (*naturalsX)(int, bool) =
naturals;
155 Eigen::Matrix3d (*naturals33)(bool) =
naturals;
157 bp::def(
"vector1x1", vector1x1<double>);
158 bp::def(
"matrix1x1", matrix1x1<double>);
159 bp::def(
"matrix1x1", matrix1x1_input<double>);
160 bp::def(
"matrix1x1_int", matrix1x1_input<int>);
162 bp::def(
"naturals", naturalsXX);
163 bp::def(
"naturalsX", naturalsX);
164 bp::def(
"naturals33", naturals33);
166 bp::def(
"reflex", reflex<Eigen::MatrixXd>);
167 bp::def(
"reflexV", reflex<Eigen::VectorXd>);
168 bp::def(
"reflex33", reflex<Eigen::Matrix3d>);
169 bp::def(
"reflex3", reflex<Eigen::Vector3d>);
174 bp::def(
"base", base<VectorXd>);
175 bp::def(
"base", base<MatrixXd>);
177 bp::def(
"plain", plain<VectorXd>);
178 bp::def(
"plain", plain<MatrixXd>);
180 bp::def(
"matrix6", matrix6<double>);
182 bp::def(
"generateRowMajorMatrix", generateRowMajorMatrix<double>);
183 bp::def(
"generateRowMajorVector", generateRowMajorVector<double>);
185 bp::def(
"generateColMajorMatrix", generateColMajorMatrix<double>);
186 bp::def(
"generateColMajorVector", generateColMajorVector<double>);
188 typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
190 bp::def(
"asRowMajorFromColMajorMatrix",
191 copy<Eigen::MatrixXd, RowMajorMatrixXd>);
192 bp::def(
"asRowMajorFromColMajorVector",
193 copy<Eigen::VectorXd, Eigen::RowVectorXd>);
194 bp::def(
"asRowMajorFromRowMajorMatrix",
195 copy<RowMajorMatrixXd, RowMajorMatrixXd>);
196 bp::def(
"asRowMajorFromRowMajorVector",
197 copy<Eigen::RowVectorXd, Eigen::RowVectorXd>);
199 bp::def(
"copyBoolToBool",
copy_same<Eigen::Matrix<bool, -1, -1> >);
201 bp::def(
"copyInt8ToInt8",
copy_same<Eigen::Matrix<int8_t, -1, -1> >);
202 bp::def(
"copyCharToChar",
copy_same<Eigen::Matrix<char, -1, -1> >);
203 bp::def(
"copyUCharToUChar",
copy_same<Eigen::Matrix<unsigned char, -1, -1> >);
205 bp::def(
"copyInt16ToInt16",
copy_same<Eigen::Matrix<int16_t, -1, -1> >);
206 bp::def(
"copyUInt16ToUInt16",
copy_same<Eigen::Matrix<uint16_t, -1, -1> >);
208 bp::def(
"copyInt32ToInt32",
copy_same<Eigen::Matrix<int32_t, -1, -1> >);
209 bp::def(
"copyUInt32ToUInt32",
copy_same<Eigen::Matrix<uint32_t, -1, -1> >);
211 bp::def(
"copyInt64ToInt64",
copy_same<Eigen::Matrix<int64_t, -1, -1> >);
212 bp::def(
"copyUInt64ToUInt64",
copy_same<Eigen::Matrix<uint64_t, -1, -1> >);
214 bp::def(
"copyLongToLong",
copy_same<Eigen::Matrix<long, -1, -1> >);
215 bp::def(
"copyULongToULong",
copy_same<Eigen::Matrix<unsigned long, -1, -1> >);
217 bp::def(
"copyLongLongToLongLong",
218 copy_same<Eigen::Matrix<long long, -1, -1> >);
219 bp::def(
"copyULongLongToULongLong",
220 copy_same<Eigen::Matrix<unsigned long long, -1, -1> >);
222 bp::def(
"copyFloatToFloat",
copy_same<Eigen::Matrix<float, -1, -1> >);
223 bp::def(
"copyDoubleToDouble",
copy_same<Eigen::Matrix<double, -1, -1> >);
224 bp::def(
"copyLongDoubleToLongDouble",
225 copy_same<Eigen::Matrix<long double, -1, -1> >);
227 bp::def(
"copyCFloatToCFloat",
228 copy_same<Eigen::Matrix<std::complex<float>, -1, -1> >);
229 bp::def(
"copyCDoubleToCDouble",
230 copy_same<Eigen::Matrix<std::complex<double>, -1, -1> >);
231 bp::def(
"copyCLongDoubleToCLongDouble",
232 copy_same<Eigen::Matrix<std::complex<long double>, -1, -1> >);