Озадачен "Вы смешанные матрицы разных размеров"C++

Программы на C++. Форум разработчиков
Anonymous
Озадачен "Вы смешанные матрицы разных размеров"

Сообщение Anonymous »

Попытка установить плоскость нормальной к вектору 3D -точек,
со следующим кодом < /p>

Код: Выделить всё

typedef Eigen::MatrixX3f mat3f;
typedef Eigen::Map map3f;
int npts = points.size();
map3f matA((float*)points.data(), npts, 3);
Eigen::MatrixX3f matB = Eigen::MatrixX3f::Constant(npts, 3, -1.f);
Eigen::Vector3f normal = matA.colPivHouseholderQr().solve(matB);
< /code>
Я получаю эту ошибку компиляции для последней строки: < /p>

static_assert не удастся: 'you_mixed_matrices_of_different_sizes' < /p>  < /blockquote>
Очевидно, что компилятор (MSVCC 17) считает, что выход Solve () не совместим с Vector3f. < /p>
Однако его шаблон Кажется, указывает, что он ищет матрицу такого типа; Вот последний: < /p>
>       D:\opensource\vcpkg\installed\x64-windows\include\Eigen\src\Core\PlainObjectBase.h(797,17):
1>        see reference to function template instantiation 'void Eigen::internal::call_assignment_no_alias(Dst &,const Src &,const Func &)' being compiled
1>        with
1>        [
1>            Derived=Eigen::Matrix,
1>            Dst=Eigen::Matrix,
1>            Src=Eigen::Solve,
1>            Func=Eigen::internal::assign_op
1>

Как я могу правильно объявить выходной вектор?

Подробнее здесь: https://stackoverflow.com/questions/794 ... rent-sizes

Вернуться в «C++»