7

私にとってこれはうまくいくはずので、うまくいかないという事実は、ほぼ間違いなく私が間違っていることを意味します。原則として Transform< double, 3, Affine > は Matrix< double, 4, 4 > と同じですが、それらをうまく一緒に使用することはできません。

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=' エラーが発生し、インプレース乗算演算子も同じ結果になり、Affine3d で Matrix4d を初期化しようとしても機能しません。Transform クラスを実際に便利な方法で使用する方法を知っている人はいますか?

ありがとう、カム

4

1 に答える 1

9

書くだけ:

m = m * rotMat.matrix();

Eigenがこの乗算を暗黙的に定義していないのが見落としなのか、それともライブラリの他のユースケースに干渉する可能性があるのか​​はわかりません。

于 2011-07-16T03:37:37.873 に答える