查看: 915|回复: 9

矩阵与向量相乘是什么意思?

[复制链接]

该用户从未签到

发表于 2014-5-5 19:38:09 | 显示全部楼层 |阅读模式
本帖最后由 oirrm 于 2014-5-14 14:06 编辑

#include <osg/Geometry>
#include <osg/MatrixTransform>
#include <iostream>

#pragma comment( lib, "osgd.lib")   
#pragma comment( lib, "osgViewerd.lib")   
#pragma comment( lib, "osgDBd.lib")   
#pragma comment( lib, "OpenThreadsd.lib")   
#pragma comment( lib, "osgUtild.lib")  
#pragma comment( lib, "osgGAd.lib")
#pragma comment( lib, "osgTextd.lib")
#pragma comment( lib, "osgSimd.lib")


osg::Vec3d postMultloca(double _mat[][4],osg::Vec3d v )
{
        osg::Vec3d::value_type d = 1.0f/(_mat[3][0]*v.x()+_mat[3][1]*v.y()+_mat[3][2]*v.z()+_mat[3][3]);
        return osg::Vec3d((_mat[0][0]*v.x() + _mat[0][1]*v.y() + _mat[0][2]*v.z() + _mat[0][3])*d,
                (_mat[1][0]*v.x() + _mat[1][1]*v.y() + _mat[1][2]*v.z() + _mat[1][3])*d,
                (_mat[2][0]*v.x() + _mat[2][1]*v.y() + _mat[2][2]*v.z() + _mat[2][3])*d);
}

int _tmain(int argc, _TCHAR* argv[])
{
        /*osg::Matrixd a;
        a.setTrans(4,0,1);*/
        osg::Vec3 b;
        b.set(1,2,3);
        double _mat[4][4] = {
                1,0,0,0,
                0,1,0,0,
                0,0,1,0,
                4,0,1,1
        };
        osg::Vec3 f = postMultloca(_mat,b);//f=0.125,0.25,0.375
        getchar();
        return 0;
}

该用户从未签到

发表于 2014-5-14 15:30:15 | 显示全部楼层
单从运算看 就是 用矩阵的行向里与向量点乘,组成一个新的向量。
矩阵怎样存贮位姿信息决定了该运算。
osg矩阵中 位姿信息是按行向量存贮的,即前三行是姿态信息,最后一行是位置信息。
所以这里运算的物理意义是 把一点变换到该矩阵所描述坐标系下的一点,
比如 可以把局部坐标变换到世界坐标系,也可以把世界坐标变换到局部坐标系下。

当然你也可以把位姿信息按列向量存储,但应当为此实现或选择有物理意义的运算。


该用户从未签到

发表于 2014-5-14 15:48:29 | 显示全部楼层
为啥这样算才有意义 你需要看看书了。三言两语也说不明白

该用户从未签到

 楼主| 发表于 2014-5-14 16:51:22 | 显示全部楼层
cenfer 发表于 2014-5-14 15:48
为啥这样算才有意义 你需要看看书了。三言两语也说不明白

  osg::Vec3d::value_type d = 1.0f/(_mat[3][0]*v.x()+_mat[3][1]*v.y()+_mat[3][2]*v.z()+_mat[3][3]);
看什么书?这个d是运算呀

该用户从未签到

发表于 2014-5-14 17:09:40 | 显示全部楼层
看你专业背景了 线性代数是基础
理论力学
机器人学
计算机图形学
计算机视觉       都可以接触到这些运算

该用户从未签到

发表于 2014-5-14 17:14:45 | 显示全部楼层
d 算是缩放系数吧,
规范化的齐次坐标W分量 一般等于1,
有的地方作为缩放系数,计算机视觉里经常这么用。
运动学里一般等于等于1。

该用户从未签到

发表于 2014-5-14 17:20:24 | 显示全部楼层
机器人学里相关内容最贴切!
建议啊

该用户从未签到

 楼主| 发表于 2014-5-14 22:52:46 | 显示全部楼层
cenfer 发表于 2014-5-14 17:20
机器人学里相关内容最贴切!
建议啊

xiexie
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表