Озадачен "Вы смешанные матрицы разных размеров"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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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