间图形旋转变换矩阵推导及matlab验证,坐标系之间的旋转平移变换与对应变换矩阵的关系...

本文主要是介绍间图形旋转变换矩阵推导及matlab验证,坐标系之间的旋转平移变换与对应变换矩阵的关系...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

坐标系之间的旋转平移变换与对应变换矩阵的关系

2016年06月21日 10:06:38 Peng___Peng

阅读数:46648更多

在摄影测量和计算机视觉中,经常会遇到空间坐标系之间的坐标转换问题,而两个坐标系之间的变换关系一般可以通过一个旋转矩阵R和一个平移向量T(或C)描述。因此,理解清楚坐标系之间旋转平移的转换过程与对应变换矩阵之间的关系十分重要。这个变换过程虽然简单,但是其间涉及到的参数的表述存在多种形式,常常失之毫厘谬以千里,给我们的理解和使用带来诸多不便,例如,旋转角正方向的定义,不同坐标轴的旋转顺序对应的旋转矩阵的计算方法等等细节问题。本文将从基本的公式推导以及参数的准确描述出发,演算出我们常见的公式和结论。

一 仅存在旋转关系

为了便于表述和分析,我们从平面直角坐标系出发,坐标系O-XY和坐标系O'-X'Y'的关系如下图所示:

a4c26d1e5885305701be709a3d33442f.png

对于以上坐标关系,我们可以作如下描述:坐标系O-XY逆时针旋转theta(或顺时针旋转-theta)后与坐标系O'-X'Y'重合,或者坐标系O‘-X’Y‘顺时针旋转theta(或逆时针旋转-theta)后与坐标系O-XY重合。利用简单的之间三角形的余弦定理和正玄定理就可以得到以下公式(格式编辑不太熟,故以图像代替):

a4c26d1e5885305701be709a3d33442f.png

至此,我们可以将2D平面的旋转问题提升到3D空间的旋转问题,即分别绕三个轴作类似2D的旋转变换。需要额外注意的两个的问题是:1)当绕某根轴旋转时,其他两轴建立的2D坐标系应该保证旋转轴的正方向垂直纸面向外(与旋转角正方向定义相关);2)空间坐标系的旋转关系与各坐标轴的旋转顺序相关;假设两个空间坐标系O-XYZ与O'-X'Y'Z'之间只存在一个坐标轴的旋转,若坐标系O-XYZ绕自身的X轴逆时针转theta之后与坐标系O’-X'Y'Z'重合,空间中某点M在坐标系O-XYZ和O'-X'Y'Z'中的坐标描述存在以下关系:

a4c26d1e5885305701be709a3d33442f.png

同理,若坐标系O-XYZ绕自身的Y轴或Z轴逆时针转theta之后与坐标系O’-X'Y'Z'重合,则对应的坐标关系如下:

a4c26d1e5885305701be709a3d33442f.png

我们注意到,与X和Z轴不同,当绕Y轴逆时针旋转theta角时,对应的旋转矩阵中带负号元素变成了右上角的”sin“元素。原因在于根据上文提到的注意点1)建立的2D坐标系纵轴是X轴,横轴是Z轴,而坐标向量的坐标分量顺序是X,Y,Z,所以得到的X和Z的坐标关系需要调整一下顺序,即可得到上面显示的结果。

可以证明(具体证明过程可以查文献):对于存在任意旋转变换的两个空间坐标系O-XYZ和O'-X'Y'Z',可以通过依次绕三个坐标轴旋转一定角度实现两个坐标系对应坐标轴的重合。这里,我们假设坐标系O-XYZ依次绕自身X轴、Y轴、Z轴分别逆时针转theta1,theta2,theta3后可以与坐标系O'-X'Y'Z'重合,则空间中某点M在这两个坐标系中的描述关系如下:

a4c26d1e5885305701be709a3d33442f.png

类似地,三个坐标轴之间的其他旋转顺序组合可以进行类似的推导。

角度 无论正负,大小都能用。

这篇关于间图形旋转变换矩阵推导及matlab验证,坐标系之间的旋转平移变换与对应变换矩阵的关系...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/399474

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

poj 2187 凸包or旋转qia壳法

题意: 给n(50000)个点,求这些点与点之间距离最大的距离。 解析: 先求凸包然后暴力。 或者旋转卡壳大法。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <s

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点