将 AlignedBox double 转换为 AlignedBox int
Cast AlignedBox double to AlignedBox int
我正在尝试使用 Eigen AlignedBox。具体来说,我试图通过使用 AlignedBox::cast
将一盒 double 转换为 int 一个
AlignedBox<double, 2> aabbox2d = AlignedBox<double, 2>(Vector2d(0.52342, 2.12315), Vector2d(3.87346, 4.72525));
aabbox2d.cast<AlignedBox<int, 2>>();
auto minx = aabbox2d.min().x();
无论如何,当执行到 min() 时,我得到一个断言:
Assertion failed: (((SizeAtCompileTime == Dynamic && (MaxSizeAtCompileTime==Dynamic || size<=MaxSizeAtCompileTime)) || SizeAtCompileTime == size) && size>=0), function resize, file /Users/max/Developer/Stage/Workspace/AutoTools3D/dep/libigl/external/eigen/Eigen/src/Core/PlainObjectBase.h, line 312.
请注意,这不同于将矩阵标量转换为另一个矩阵标量。隐含了一个对象。
据说我没有正确地进行演员表。有人知道正确的方法吗?
谢谢
查阅 AlignedBox::cast
的文档表明 cast
的模板参数定义为 template<typename NewScalarType>
,return 的值是 *this with scalar type casted to NewScalarType
。因此 cast
函数不会修改框的现有实例,但 return 是一个新实例。为了使您的示例工作,您需要存储 returned 实例,如下所示:
AlignedBox<double, 2> aabbox2d = AlignedBox<double, 2>(Vector2d(0.52342, 2.12315), Vector2d(3.87346, 4.72525));
AlignedBox<int, 2> casted = aabbox2d.cast<int>();
const int minx = casted.min().x();
你可以在这里玩这个:https://godbolt.org/z/ozE4rzebb
附带说明:与 documentation states 一样,在使用 Eigen
时应避免使用 auto
(不过在这种情况下可能不是问题)
我正在尝试使用 Eigen AlignedBox。具体来说,我试图通过使用 AlignedBox::cast
将一盒 double 转换为 int 一个AlignedBox<double, 2> aabbox2d = AlignedBox<double, 2>(Vector2d(0.52342, 2.12315), Vector2d(3.87346, 4.72525));
aabbox2d.cast<AlignedBox<int, 2>>();
auto minx = aabbox2d.min().x();
无论如何,当执行到 min() 时,我得到一个断言:
Assertion failed: (((SizeAtCompileTime == Dynamic && (MaxSizeAtCompileTime==Dynamic || size<=MaxSizeAtCompileTime)) || SizeAtCompileTime == size) && size>=0), function resize, file /Users/max/Developer/Stage/Workspace/AutoTools3D/dep/libigl/external/eigen/Eigen/src/Core/PlainObjectBase.h, line 312.
请注意,这不同于将矩阵标量转换为另一个矩阵标量。隐含了一个对象。 据说我没有正确地进行演员表。有人知道正确的方法吗? 谢谢
查阅 AlignedBox::cast
的文档表明 cast
的模板参数定义为 template<typename NewScalarType>
,return 的值是 *this with scalar type casted to NewScalarType
。因此 cast
函数不会修改框的现有实例,但 return 是一个新实例。为了使您的示例工作,您需要存储 returned 实例,如下所示:
AlignedBox<double, 2> aabbox2d = AlignedBox<double, 2>(Vector2d(0.52342, 2.12315), Vector2d(3.87346, 4.72525));
AlignedBox<int, 2> casted = aabbox2d.cast<int>();
const int minx = casted.min().x();
你可以在这里玩这个:https://godbolt.org/z/ozE4rzebb
附带说明:与 documentation states 一样,在使用 Eigen
时应避免使用 auto
(不过在这种情况下可能不是问题)