VCG Eigen库学习记录

    线性代数的eigen库最近的稳定版本的一个副本(相当于就是借用第三方库了),VCGLib中的高级矩阵操作都是基于这个库的。

    用vs编译使用Eigen非常方便。

#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
    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);
    std::cout << m << std::endl;
}

    很方便的就是,这个类重载了cout,这样直接 cout << m << endl;就行了,但是对大型矩阵输出对不齐,不方便查看(想看就输出成txt看吧)。如果是小矩阵比如3*3,或者4*4或者这样大小的,可以直接用Matrix4f类似的可以类推。

    除了设置矩阵,还可以用向量的形式初始化,可以使静态的也可以是动态的。

    VectorXd,这样一个维度是1的其实也是矩阵,不过就是起了新的好理解的名字。比如:

    typedef Matrix<double, Dynamic, Dynamic> MatrixXd;

    typedef Matrix<int, Dynamic, 1> VectorXi;

    可以使用Resize()函数重写

Matrix4d m;
m.resize(4,4); // no operation

    如果维度没有变,是没有操作的,如果维度变了,这个函数是dextructive的,原来的参数可能会变,如果想保留原来的,使用conservativeResize()方法。

    https://blog.csdn.net/hanss2/article/details/78822955

     具体矩阵的性质的使用和计算,这兄弟总结挺好的= =。

猜你喜欢

转载自blog.csdn.net/Bob__yuan/article/details/81674857
VCG
今日推荐