Eigen,不同类型的逗号初始化器使用错误。

问题描述 投票:1回答:1

这就是我所要做的。

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.orgdoxgroup__TutorialAdvancedInitialization.html。

我很困惑。

c++ math matrix linear-algebra eigen
1个回答
1
投票

一个可能的问题。Eigen::Vector3d不是一个列向量吗? 作为一个变通方法,你可以试试文档中的RowVectorXd。

© www.soinside.com 2019 - 2024. All rights reserved.