行式叉积特征值
Row wise cross product Eigen
我正在尝试在 Eigen::MatrixXd dir
的每一行与 Eigen::MatrixXd v0v2
的相应行之间进行叉积,并将结果保存在另一个 Eigen::MatrixXd pvec
中。
pvec 的初始化:Eigen::MatrixXd pvec(v0v2.rows(), 3);
我试过这个肮脏的方法:
for(size_t i = 0; i < v0v2.rows(); i++){
pvec.row(i) = dir.row(i).cross(v0v2.row(i));
}
我收到此错误:THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE
我认为这是因为 column-major/row-major 问题所以我添加了 .transpose()
但这也无济于事。
我总是可以像这样明智地做一个更肮脏的个人交叉产品元素:
Vec3 crossProduct(const Vec3<T> &v) const
{ return Vec3<T>(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x); }
但我想做一个 Eigen 方法。
任何帮助都会很棒!
.cross
的参数必须在编译时已知其大小为 3。
尝试将矩阵声明为 Eigen::Matrix<double, Eigen::Dynamic, 3> dir(N, 3);
,等等
我正在尝试在 Eigen::MatrixXd dir
的每一行与 Eigen::MatrixXd v0v2
的相应行之间进行叉积,并将结果保存在另一个 Eigen::MatrixXd pvec
中。
pvec 的初始化:Eigen::MatrixXd pvec(v0v2.rows(), 3);
我试过这个肮脏的方法:
for(size_t i = 0; i < v0v2.rows(); i++){
pvec.row(i) = dir.row(i).cross(v0v2.row(i));
}
我收到此错误:THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE
我认为这是因为 column-major/row-major 问题所以我添加了 .transpose()
但这也无济于事。
我总是可以像这样明智地做一个更肮脏的个人交叉产品元素:
Vec3 crossProduct(const Vec3<T> &v) const
{ return Vec3<T>(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x); }
但我想做一个 Eigen 方法。
任何帮助都会很棒!
.cross
的参数必须在编译时已知其大小为 3。
尝试将矩阵声明为 Eigen::Matrix<double, Eigen::Dynamic, 3> dir(N, 3);
,等等