Eigen库介绍

Eigen is an open-source linear algebra library implemented in C++. It’s fast and well-suited for a
wide range of tasks, from heavy numerical computation, to simple vector arithmetic. The goal of
this tutorial is to introduce the features of Eigen required for implementing graphics applications,
to readers possessing basic knowledge of C++, linear algebra, and computer graphics.

Eigen库是适用C++的开源线性代数库,进行复杂的数值计算简化向量计算。教程的目的在于实现Eigen库的简单应用,需要我们的读者有C++基础,线性代数以及计算机图形学。

教程目标

After reading this tutorial, the reader should be able to

  1. Install Eigen on computers running Linux, Mac OS, and Windows.
  2. Create and initialize matrices and vectors of any size with Eigen in C++.
  3. Use Eigen for basic algebraic operations on matrices and vectors. The reader should be
    able to perform addition, multiplication, scalar multiplication, and matrix inversion and
    transposition.
  4. Use Eigen’s built-in functions to create 4x4 transformation matrices.

在学习完教程后,读者可以完成

  • 在不同环境下Eigen库的安装
  • 在C++中创建或初始化任意大小的矩阵和矢量
  • 使用Eigen库进行最基本的线性代数操作,加减乘除,标量乘,矩阵的逆和转置
  • 使用Eigen库的内置函数创建转置矩阵

安装Eigen库

$ cd ~
$ git clone https :// github .com/ eigenteam /eigen -git - mirror

验证是否安装成功

std::cout << " Eigen version : " << EIGEN_MAJOR_VERSION << "."<< EIGEN_MINOR_VERSION << std::endl ;

会在我们的终端中显示出来版本。

Eigen version : 4.99

遇到没有找到文件的情况要Fatal error :Eigen/core没有那个文件或目录

Eigen库的使用

    std::cout << " Eigen version : " << EIGEN_MAJOR_VERSION << "."<< EIGEN_MINOR_VERSION << std::endl ;Eigen::Matrix3f A;  // 建立一个3*3的矩阵,floatEigen::Matrix4d B;  // 建立一个4×4的矩阵,double

Keep in mind, though, that not all combinations of size and type are valid | Matrix2i works, but Matrix5s throws an error.That is not to say you can’t create 5x5 matrices of type short, or that you can only create square matrices.

我们要注意的事情是不是所有的大小的矩阵都可以使用这种方法。

error: ‘Matrix5s’ is not a member of ‘Eigen’Eigen::Matrix5s C;

我们可以使用另外一种方法构建:

// 5x5 matrix of type short
Matrix <short , 5, 5> M1;
// 20 x75 matrix of type float
Matrix <float , 20, 75> M2;

Eigen还允许我们构建未知大小的矩阵,比如 MatrixXf, MatrixXd

However, as the majority of graphics operations only require us to work with 3x3 and 4x4 single
or double precision matrices, we will restrict our attention in this tutorial to the datatypes
Matrix3f, Matrix4f, Matrix3d, and Matrix4d

我们经常使用的一般为3 ×\times× 3的旋转矩阵以及4 ×\times× 4的转换矩阵,所以我们的数据类型为Matrix3f, Matrix4f, Matrix3d, Matrix4d

矩阵的初始化

高级初始化方法

// Initialize A  (cumbersome,adj. 笨重的;累赘的;难处理的)
A << 1.0f, 0.0f, 0.0f,0.0f, 1.0f, 0.0f,0.0f, 0.0f, 1.0 f;
// Initialize B by accessing individual elements
for i = 1:4 {for j = 1:4 {B(j, i) = 0.0;}
}

如果我们的矩阵不是很大,可以使用第一种方法。

还有一种Vector4d :: Random () 随机生成数字。

转置和求逆和python里面的是一样的

// Transposition
cout << M1. transpose () << endl ;
// Inversion ( # include <Eigen /Dense > )
// Generates NaNs if the matrix is not invertible
cout << M1. inverse () << endl ;

Eigen库里面还有各种其他运算操作

cout << v1.dot (v2) << endl << endl ;
cout << v1. normalized () << endl << endl ;
cout << v1. cross (v2) << endl ;
// Convert a vector to and from homogenous coordinates
Vector3f s = Vector3f :: Random ();
Vector4f q = s. homogeneous ();
cout << (s == q. hnormalized ()) << endl;

更多信息解锁这里

Eigen库可以resize为其他大小的用法

        vertices_.resize(num_vertices_, nullptr);jacobians_.resize(num_vertices_);residual_.resize(residual_dimension_);//残差measurement_.resize(residual_dimension_);

子矩阵操作简介

https://www.cnblogs.com/yabin/p/6473654.html

肥鼠路易今天有在好好在办公室里喝水 在办公室里面学习,https://blog.csdn.net/weixin_44991673,欢迎点赞收藏关注三连666哦!
2021/04/27


今日背景音乐《世间美好与你环环相扣》

