visual studio 2019配置eigen和例子

今天需要用到一些矩阵运算的函数,本来想自己写,但是实在是麻烦,而且有些难度,于是搜寻了一下发现了eigen这个c/c++环境下的矩阵运算的库

记录一下配置过程

eigen是以源代码的形式发布的
在官方网址https://gitlab.com/libeigen/eigen/-/releases下载源代码
任选一个压缩包下载即可
visual studio 2019配置eigen和例子_第1张图片

解压后进入文件夹中,复制整个Eigen文件夹

visual studio 2019配置eigen和例子_第2张图片
放置到vs2019的以下目录(或其他版本的相应目录下)
在这里插入图片描述
整个复制进去即可,复制完成后include文件夹如下所示
visual studio 2019配置eigen和例子_第3张图片

说明一下这样等于是我们是用这个库的同时直接编译了源代码
虽然有点奇怪,但是这是官方维基推荐的方式,如果觉得变扭也可以手动将源代码编译成dll之后加入库依赖中


以下是一些使用eigen的例子

	//用MatrixXd类创建一个2*2矩阵 并依次指定元素
	MatrixXd m1(2, 2);
	m1(0, 0) = 2;
	m1(1, 0) = 0;
	m1(0, 1) = 0;
	m1(1, 1) = 2;

	//使用Matrix3d创建一个3*3的方阵,用重载过的<<运算符来初始化它
	Matrix3d m3;
	m3 <<1, 2, 3,
		4, 5, 6,
		7, 8, 9;

	//MatrixXd::Random创建一个3*3的随机矩阵,每个矩阵元素取-1~1的随机值
	MatrixXd m2 = MatrixXd::Random(3, 3);

	//MatrixXd::Random创建一个3*3的常量矩阵,每个矩阵元素都是1
	MatrixXd m4 = MatrixXd::Constant(3, 3,1);


	//用Matrix模板创建一个元素类型为float,4*4的矩阵
	Matrix<float, 4, 4> matrix4f;


	//返回矩阵的行列数
	m1.rows();
	m1.cols();
	
	//两个矩阵的加减乘运算,直接使用重载过的+-*号即可
	Matrix2d a;
	a << 1, 2,
		3, 4;
	MatrixXd b(2, 2);
	b << 2, 3,
		1, 4;
	std::cout << "a + b =\n" << a + b << std::endl;
	std::cout << "a - b =\n" << a - b << std::endl;
	std::cout << "a * b =\n" << a * b << std::endl;

	//分别是返回转置矩阵,共轭矩阵,伴随矩阵,带有inplace后缀的方法不返回值,直接变换该矩阵
	m1.transpose();
	m1.conjugate();
	m1.adjoint();

	m1.transposeInPlace();
	m1.adjointInPlace();


	//创建一个三维向量
	Vector3d v1(1, 2, 3);

	//矩阵右乘向量
	cout << m2*v1 << endl;
	
	//创建两个三维向量并进行点积和叉积
	Vector3d v(1, 2, 3);
	Vector3d w(0, 1, 2);

	v.dot(w);
	v.cross(w);

你可能感兴趣的:(opengl,visual,studio,eigen)