Eigen模版使用方式

您所在的位置:网站首页 match函数使用 Eigen模版使用方式

Eigen模版使用方式

2023-01-29 06:05| 来源: 网络整理| 查看: 265

C++ 中的Eigen库现在已经被广泛使用,尤其是对于几何类问题。我们通常希望给Eigen扩展一些常规小功能,增加它的实用性。同时为了减少代码重复,使用C++模版来适配各类实用场合(例如同一函数既能使用float类型,也能够使用double类型)。

为了减少篇幅,在展开这些函数前,首先做出如下声明,放到eigen_types.hpp文件中:

#pragma once #include #include #include template using Matrix3 = Eigen::Matrix; template using Vector = Eigen::Matrix; template using Vector3 = Vector;

不推荐的常规写法

以一个三维向量的skew操作为例。需求如下:

我们希望函数能够同时适用于float和double类型;由于是三维空间,函数只允许输入三维变量,用户输入其它维度的变量编译器将报错;

于是代码可以如下:

#include "eigen_types.hpp" template inline Matrix3 Skew(const Eigen::Vector3& v) { Matrix3 mat = Matrix3::Zero(); mat(0, 1) = -v(2); mat(0, 2) = v(1); mat(1, 0) = v(2); mat(1, 2) = -v(0); mat(2, 0) = -v(1); mat(2, 1) = v(0); return mat; }

首先代码没有任何问题。的确可以满足上述所说的两个需求。但是如果你使用这段代码,你不难发现下面代码将无法通过编译:

Eigen::Vector3d vec(1, 3, 4); Eigen::Matrix3d Rot = Eigen::Matrix3d::Random(); // 下述用法会报错: Eigen::Matrix3d mat3 = Skew(Rot*vec); std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3