This forum has been archived. All content is frozen. Please use KDE Discuss instead.

AngleAxis constructor regression [3.2.10] => [3.3.0]

Tags: None
(comma "," separated)
davidarmand
Registered Member
Posts
7
Karma
0
Hi everybody,

I have compilation error with this code on 3.3.0 :
Code: Select all
Eigen::Isometry3d l_isometry;
l_isometry.setIdentity();
Eigen::AngleAxisd l_angleAxis(l_isometry.rotation());


It was working on 3.2.10.
Is there a new way to do this ?
Thanks a lot.
David
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
This works for me (using clang, gcc, or icc):
Code: Select all
#include <Eigen/Dense>
#include <iostream>
int main()
{
  Eigen::Isometry3d l_isometry;
  l_isometry.setIdentity();
  Eigen::AngleAxisd l_angleAxis(l_isometry.rotation());
  std::cout << l_angleAxis.angle() << " ; " << l_angleAxis.axis().transpose() << "\n";
}
davidarmand
Registered Member
Posts
7
Karma
0
Thanks a lot for the quick answer.
Sorry but I didn't specified that we are working on Microsoft Visual Studio 2013.
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
oh, so that's a visual issue. Could you past the complete error message, thanks.
davidarmand
Registered Member
Posts
7
Karma
0
Below the error in Visual :

d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C2993: 'bool (traits<Derived>::match<Derived>::ScalarTypeMatch)' : type non conforme pour le paramètre de modèle sans type 'Condition'
1> with
1> [
1> Derived=Eigen::Ref<const Eigen::Matrix<double,-1,1,0,4096,1>,0,Eigen::InnerStride<1>>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/StableNorm.h(186) : voir la référence à l'instanciation de la classe modèle 'Eigen::Ref<const Eigen::Matrix<double,-1,1,0,4096,1>,0,Eigen::InnerStride<1>>' en cours de compilation
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/StableNorm.h(158) : lors de la compilation de la fonction membre 'double Eigen::MatrixBase<Derived>::stableNorm(void) const' de la classe modèle
1> with
1> [
1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(176) : voir la référence à l'instanciation de la fonction modèle 'double Eigen::MatrixBase<Derived>::stableNorm(void) const' en cours de compilation
1> with
1> [
1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/MapBase.h(39) : voir la référence à l'instanciation de la classe modèle 'Eigen::MatrixBase<Derived>' en cours de compilation
1> with
1> [
1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Block.h(331) : voir la référence à l'instanciation de la classe modèle 'Eigen::MapBase<Eigen::Block<const Derived,3,1,false>,0>' en cours de compilation
1> with
1> [
1> Derived=Eigen::Matrix<double,4,1,0,4,1>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Block.h(156) : voir la référence à l'instanciation de la classe modèle 'Eigen::internal::BlockImpl_dense<XprType,3,1,false,true>' en cours de compilation
1> with
1> [
1> XprType=Eigen::Matrix<double,4,1,0,4,1>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Block.h(105) : voir la référence à l'instanciation de la classe modèle 'Eigen::BlockImpl<XprType,3,1,false,Eigen::internal::traits<Eigen::Matrix<double,4,1,0,4,1>>::StorageKind>' en cours de compilation
1> with
1> [
1> XprType=Eigen::Matrix<double,4,1,0,4,1>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/VectorBlock.h(60) : voir la référence à l'instanciation de la classe modèle 'Eigen::Block<const Derived,3,1,false>' en cours de compilation
1> with
1> [
1> Derived=Eigen::Matrix<double,4,1,0,4,1>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(174) : voir la référence à l'instanciation de la classe modèle 'Eigen::VectorBlock<const Eigen::Matrix<double,4,1,0,4,1>,3>' en cours de compilation
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(201) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Eigen::Quaternion<double,0>>(const Eigen::QuaternionBase<Eigen::Quaternion<double,0>> &)' en cours de compilation
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(201) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Eigen::Quaternion<double,0>>(const Eigen::QuaternionBase<Eigen::Quaternion<double,0>> &)' en cours de compilation
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(88) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation
1> with
1> [
1> Derived=Eigen::Matrix<double,3,3,0,3,3>
1> ]
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Geometry/AngleAxis.h(88) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double> &Eigen::AngleAxis<double>::operator =<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation
1> with
1> [
1> Derived=Eigen::Matrix<double,3,3,0,3,3>
1> ]
1> D:\Dev\Sgv3dStation\Sgv3dStation\trunk\Sources\Projects\Sgv3dStation\Sources\App\main.cpp(7) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double>::AngleAxis<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation
1> with
1> [
1> Derived=Eigen::Matrix<double,3,3,0,3,3>
1> ]
1> D:\Dev\Sgv3dStation\Sgv3dStation\trunk\Sources\Projects\Sgv3dStation\Sources\App\main.cpp(7) : voir la référence à l'instanciation de la fonction modèle 'Eigen::AngleAxis<double>::AngleAxis<Derived>(const Eigen::MatrixBase<Derived> &)' en cours de compilation
1> with
1> [
1> Derived=Eigen::Matrix<double,3,3,0,3,3>
1> ]
1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C2039: 'type' : n'est pas membre de 'Eigen::internal::enable_if'
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/util/Meta.h(162) : voir la déclaration de 'Eigen::internal::enable_if'
1> d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/util/Meta.h(162) : voir la déclaration de 'Eigen::internal::enable_if'
1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C2143: erreur de syntaxe : absence de ',' avant '*'
1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/Ref.h(242): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\dev\projectxyz\externallibs\trunk\eigen\3.3.0\eigen\src/Core/StableNorm.h(186): error C2440: '<function-style-cast>' : impossible de convertir de 'const Eigen::VectorBlock<const Derived,-1>' en 'SegmentWrapper'
1> with
1> [
1> Derived=Eigen::Block<const Eigen::Matrix<double,4,1,0,4,1>,3,1,false>
1> ]
1> Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
davidarmand
Registered Member
Posts
7
Karma
0
Do you think that I need to register this compilation bug in the bug tracking ?
Thanks !
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
I cannot reproduce even with MSVC 2013 using the self-contained example I posted above. Please provide a self-contained exemple so that we can reproduce and perhaps find a workaround.
davidarmand
Registered Member
Posts
7
Karma
0
Hi,

I just create a C++ console application in Visual 2013 ( release 12.0.30501.00 Update 2) and complete as :
Code: Select all
#include "stdafx.h"
#include <xxxxx\Eigen\3.3.1\Eigen\Dense>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
  Eigen::Isometry3d l_isometry;
  l_isometry.setIdentity();
  Eigen::AngleAxisd l_angleAxis(l_isometry.rotation());
  std::cout << l_angleAxis.angle() << " ; " << l_angleAxis.axis().transpose() << "\n";
}


Thanks for the help.
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
I guess the problem comes from what you have in your stdafx header. What if you remove it?
davidarmand
Registered Member
Posts
7
Karma
0
Same problem if I remove stdafx header.
I join the zip project to a wetransfer : https://we.tl/VvTaaUyosE
Thanks.
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
Still works fine for me. Using MSVC 2013 update 5, Eigen 3.3.1.
davidarmand
Registered Member
Posts
7
Karma
0
With the update 5 it works fine !!
Thanks a lot for the help !!!


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], Sogou [Bot]