2011-07-15 10 views
6

Para mí esto debería solo trabajar, así que el hecho de que no lo haga, casi seguro significa que yo soy el que está mal. A pesar de que, en principio, una transformación < doble, 3, afín> es lo mismo que una matriz < doble, 4, 4>, que no se puede utilizar junto con sensatez:Multiplicar los tipos de transformación y matriz en Eigen

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; 

resultados en un 'no puede competir con el operador = 'error en la última línea, y el operador de multiplicación en el lugar resulta en el mismo, tratando de inicializar un Matrix4d con Affine3d tampoco funciona. ¿Alguien sabe cómo usar realmente la clase Transform de alguna manera útil?

Gracias, Cam

Respuesta

8

Sólo tiene que escribir:

m = m * rotMat.matrix(); 

No sé si se trata de un descuido que Eigen no define esta multiplicación implícita o si podría interferir con otros casos de uso de la biblioteca

+0

¡Gracias! Me salvaste muchas maldiciones ... – cmannett85

Cuestiones relacionadas