旋转矩阵

前几天遇到一个旋转矩阵 谈一下它的构建

mat3 rotation = mat3(cross(up, -normal), up, -normal) ;//up 垂直于normal

为什么呢

涉及的一个概念是基变换 

假设空间一个向量 它的三个坐标轴xyz

旋转这个向量, 同时保持轴相对于它的位置不变得到的新轴 为子空间的基底 这个变换叫基变换 

就是一个向量(比如这个子空间的单位向量)乘以刚刚这个矩阵得到它在父空间的位置

cross(up, -normal), up, -normal这个就是新的三个轴

游戏引擎架构 叶劲松译 page151

时间: 2024-11-10 14:34:35

旋转矩阵的相关文章

三个欧拉角得到3x3旋转矩阵

三维坐标系中,已知三个欧拉角alpha,beta,gamma,分别为绕x轴旋转alpha角度,绕y轴旋转beta角度,绕z轴旋转gamma角度.则旋转矩阵Rotation的求法如下: Mat Rot=Mat::eye(3,3, CV_32FC1); Rot.at<float>(0, 0) = cos(beta) * cos(gamma); Rot.at<float>(0, 1) = cos(beta) * sin(gamma); Rot.at<float>(0, 2)

题目1164:旋转矩阵

题目描述: 任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0.90.180.270),如果不是,输出-1. 要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔.行之间用回车分隔,两个矩阵间用任意的回车分隔. 输入: 输入有多组数据. 每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵. 输出: 判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0.90.180.270),如果不是,输出-1. 如果旋转角度的结

OpenGL ES平移矩阵和旋转矩阵的左乘与右乘效果

OpenGL ES平移矩阵和旋转矩阵的左乘与右乘 在OpenGL .OpenGL ES中矩阵起着举足轻重的作用,而矩阵之间的左乘与右乘在效果上是不同的. 一.先平移后旋转 场景效果:人绕树旋转. 原理:以树为参考点,首先将人平移到树坐标系的指定位置(平移矩阵),然后旋转一定角度(旋转矩阵). 公式: pos = (matRotate * matTrans * vec4(pos,1.0)).xyz; 其中matRotate表示旋转矩阵: matTrans表示平移矩阵: pos表示三维世界的坐标.

(转)三维旋转:旋转矩阵,欧拉角,四元数

如何描述三维空间中刚体的旋转,是个有趣的问题.具体地说,就是刚体上的任意一个点P(x, y, z)围绕过原点的轴(i, j, k)旋转θ,求旋转后的点P\'(x\', y\', z\'). 旋转矩阵 旋转矩阵乘以点P的齐次坐标,得到旋转后的点P',因此旋转矩阵可以描述旋转, ?????x′y′z′1?????=R??????xyz1?????[x′y′z′1]=R?[xyz1] 绕x,y,或z轴旋转θ的矩阵为: Rx(θ)=???1000cosθsinθ0?sinθcosθ???Rx(θ)=[1

刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)

最近学习了一些关于三维空间旋转相关的知识,借此梳理一下备忘. 三维空间的旋转(3D Rotation)是一个很神奇的东东:如果对某个刚体在三维空间进行任意次的旋转,只要旋转中心保持不变,无论多少次的旋转都可以用绕三维空间中某一个轴的一次旋转来表示.表示三维空间的旋转有多种互相等价的方式,常见的有旋转矩阵.DCM.旋转向量.四元数.欧拉角等.本篇文章主要梳理一下这些表示方式及相互转换的方法. 1. 欧拉角(Euler Angle) 最直观的表示方式是绕刚体自身的X.Y.Z三个轴分别进行旋转某个角度

旋转矩阵(Rotate Matrix)的性质分析

学过矩阵理论或者线性代数的肯定知道正交矩阵(orthogonal matrix)是一个非常好的矩阵,为什么这么说?原因有一下几点: 正交矩阵每一列都是单位矩阵,并且两两相交.最简单的正交矩阵就是单位阵. 正交矩阵的逆(inverse)等于正交矩阵的转置(transpose).同时可以推论出正交矩阵的行列式的值肯定为正负1的. 正交矩阵满足很多矩阵性质,比如可以相似于对角矩阵等等. 以上可以看出正交矩阵是非常特殊的矩阵,而本文题目中的旋转矩阵就是一种正交矩阵!它完美的诠释了正交矩阵的所有特点. 先

Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵

我们现在准备好在代码中添加透视投影了.Android的Matrix类为它准备了两个方法------frustumM()和perspectiveM().不幸的是,frustumM()的个缺陷,它会影响某些类型的投影,而perspectiveM()只是从Android的ICS版本开始才被引入,在早期的Android版本里并没有这个方法.我们可以简单地支持ICS及其以上的版本,但是这样会丢掉很大一部分市场,一些用户依然运行早期的Android版本. 作为替代,我们可以创建我们自己的方法来实现投影矩阵.

根据相机旋转矩阵求解三个轴的旋转角/欧拉角

关键词:旋转矩阵 欧拉角 用途:相机位姿估计.无人机位姿估计.各种位姿估计 文章类型:概念.公式总结(本文不带推倒过程,若想了解公式是如何推出来的请自习搜索文献),C++函数展示 @Author:V_Shawn @Date:2016-11-04 @Lab: [email protected] ? ? 前言 相机标定后得出了旋转矩阵,而后应该怎么通过旋转矩阵表示相机姿态这一问题估计困扰过每一位研究这一问题的新同学,那么本文就给出我的一种做法,帮助大家少走歪路.当然有什么好的想法,或者更牛的办法也欢

三维坐标系的旋转矩阵

转载自:http://m.blog.csdn.net/blog/qiuqchen/21980731 为了方便自己记忆,记录一下三维坐标旋转矩阵的推导过程. 坐标的旋转变换在很多地方都会用到,比如机器视觉中的摄像机标定.图像处理中的图像旋转.游戏编程等. 任何维的旋转可以表述为向量与合适尺寸的方阵的乘积.最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述.坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ. 若以坐标系的三个坐标轴X.Y.Z分别作为旋转轴,则点实际上只在垂直坐

关于旋转矩阵欧拉角的理解和基础

描述四轴的姿态不是我们作为旁观者那样简单,而需要站在机器的角度去看,假设现在只能通过陀螺仪获取.那么怎么去获取飞行器的姿态了? 要了解当前的姿态,就需要两个坐标系,只有知道了两个坐标系的相对位置才能了解空间中真正的位置. 一个就是相对不变的 空间参考系S 和 跟随刚体一起运动的 附体参考系B.那么我们干才的姿态问题就变为了解刚体的取向问题了, 在这个问题中就涉及到两个坐标系之间的转换,这里的原理其实和我昨天提到的向量的旋转是类似的. 1.那么什么是空间坐标系S ,什么又是附体参考系B 了? 假如