osg 矩阵相关

下面结果是一样的

    osg::Matrix mtrixx;
    mtrixx.makeRotate(90 / 180.f * osg::PI, osg::Vec3(1, 0, 0));

    osg::Matrix mtrixx12 = osg::Matrix::rotate(90 / 180.f * osg::PI, 1, 0, 0);

备注: rotate或makerotate第一个参数是弧度,可以用 弧度值=osg::inDegrees(角度值) 得到弧度值,也可以用公式 : 角度值 / 180.f * osg::PI 来计算弧度值


下面结果是一样

    osg::Matrix m1;
    m1.makeTranslate(osg::Vec3(18, 12,3));

    osg::Matrix m2= osg::Matrix::translate(osg::Vec3(18, 12, 3));

下面结果是一样

    osg::Matrix mtrixxttt;
    mtrixxttt.makeScale(osg::Vec3(2, 3,3));

    osg::Matrix mtrixxppp = osg::Matrix::scale(osg::Vec3(2, 3, 3));

之所以一样是因为下面,




下面两段代码是一样的,旋转90移动15,然后再转90然后再移动15

    osg::Matrix mtrixx;
    mtrixx.makeRotate(90 / 180.f * osg::PI, osg::Vec3(0, 1, 0));
    tr->setMatrix(mtrixx * tr->getMatrix());
    mtrixx.makeTranslate(osg::Vec3(15, 0, 0));
    tr->setMatrix(mtrixx * tr->getMatrix());
    mtrixx.makeRotate(90 / 180.f * osg::PI, osg::Vec3(0, 1, 0));
    tr->setMatrix(mtrixx * tr->getMatrix());
    mtrixx.makeTranslate(osg::Vec3(15, 0, 0));
    tr->setMatrix(mtrixx * tr->getMatrix());

    osg::Matrix mtrixx;
    tr->setMatrix(osg::Matrix::rotate(90 / 180.f * osg::PI, 0, 1, 0) * tr->getMatrix());
    tr->setMatrix(osg::Matrix::translate(osg::Vec3(15, 0, 0)) * tr->getMatrix());
    tr->setMatrix(osg::Matrix::rotate(90 / 180.f * osg::PI, 0, 1, 0) * tr->getMatrix());
    tr->setMatrix(osg::Matrix::translate(osg::Vec3(15, 0, 0)) * tr->getMatrix());



牛的局部坐标是这样的



下面做一个实验 ,先构建这个关系,然后只比较位置

然后在通过,下面值比较一下两者的区别

m_rpMtPosition->setMatrix(osg::Matrix::translate( osg::Vec3d(xx,xx,xx)));

m_rpPATposition->setPosition( osg::Vec3d(xx,xx,xx));



相关推荐
吱吱鼠叔2 小时前
MATLAB数据文件读写:2.矩阵数据读取
数据库·matlab·矩阵
￴ㅤ￴￴ㅤ9527超级帅2 小时前
LeetCode hot100---数组及矩阵专题(C++语言)
c++·leetcode·矩阵
herobrineAC1 天前
以矩阵的视角解多元一次方程组——矩阵消元
线性代数·矩阵
annesede2 天前
线性代数复习笔记
笔记·线性代数
正义的彬彬侠3 天前
单位向量的定义和举例说明
人工智能·线性代数·机器学习·矩阵
脑子不好真君3 天前
线性代数书中求解齐次线性方程组、非齐次线性方程组方法的特点和缺陷(附实例讲解)
人工智能·线性代数·算法
我有一些感想……4 天前
鸡兔同笼,但是线性代数
c++·笔记·矩阵
雷达学弱狗4 天前
波动方程(将麦克斯韦方程组求出只有E或H的表达式)
线性代数·算法·机器学习
大佟4 天前
矩阵学习过程中的一些思考
学习·线性代数·矩阵