看《机器人导论》中关于齐次变换的内容中,发现饶轴旋转的时候,分为两种情况。一、饶经过原点的轴进行旋转;二、饶不经过原点的旋转轴进行旋转。其实这两种情况下,采用旋转向量 和 旋转矩阵的相互转换的几种方法 这里面的方法都是可以求到旋转矩阵的,但是这两种旋转方式中的变换矩阵中的位置矩阵是不一样的。饶经过原点的轴进行旋转的变换矩阵,由于原点的位置没有发生改变,所以变换矩阵中的位置矩阵是零,而第二种方法中的由于旋转轴不在原点,由此变换矩阵中的位置矩阵不为零。

可以参考这里的描述[绕任意轴旋转],这里求出的是4*4的变换矩阵(https://www.cnblogs.com/graphics/archive/2012/08/10/2627458.html)

[绕任意轴旋转],这里求出的是3*3的变换矩阵(https://blog.csdn.net/chao56789/article/details/48138519)

function testtest()%% 起始位姿矩阵
T1= [  -0.0008 ,  -0.0005 ,   0.0004 ,   0.2113,0.0004,   -0.0009 ,  -0.0002  ,  0.0202,0.0004 ,  -0.0000 ,   0.0009 ,   1.2244,0  ,       0  ,       0  ,  0.0010];T= 1.0e+03 *T1;pi=3.1415926;
qq_1= - pi/6;p1=[0.8;0.6;0.5];
p2=[1;2;3];PP=p2-p1;PP=PP/sqrt( PP(1)^2 + PP(2)^2 + PP(3)^2 );
w_1=PP;          %每个关节转轴在全局坐标系中的方向
r_1=p2;         %旋量中一点在全局坐标系中的位置
c_1=[cross(r_1,w_1);w_1];
R_1 = C_poe(c_1,qq_1);R_3=zeros(3,3);
R_3(1,1)=PP(1)^2 *(1 - cos(qq_1)) + cos(qq_1);
R_3(1,2)=PP(1)*PP(2) *(1 - cos(qq_1)) - PP(3)*sin(qq_1);
R_3(1,3)=PP(1)*PP(3) *(1 - cos(qq_1)) +  PP(2)*sin(qq_1);
R_3(2,1)=PP(1)*PP(2) *(1 - cos(qq_1)) + PP(3)*sin(qq_1);
R_3(2,2)=PP(2)^2 *(1 - cos(qq_1)) + cos(qq_1);
R_3(2,3)=PP(2)*PP(3) *(1 - cos(qq_1)) - PP(1)*sin(qq_1);
R_3(3,1)=PP(1)*PP(3) *(1 - cos(qq_1)) -  PP(2)*sin(qq_1);
R_3(3,2)=PP(2)*PP(3) *(1 - cos(qq_1)) + PP(1)*sin(qq_1);
R_3(3,3)=PP(3)^2 *(1 - cos(qq_1)) + cos(qq_1);T_2_1=[eye(3),p2; 0 0 0 1];
T_2=[R_3,zeros(3,1);0 0 0 1];
T_2_2=[eye(3),-p2; 0 0 0 1];
T_2=T_2_1*T_2*T_2_2;
%% 基于旋量求得的变换矩阵
disp(R_1)
%% 基于《机器人导论》中介绍的方法求得的变换矩阵
disp(T_2)disp(R_1*T)
disp(T_2*T)%% 从下面结果可以看出两者是一致的0.8667    0.4397   -0.2356   -0.0394-0.4306    0.8979    0.0917    0.36000.2518    0.0220    0.9675   -0.19840         0         0    1.00000.8667    0.4397   -0.2356   -0.0394-0.4306    0.8979    0.0917    0.36000.2518    0.0220    0.9675   -0.19840         0         0    1.00001.0e+03 *-0.0006   -0.0008    0.0000   -0.09650.0007   -0.0006   -0.0003    0.03970.0002   -0.0001    0.0010    1.23810         0         0    0.00101.0e+03 *-0.0006   -0.0008    0.0000   -0.09650.0007   -0.0006   -0.0003    0.03970.0002   -0.0001    0.0010    1.23810         0         0    0.0010

补充:如果不乘T_2_1 和 T_2_2 那么理论上得到的结果是旋转轴并不是由 p1 p2确定的旋转轴,而是由 PP 和 坐标系原点确定的坐标轴。饶轴旋转的半径是 起点到旋转轴的直线距离。

求饶不经过原点的旋转轴的旋转矩阵相关推荐

  1. 旋转——绕原点二维旋转,绕任意点的二维旋转,三维基本旋转,绕任意轴的三维旋转

    1 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移.旋转.缩放.剪切这几种.本文以及接下来的几篇文章重点介绍一下关于旋转的变换,包括二维旋转变换. ...

  2. 绕某一点旋转矩阵,分析,

    . 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移.旋转.缩放.剪切这几种.本文以及接下来的几篇文章重点介绍一下关于旋转的变换,包括二维旋转变换. ...

  3. 旋转矩阵列向量的物理含义

    在很多slam代码中有看见用旋转矩阵(方向余弦矩阵)的第三列的列向量和目标物体的法向量,来判断是否是正面对着目标物体. 很久之前稍微推导了一下,最近刚好看见草稿 又简单证明了一下为什么可以用旋转矩阵( ...

  4. java 矩阵_(JAVA)计算机图形学与矩阵

    (JAVA)计算机图形学与矩阵 平移 旋转 变比 一)矩阵 1)矩阵的乘法运算 矩阵是计算机图形学的重要工具. 计算机图形学要常常用到 矩阵乘法(矩阵与矩阵相乘). 矩阵(Aij)m*n 与矩阵(Bi ...

  5. 三维重建:点绕特定轴旋转公式

    一些特定的三维平面运算可以直接在三维空间中进行,也可以在二维平面中运行,通过坐标变化转换到三维空间.旋转方式有中心旋转.轴旋转. 1. 罗德里格旋转公式  在三维旋转理论体系中,罗德里格旋转公式(根据 ...

  6. opengl 如何加阴影_OpenGL + Qt: 3 - 旋转动画和键盘操纵

    前三篇链接: OpenGL + Qt: 0 - 三角形绘制 OpenGL + Qt: 1 - 用下拉框选颜色 OpenGL + Qt: 2 - 走向3D,画正四面体 这一周笔者经历了漫长的洲际飞行和昏 ...

  7. 实验3 OpenGL几何变换

    转自:http://www.cnblogs.com/opengl/archive/2012/10/30/2747130.html 1.实验目的: 理解掌握一个OpenGL程序平移.旋转.缩放变换的方法 ...

  8. qt 旋转后的三维坐标_OpenGL + Qt: 3 - 旋转动画和键盘操纵

    前三篇链接: 这一周笔者经历了漫长的洲际飞行和昏天黑地的倒时差,所以本篇内容相对少一些,侧重 Qt 而不是 OpenGL.在上一篇中,我们绘制了一个正四面体,然而正四面体的一个特点是无论你从哪个角度看 ...

  9. 图形学实验三 图形几何变换

    实验三 图形几何变换 实验类型:设计型   实验学时:2实验要求:必修 一.实验目的 理解掌握OpenGL二维平移.旋转.缩放变换的方法. 二.实验内容 1阅读实验原理,运行示范实验代码,掌握Open ...

  10. GAMES101-现代计算机图形学学习笔记(作业01)

    GAMES101-现代计算机图形学学习笔记(作业01) Assignment 01 GAMES101-现代计算机图形学学习笔记(作业01) 作业 作业描述 需要补充的函数 思路 结果 原课程视频链接以 ...

最新文章

  1. UE5废墟破坏游戏场景创建学习教程
  2. Java、JavaEE、JavaSE、JavaME、JavaWEB之间有什么区别?
  3. jQuery工具和方法(二)
  4. oracle学习--循环语句
  5. Educational Codeforces Round 80 (Rated for Div. 2) C. Two Arrays 组合数|dp
  6. Boost 1.34.0 终于5.12发布了
  7. 【原创】FlashFXP_4.0.0.1510 值得研究
  8. 华为AppCube入选Forrester《中国低代码平台市场分析报告》
  9. 买房子还是不买房子,这是一个问题
  10. 基于JAVA+Spring+MYSQL的电影票预定系统
  11. EntityModelStudio系列教程
  12. Javascript必须掌握的js库
  13. 【Kaggle Quick, Draw!】涂鸦识别,AI与你同在
  14. 蓝牙耳机连接macbook无声音
  15. 【阿里网盘】深度学习与Pytorch视频教程
  16. 面试官:内存耗尽后Redis会发生什么 ?
  17. 华硕路由器远程代码执行漏洞通告
  18. can‘t connect to mysql server on localhost解决办法。 net start mysql——无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
  19. oracle 11g duplicate database基于备份复制数据库(六)
  20. sheetJS+input——实现vue导入excel文件,并判断文件内容是否正确——基础积累

热门文章

  1. python实现Content-Type:application/octet-stream
  2. 使用心得:[屏幕录制专家]与[Macromedia Captivate]的比拼
  3. CCR, CCD, CDA, EMR, PHR
  4. 【设计模式】-状态模式->APP抽奖活动(源码与类图解析)
  5. [转]IDEA 出现编译错误 Multi-catches are not supported a this language level 解决方法
  6. 逆転裁判5android,逆转裁判5安卓-phoenix wright: ace attorney dual destinies官方app2021免费...
  7. android 9.0打开文件管理器,安卓 通过intent调用系统文件管理器打开指定路径目录...
  8. wifi共享大师,去除弹窗广告。
  9. 割线法matlab实验报告,牛顿迭代割线法二分法算法实验报告.docx
  10. windows10桌面_Windows桌面美化记(一)这可能是你看过最详细的美化教程