1、绕坐标轴旋转的公式:

(1)绕Z轴旋转

(2)绕X轴旋转

(3)绕Y轴旋转

     以上的矩阵变换公式为 : P' = P * mat;

 2、绕任意轴旋转的公式:

给定具有单位长的,则物体绕OA轴旋转变换的矩阵表示可确定如下:

3、绕任意轴旋转在Ogre中实现

Ogre::Matrix3 I = Ogre::Matrix3::IDENTITY;
Ogre::Matrix3 A = I, B = I, M = I;// (x,y,z) 是任意轴旋转到坐标原点的方向向量
A[0][0] = x * x;   A[0][1] = x * y;   A[0][2] = x * z;
A[1][0] = y * x;   A[1][1] = y * y;   A[1][2] = y * z;
A[2][0] = z * x;   A[2][1] = z * y;   A[2][2] = z * z;
B[0][0] =  0;      B[0][1] = -z;      B[0][2] = y;
B[1][0] =  z;      B[1][1] =  0;      B[1][2] = -x;
B[2][0] = -y;      B[2][1] =  x;      B[2][2] =  0;M = A + (I - A) * Ogre::Math::Cos(angle) + B * Ogre::Math::Sin(angle);
M = M.Transpose();// Trans is translate matrix
Ogre:: Matrix4 result = Trans.inverse() * Ogre::Matrix4(M) * Trans;

4、Ogre中实现注意的问题

上述公式中的矩阵式按行表示的,而Ogre中的矩阵是按列表示的,因此最终的公式需要变化一下,即

三维空间中的旋转变换相关推荐

  1. 空间坐标乘旋转矩阵_三维空间中的旋转变换与旋转矩阵

    在三维空间中,绕着X轴,Y轴,Z轴的旋转可以使用4*4的矩阵表示,而根据左右手坐标系的不同,又可分为左手坐标系下的三维旋转矩阵和右手坐标系下的三维旋转矩阵. 1 左手坐标系下的旋转矩阵 设旋转角为θ角 ...

  2. 2d的公式_旋转之二 - 三维空间中的旋转:罗德里格旋转公式

    接上篇: 复数与2D旋转 先来推导三维空间中的常用旋转公式. 三维空间中的旋转 如果 绕着空间中的一个单位向量 旋转,旋转我们采用右手坐标系: 可以把 分解成平行于 的向量 和 : 绕 旋转并不会造成 ...

  3. 三维空间中曲线绕任意轴旋转所得的旋转曲面求法

    三维空间中曲线绕任意轴旋转所得的旋转曲面求法 对2023汤家凤考研高等数学讲义225页2.三维空间直线旋转曲面的解释和推广 ©️ sylvanding

  4. [足式机器人]Part1 三维空间中的跳行Ch03——【Legged Robots that Balance 读书笔记】

    本文仅供学习使用 本文结合个人理解体会作者的思路,也从个人科研角度出发,部分翻译参考由:QQ群(2群legged robot that balance)提供,感谢他们为本文英文版翻译所做的贡献(但有些 ...

  5. 光滑曲线_微分几何笔记(4) —— 二维三维空间中曲线的曲率以及环绕数

     本篇文章我们从一般化的 空间回到我们生活的 空间,看看低维空间中的曲线有哪些性质,主要计算下在非弧长参数下的曲线,曲率挠率的一般表达式. 最后引入环绕数的概念,讲讲怎么数曲线转了多少圈. 4.1 ...

  6. 计算三维空间中直线和三角形的交点

    计算三维空间中直线和三角形的交点 前言 一.计算平面方程 1.1 平面不过原点 1.2 平面过原点 1.3 平面过 zzz 轴 1.4 平面为 yOzyOzyOz 平面 二.计算直线方程 三.计算交点 ...

  7. 标题使用java计算三维空间中两点的欧几里德距离

    标题使用java计算三维空间中两点的欧几里德距离 public static double euclideanDistance(double[] point1, double[] point2) {d ...

  8. 向量叉乘求三维空间中两直线(或线段)的交点

    1.2D空间的直线相交 在二维空间中,利用两个直线方程y = kx + b我们可以直接计算出交点,但是这种方法麻烦了些,并且套用到三维空间用公式就更麻烦了,接下来介绍的是如何利用向量叉乘求出直线交点. ...

  9. matlab在二维平面和三维空间中绘制圆形

    matlab在二维平面和三维空间中绘制圆形 二维平面绘制圆形 方法1: x = 10;y = 10;%圆心 r = 5; %半径 rectangle('Position',[x-r,y-r,2*r,2 ...

最新文章

  1. linux c 获取屏幕信息,Linux C 获取本机相关信息
  2. linux selinux 安全子系统简介
  3. php 计算月,PHP自然月的算法
  4. mac Git本地服务器配置
  5. android handler3--post源码解析
  6. 刚刚GitHub 收购 npm,旨在提升开源软件供应链安全
  7. 递归法:从n个小球中取m个小球(不放回),共有多少种取法?
  8. mysql查看数据库所占用的空间
  9. ORACLE SQL功能优化系列(一)
  10. 融跃品牌月:央视出手,各大卫视联合融跃助力金融学子成梦
  11. emmc/ufs, sd
  12. 【离散数学】群论知识点总结
  13. 唐诗分析 今析古言项目测试 -2
  14. Citrix联机插件配置管理器:找不到满足所有锁定要求的值
  15. 深富策略:市场热点不好把握 大概率窄幅震荡
  16. leetcode844 比较含退格的字符串(python)
  17. Ask, acquire, and attack: data-free UAP generation using class impressions
  18. 02- pandas 数据库 (数据库)
  19. 啦啦~~~记录江苏省C等级考试相关题目
  20. thumb指令和arm指令

热门文章

  1. 【遥感科学】遥感科学绪论
  2. 【剑指Offer】个人学习笔记_32_从上到下打印二叉树 IIIIII
  3. Spark Streaming 项目实战 (4) | 得到最近1小时广告点击量实时统计并写入到redis
  4. 【模电实验】日光灯电路及功率因数的提高
  5. 作为一个程序员,我们到底要学什么?
  6. elementUI的消息弹窗组件手动关闭和遮罩层关闭问题
  7. 什么是企业管理系统,应如何选择?
  8. 组织机构对象模型设计及实现
  9. AcWing 1068. 环形石子合并(环形区间DP)
  10. (二十四)优秀员工 - 2