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>
Попытка установить плоскость нормальной к вектору 3D -точек, со следующим кодом < /p> [code]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>
[/code] Как я могу правильно объявить выходной вектор?