Умножение типов преобразования и матрицы в собственных - PullRequest
7 голосов
/ 16 июля 2011

Для меня это должно просто работать , поэтому тот факт, что это не так, почти наверняка означает, что я ошибаюсь. Хотя в принципе Transform является тем же, что и Matrix , их нельзя разумно использовать вместе:

Affine3d rotMat( AngleAxisd( 45.0, ( Vector3d() << 0.0, 1.0, 0.0 ).finished() ) );
Matrix4d m;
m << 1.0, 0.0, 0.0, 6.0,
     0.0, 1.0, 0.0, 6.0,
     0.0, 0.0, 1.0, 6.0,
     0.0, 0.0, 0.0, 1.0;

m = m * rotMat;

В результате появляется ошибка 'no match for operator =' в последней строке, и оператор умножения на месте приводит к тому же самому, попытка инициализировать Matrix4d с Affine3d также не работает. Кто-нибудь знает, как на самом деле использовать класс Transform любым полезным способом?

Спасибо, Cam

1 Ответ

9 голосов
/ 16 июля 2011

Просто напишите:

m = m * rotMat.matrix();

Я не знаю, является ли упущением то, что Эйген не определяет это умножение неявно или оно может мешать другим сценариям использования библиотеки.

...