偏偏秉烛夜游
午夜星辰 似奔走之友
爱你每个结痂伤口
酿成的陈年烈酒
入喉尚算可口
怎么泪水 还偶尔失守
邀你细看心中缺口
裂缝中留存 温柔
此时已莺飞草长 爱的人正在路上
我知他风雨兼程 途经日暮不赏
穿越人海 只为与你相拥
此刻已皓月当空 爱的人手捧星光
我知他乘风破浪 去了黑暗一趟
感同身受 给你救赎热望
知道你不能 还要你感受
让星光加了一点彩虹
让樱花偷偷 吻你额头
让世间美好 与你环环相扣
此时已莺飞草长 爱的人正在路上
我知他风雨兼程 途经日暮不赏
穿越人海 只为与你相拥
此刻已皓月当空 爱的人手捧星光
我知他乘风破浪 去了黑暗一趟
感同身受 给你救赎热望
此时已莺飞草长 爱的人正在路上
我知他风雨兼程 途经日暮不赏
穿越人海 只为与你相拥
此刻已皓月当空 爱的人手捧星光
我知他乘风破浪 去了黑暗一趟
感同身受 给你救赎热望
知道你不能 还要你感受
让星光加了一点彩虹
当樱花开的纷纷扬扬
当世间美好 与你环环相扣

Day2 : SLAM Eigen库的入门学习教程(CS2240 Interactive Computer Graphics)相关推荐

  1. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

  2. Blender3.0动画制作入门学习教程 Learn Animation with Blender (2021)

    要求 下载并安装Blender.免费下载和免费用于任何目的. 描述 加入我的动画课程. 在本课程中,我将从头开始讲述在Blender中创建动画场景的过程. 从第一步到最终渲染.在这个课程中,我们将使用 ...

  3. 字字谏言!Python入门学习教程:关于Python不得不说的事儿

    作为程序员,你肯定遇到过这样的领导: "别人还没走,你先走了不合适吧." "不能确定功劳,总得有苦劳吧!你看别人9点谁走了?" 说到996,这很有可能是诱因之一 ...

  4. lua菜鸟教程_初学者必看:Lua入门学习教程

    Lua入门学习教程是本文要介绍的内容,主要是来对Lua入门的一个学习,Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言.不幸的是,网上很少有关于这个语言的在线教程.我主要通过阅读其源代码来了 ...

  5. MyBatis入门学习教程

    MyBatis入门学习教程 1. MyBatis 原生使用入门篇 1.1 什么是MyBatis? 1.2 原生使用安装方法 1.3 使用示例 1.3.1 创建一个学习项目 1.3.1 添加依赖 1.3 ...

  6. MAYA 2022基础入门学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.41 GB |时长:4.5小时 包含 ...

  7. 3dmax Vray建筑可视化入门学习教程

    面向初学者的3Ds Max Vray最佳Archviz可视化课程 从安装到最终图像的一切都将从头开始教授,不需要任何经验 大小解压后:3.25G 时长4h 6m 1280X720 MP4 语言:英语+ ...

  8. Blender 3.0基础入门学习教程 Introduction to Blender 3.0

    成为Blender通才,通过这个基于项目的循序渐进课程学习所有主题的基础知识. 你会学到什么 教程获取:Blender 3.0基础入门学习教程 Introduction to Blender 3.0- ...

  9. Maya游戏角色绑定入门学习教程 Game Character Rigging for Beginners in Maya

    准备好开始为游戏制作自己的角色动画了吗? 你会学到什么 了解Maya的界面 优化并准备好你的模型,为游戏做准备 了解关节以及如何使用它们来构建健壮的角色骨骼,以便在任何游戏引擎中制作动画 了解IK和F ...

最新文章

  1. 【原创·教程·连载】Microsoft SQL Server 2008 Reporting Services应用系列(一)安装篇...
  2. BZOJ 2084 [Poi2010]Antisymmetry(manacher)
  3. 九度OJ 1168:字符串的查找删除 (查找)
  4. GC分析中提到的根对象是什么
  5. css左右布局代码_如何使用CSS位置来布局网站(带有示例代码)
  6. 工作111:直接写url
  7. c语言一个数组后添加元素append,jQuery 追加元素、拼接元素的方法总结(append、html、insertBefore、before等)...
  8. 无人驾驶服务器适合部署在哪个位置,手机位置服务器在哪里设置的
  9. 【译】技能测试解决方案:Python中的数据科学(一)
  10. Vue2.0 $set()处理数据更新但视图不更新的问题(给对象添加属性必须用this.$set(this.data,”key”,value’))
  11. 一些杂七杂八的算法(打表,递推,随机选择算法)
  12. Codeforces Round #129 (Div. 1)E. Little Elephant and Strings
  13. MFC如何正常关闭一个程序
  14. 一位全减器逻辑电路图_全减器(全减器逻辑电路图)
  15. Spring Security整合KeyCloak保护Rest API
  16. ML(5)——神经网络1(神经元模型与激活函数)
  17. 1bit quantization
  18. 用python绘制熊猫图案_python – 熊猫:如何在彼此之上绘制年度数据
  19. ubuntu/linux安装Atom
  20. 我了解到的新知识之----遇到路由器DNS被篡改我该怎么办?

热门文章

  1. 酷讯被美团收购 技术还是干不过商业?
  2. html 层半透明,给页面加一层半透明div,禁用页面所有功能
  3. Mysql学习总结(55)——MySQL 语句大全再温习
  4. 战地5离线bot模式_战地2怎么和局域网玩家一同打电脑BOT
  5. JavaWeb-15 文件上传与下载
  6. esp32 SPIFFS的使用
  7. I2C、SPI、UART对比
  8. 一个语文老师的日记作文
  9. 大型互联网分布式系统架构技术要点
  10. 解决-judge0/ide 无法使用-monaco-editor编辑器问题