本征,错误使用不同类型的逗号初始值设定项
Eigen, wrong use of comma initializer with different types
这就是我想要做的:
Eigen::MatrixXd extended_points(4,4);
extended_points <<
Eigen::Vector3d(-0.8, -0.8, 1.0).normalized(), 1.0,
Eigen::Vector3d( 0.8, -0.8, 1.0).normalized(), 1.0,
Eigen::Vector3d( 0.8, 0.8, 1.0).normalized(), 1.0,
Eigen::Vector3d(-0.8, 0.8, 1.0).normalized(), 1.0;
这是一个在 Eigen 中失败的断言:
Eigen::CommaInitializer<MatrixType>& Eigen::CommaInitializer<MatrixType>::operator,(const Scalar&) [with XprType = Eigen::Matrix<double, -1, -1>; Eigen::CommaInitializer<MatrixType>::Scalar = double]: Assertion `m_currentBlockRows==1' failed.
Eigen 文档似乎表明这是可以的:
https://eigen.tuxfamily.org/dox/group__TutorialAdvancedInitialization.html
我很困惑。
一个可能的问题:Eigen::Vector3d 不是列向量吗?
作为解决方法,您可以按照文档中的说明尝试 RowVectorXd。
这就是我想要做的:
Eigen::MatrixXd extended_points(4,4);
extended_points <<
Eigen::Vector3d(-0.8, -0.8, 1.0).normalized(), 1.0,
Eigen::Vector3d( 0.8, -0.8, 1.0).normalized(), 1.0,
Eigen::Vector3d( 0.8, 0.8, 1.0).normalized(), 1.0,
Eigen::Vector3d(-0.8, 0.8, 1.0).normalized(), 1.0;
这是一个在 Eigen 中失败的断言:
Eigen::CommaInitializer<MatrixType>& Eigen::CommaInitializer<MatrixType>::operator,(const Scalar&) [with XprType = Eigen::Matrix<double, -1, -1>; Eigen::CommaInitializer<MatrixType>::Scalar = double]: Assertion `m_currentBlockRows==1' failed.
Eigen 文档似乎表明这是可以的: https://eigen.tuxfamily.org/dox/group__TutorialAdvancedInitialization.html
我很困惑。
一个可能的问题:Eigen::Vector3d 不是列向量吗? 作为解决方法,您可以按照文档中的说明尝试 RowVectorXd。