【计算机图形学】 Eigen 向量与矩阵定义

一、向量与矩阵的形式

1.

所有矩阵和向量都是Matrix模板类的对象

Matrix的模板参数是Matrix<typename Scalar,int RowAtCompileTime,int ColsAtCompileTime>  分别是标量类型 如(int、 float

),行数,列数

同时可以用typedef覆盖

如 typedef Matrix <float ,4,4> Matrix4f;

2.向量 是矩阵的一种特殊情况 一行或一列

typedef MAtrix <float ,3,3> Vector 3f;

3.行数列数可以未知 即动态定义

tydef Matrix<double,Dynamic,Dynamic>  MatrixXd;

二、定义向量和矩阵

Matrix3f a;    //3x3的矩阵 未初始化

MatrixXf b;   //动态大小的矩阵 当前为0x0 未分配系数

三、初始化矩阵,向量

1.

//矩阵

MatrixXd m(2,2);

m(0,0)=3;

m(1,0)=2.5;

m(0,1)=-1;

m(1,1)=m(1,0)+m(0,1);

//向量

VectorXd v(2);

v(0)=4;

v(1)=v(0)-1

2.逗号初始化

Matrix3f m;

m<<1,2,3,4,5,6,7,8,9;

四、调整大小

m.rows()  返回行数 

m.cols() 返回列数

m.size()返回系数的个数

m.resize()  调整动态大小

五。分配和调整大小

分配是使用将矩阵复制到另一个矩阵中的操作operator=

MatrixXf a(2,2);

MatrixXf b(3,3);

a=b;       //自动调整左侧矩阵的大小,使其与右侧的大小的矩阵大小匹配

 

 

六、矩阵的加减法

#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
Matrix2d a;
a<< 1,2,3,4;
MatrixXd b(2,2);
b<<2,3,1,4;
cout<<a+b;
cout<<a-b;
cout<< "Doing a+=b"
a+=b;
cout<< a;
Vector3d v(1,2,3);
Vector3d w(1,0,0);
cout<<-v+w-v;

七。点乘(内积)和叉乘(外积)

点积dot()             叉积cross()

参考一个点乘和叉乘 的算法和几何意义

 

Vectorsd v(1,2,3);
Vector3d w(0,1,2);
cout<<v.dot(w);
double dp=v.adjoint()*w;     //将内积自动转换为标量
cout<<dp;
cout<<v.cross(w);

点乘与叉乘的推导 几何意义

八。转置与共轭

转置:行列互换

共轭:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值