正交矩阵

若方阵M是正交的,则当且仅当M与它的转置MTM^TMT的乘积等于单位矩阵。见下列公式:
M正交⟺MMT=IM正交\iff MM^T=IM正交⟺MMT=I

如何检测矩阵的正交性:
矩阵乘以它的逆等于单位矩阵:MM−1=IMM^{-1}=IMM−1=I

所以,如果一个矩阵是正交的,那么它的转置等于它的逆。即:M正交⟺M−1=MTM正交\iff M^{-1}=M^TM正交⟺M−1=MT

这是一条非常有用的性质,如果知道矩阵是正交的,那么可以避免计算矩阵的逆,这也大大减少计算量。

重要性质

如果一个矩阵是正交的,它必须满足下列条件:

  • 矩阵的每一行都是单位向量
  • 矩阵的所有行互相垂直

矩阵正交化

有时可能会遇到略微违反了正交性的矩阵。例如,可能从外部得到了坏数据,或者是浮点数运算的累积错误(称作“矩阵爬行”)。这些情况下,需要做矩阵正交化,得到一个正交矩阵,这个矩阵要尽可能的和原矩阵相同。
构造一组正交基向量(矩阵的行)的标准算法是施密特正交化。它的基本思想是,对每一行,从中减去它平行于已处理过的行的部分,最后得到垂直向量。
以3X3矩阵为例,用r1,r2,r3r_1,r_2,r_3r1​,r2​,r3​代表3X3阶矩阵的行。正交向量组r1′,r2′,r3′r'_1,r'_2,r'_3r1′​,r2′​,r3′​的计算:
r1′⟸r1r'_1 \impliedby r_1r1′​⟸r1​
r2′⟸r2−r2r1′r1′r1′r1′r'_2 \impliedby r_2- \dfrac {r_2r'_1}{r'_1r'_1} r'_1r2′​⟸r2​−r1′​r1′​r2​r1′​​r1′​
r3′⟸r3−r3r1′r1′r1′r1′−r3r2′r2′r2′r2′r'_3 \impliedby r_3- \dfrac {r_3r'_1}{r'_1r'_1} r'_1-\dfrac {r_3r'_2}{r'_2r'_2} r'_2r3′​⟸r3​−r1′​r1′​r3​r1′​​r1′​−r2′​r2′​r3​r2′​​r2′​

现在r1′,r2′,r3′r'_1,r'_2,r'_3r1′​,r2′​,r3′​互相垂直了,它们是一组正交基。当然,它们不一定是单位向量。构造正交矩阵需要使用标准正交基,所以必须标准化这些向量。注意,如果一开始就进行标准化,就能避免所有除法了。

3D数学基础:正交矩阵相关推荐

  1. 3d数学基础:图形和游戏开发(第2版)_游戏引擎编程需要哪些基本数学知识?

    现今,想要从头写一个功能强大的3D引擎,个人的力量恐怕难以胜任,即使能力足够,时间恐怕也不允许.在这个美好的开源时代,你只需具备修改各种引擎的能力便足以满足开发游戏的各项需求.现代游戏引擎的复杂级别已 ...

  2. 3D数学基础——矩阵、欧拉角和四元数的相互转换与比较

    矩阵.欧拉角和四元数的相互转换与比较 相互转换 这里只展示最终的转换结果,推导过程请参考<3D数学基础:图形与游戏开发> 欧拉角转换到矩阵 欧拉角描述了一个旋转序列,分别计算出给每个旋转的 ...

  3. 《3D数学基础》1.8 混合积

    理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. ...

  4. 《3D数学基础》系列视频 1.5 向量的夹角

    理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. ...

  5. 《3D数学基础系列视频》1.1向量基本概念

    今天带来的是系列最新视频,关于向量的内容 本次视频,主要讲解一下向量的基本概念. 国内网盘: http://pan.baidu.com/s/1c0ldm5U 苹果iTunes U注册代码: 1班:EF ...

  6. 3d数学基础学习总结

    3d数学基础目录 第1章 简介 1.1 什么是3D数学 1.2 为什么选择本书 1.3 阅读本书需要的基础知识 1.4 概览 第2章 笛卡尔坐标系统 2.1 1D数学 2.2 2D笛卡尔数学 2.3 ...

  7. 《3D数学基础》实践1 向量类代码分析

    理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. ...

  8. 3D Math Primer for Graphics and Game Development -- 图形与游戏开发(3D数学基础) (简介)...

    3D Math Primer for Graphics and Game Development //z 2014-04-28 13:18:20 L.247'38500 BG57IV3@XCL T20 ...

  9. 3D数学基础——Rotator类的C++实现

    Rotator类的C++实现 FRotator类用来以欧拉角形式保存方位,使用pitch-yaw-roll进行约定,类的定义如下: #pragma once #include "FVecto ...

  10. 3D数学基础及坐标系统

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

最新文章

  1. C语言怎么保留n位小数并且四舍五入(附带两种简单方法)
  2. laravel 任务队列_Laravel 队列的简单使用例子
  3. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
  4. arduino定时器控制舵机_Arduino学习经验(一)之解决舵机库和pwm输出冲突
  5. 安装tomcat和jdk 步骤
  6. iphone简单实例 (字体,弹出窗口) (实例)
  7. 多目标跟踪数据集 :mot16、mot17数据集介绍
  8. matlab的v带优化设计,基于遗传算法及MATLAB的V带传动优化设计
  9. 介绍数据库中的wal技术_简介事务ACID的实现机制
  10. SNMP TRAP实战
  11. 1976国际标准大气_Matlab
  12. Qt 5.9 mysql 驱动加载失败解决办法
  13. 遮罩层内容半透明解决
  14. 拉勾课程--性能优化记录
  15. 哪些工具可以让嵌入式开发事半功倍?详细盘点嵌入式工程师必备工具!
  16. 基于Python热点新闻关键词数据分析系统
  17. 三方协议服务器不填,毕业生三方协议可以不填么
  18. 简单好用的在线P图工具,一定记得收藏
  19. 第07篇 部署区块链浏览器(2)
  20. ue4材质节点怎么用_自学ue4材质,一大堆材质节点该如何学?

热门文章

  1. Maven assembly打包文件被覆盖问题
  2. 洛克菲勒给他儿子的信
  3. 考研线性代数深入理解
  4. 线性代数复习总结——基本概念
  5. 你画我猜 计算机题目,你画我猜题目带图答案 [你画我猜题目800例]
  6. android 百度地图大头针,百度地图的集成 ---自定义大头针和弹窗
  7. redhat Enterprise Linux Server release 7.2(Maipo) 安装redis-stat
  8. Java 导出exl表格 一个单元格内换行
  9. mysql y m d h_php时间问题?mysql数据库的时间格式(Y-M-D H:I:S) 在PHP页面想这样显示(Y-M-D) ('.$rows['ndate'].')...
  10. 实习期运维工程师一些日常问题的汇总