3D数学基础:正交矩阵
正交矩阵
若方阵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′r2r1′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′r3r1′r1′−r2′r2′r3r2′r2′
现在r1′,r2′,r3′r'_1,r'_2,r'_3r1′,r2′,r3′互相垂直了,它们是一组正交基。当然,它们不一定是单位向量。构造正交矩阵需要使用标准正交基,所以必须标准化这些向量。注意,如果一开始就进行标准化,就能避免所有除法了。
3D数学基础:正交矩阵相关推荐
- 3d数学基础:图形和游戏开发(第2版)_游戏引擎编程需要哪些基本数学知识?
现今,想要从头写一个功能强大的3D引擎,个人的力量恐怕难以胜任,即使能力足够,时间恐怕也不允许.在这个美好的开源时代,你只需具备修改各种引擎的能力便足以满足开发游戏的各项需求.现代游戏引擎的复杂级别已 ...
- 3D数学基础——矩阵、欧拉角和四元数的相互转换与比较
矩阵.欧拉角和四元数的相互转换与比较 相互转换 这里只展示最终的转换结果,推导过程请参考<3D数学基础:图形与游戏开发> 欧拉角转换到矩阵 欧拉角描述了一个旋转序列,分别计算出给每个旋转的 ...
- 《3D数学基础》1.8 混合积
理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. ...
- 《3D数学基础》系列视频 1.5 向量的夹角
理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. ...
- 《3D数学基础系列视频》1.1向量基本概念
今天带来的是系列最新视频,关于向量的内容 本次视频,主要讲解一下向量的基本概念. 国内网盘: http://pan.baidu.com/s/1c0ldm5U 苹果iTunes U注册代码: 1班:EF ...
- 3d数学基础学习总结
3d数学基础目录 第1章 简介 1.1 什么是3D数学 1.2 为什么选择本书 1.3 阅读本书需要的基础知识 1.4 概览 第2章 笛卡尔坐标系统 2.1 1D数学 2.2 2D笛卡尔数学 2.3 ...
- 《3D数学基础》实践1 向量类代码分析
理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. ...
- 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 ...
- 3D数学基础——Rotator类的C++实现
Rotator类的C++实现 FRotator类用来以欧拉角形式保存方位,使用pitch-yaw-roll进行约定,类的定义如下: #pragma once #include "FVecto ...
- 3D数学基础及坐标系统
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
最新文章
- C语言怎么保留n位小数并且四舍五入(附带两种简单方法)
- laravel 任务队列_Laravel 队列的简单使用例子
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
- arduino定时器控制舵机_Arduino学习经验(一)之解决舵机库和pwm输出冲突
- 安装tomcat和jdk 步骤
- iphone简单实例 (字体,弹出窗口) (实例)
- 多目标跟踪数据集 :mot16、mot17数据集介绍
- matlab的v带优化设计,基于遗传算法及MATLAB的V带传动优化设计
- 介绍数据库中的wal技术_简介事务ACID的实现机制
- SNMP TRAP实战
- 1976国际标准大气_Matlab
- Qt 5.9 mysql 驱动加载失败解决办法
- 遮罩层内容半透明解决
- 拉勾课程--性能优化记录
- 哪些工具可以让嵌入式开发事半功倍?详细盘点嵌入式工程师必备工具!
- 基于Python热点新闻关键词数据分析系统
- 三方协议服务器不填,毕业生三方协议可以不填么
- 简单好用的在线P图工具,一定记得收藏
- 第07篇 部署区块链浏览器(2)
- ue4材质节点怎么用_自学ue4材质,一大堆材质节点该如何学?
热门文章
- Maven assembly打包文件被覆盖问题
- 洛克菲勒给他儿子的信
- 考研线性代数深入理解
- 线性代数复习总结——基本概念
- 你画我猜 计算机题目,你画我猜题目带图答案 [你画我猜题目800例]
- android 百度地图大头针,百度地图的集成 ---自定义大头针和弹窗
- redhat Enterprise Linux Server release 7.2(Maipo) 安装redis-stat
- Java 导出exl表格 一个单元格内换行
- mysql y m d h_php时间问题?mysql数据库的时间格式(Y-M-D H:I:S) 在PHP页面想这样显示(Y-M-D) ('.$rows['ndate'].')...
- 实习期运维工程师一些日常问题的汇总