[Unity] 3D数学基础 - 坐标系、向量、矩阵
一、坐标系
模型坐标系:
物体自身的坐标系,只描述自身各个顶点的情况。
在3D模型坐标系中,z方向前向如果是负值,我们称为右手坐标系,如果是正值,我们称为左手坐标系。在3DMax中使用了右手坐标系,Unity使用了左手坐标系。
世界坐标系:
系统的绝对坐标系,在没有建立用户坐标系之前画面上所有点的坐标都是以该坐标系的原点来确定各自的位置的。
摄像机坐标系:
摄像机坐标系是和观察者密切相关的坐标系。摄像机坐标系和屏幕坐标系相似,差别在于摄像机坐标系处于3D空间中而屏幕坐标系在2D平面里。摄像机坐标系能被看做是一种特殊的“物体”坐标系,该“物体”坐标系就定义在摄像机的屏幕可视区域。摄像机坐标系中,摄像机在原点,x轴向右,z轴向前(朝向屏幕内或摄像机方向),y轴向上(不是世界的上方而是摄像机本身的上方)。
屏幕坐标系:
屏幕投影过后的坐标系。它是一个2D的坐标系。投影分为两种,透视投影(近大远小)和正交投影(不管物体的远近,大小不变)。
从以上四种坐标系统来看,我们要演变它的过程到最后屏幕上我们能看到的画面,需要经过模型坐标系、世界坐标系、摄像机坐标系,再投影到屏幕上的变换过程。
二、 向量
向量,就是有方向的量,只有方向和长度,没有位置信息。我们在考察向量时,总是以世界坐标系的原点,向它所在的方向投射指定的长度。
2D向量: (x, y)
3D向量: (x, y, z)
4D向量: (x, y, z, w)
存在4D向量主要是要和矩阵进行计算。
向量加法: 将向量的各项分别相加。
V1 = (1, 0), V2 = (0.5, 0.5)
V3 = V1 + V2 = (1, 0) + (0.5, 0.5) = (1.5, 0.5)
向量减法: 将向量的各项分别相减。
V1 = (0.7, 1.5), V2 = (0.5, 0.5)
V3 = V1 + V2 = (0.7, 1.5) - (0.5, 0.5) = (0.2, 1.0)
向量和标量的乘法: 把标量和向量中的每个分量分别相乘。
V = (1, 2, 2), D = 2
R = V * D = 2 * (1, 2, 2) = (2, 4, 4)
向量点积: 发生在向量和向量之间。点积的结果是一个标量值。
V1 = (1, 0)
V2 = (0.5, 0.866)
点积 = Dot(V1, V2) = V1 * V2 = (1, 0) * (0.5, 0.866) = (1*0.5 + 0*0.866) = 0.5
向量点积的几何意义:
Dot(V1, V2) = ||V1|| * ||V2|| * cos(ɑ)
cos(ɑ) = Dot(V1, V2) / (|V1|| * ||V2||)
当V1和V2都是规范化向量时:
cos(ɑ) =V1*V2
ɑ = acos(V1*V2) = acos(0.5) = 60度
其实就是acos(点积)。
点积为1,角度为0度,点积为0,角度为90度。
通过此性值,我们可以知道两个向量的夹角是多大。一般的情况是,只要夹角小于90度,他们的点积总是>0,如果夹角刚好是90度,点积则=0,如果夹角大于90度,点积会是一个负数。
向量叉积: 运算结果还是一个向量。它的运算法则是交叉相乘。
V1 = (1, 0, 0)
V2 = (0, 1, 0)
向量叉积的几何意义
两个向量的叉积得到了新的向量,它垂直于原来的两个向量所在平面。当某个向量垂直于一个平面,可以看作这个平面的法向量。
叉积运算是有顺序的, V1 x V2 和 V2 x V1 的叉积值是不一样的。顺序不同,新的法向量的方向是相反的。
三、矩阵
矩阵的维度和记法
矩阵是一个类似于二维数组的东西,但在数学概念上是完全不一样的。矩阵的下标是(1, 1)开始,数组是(0, 0)开始。在数学上,我们一般用大写的M来表示矩阵。
矩阵的转置
矩阵的转置就是把矩阵的行变成列。比如把第一行变成第一列,第二行变成第二列。
向量也可以看作一种矩阵。有时候我们会说行向量、列行量,其实我们是以矩阵的概念来看它。
矩阵和标量的乘法
一个矩阵和标量相乘,就是用标量与矩阵每一个元素依次相乘。得到的矩阵与原矩阵的维度是一样的。
矩阵和矩阵的乘法
用第一个矩阵的第一行的每个分量,与第二个矩阵的第一列的分量相乘,将结果相加,得到新的分量。
矩阵与矩阵相乘,其结果与两个矩阵的顺序是有关的,不同的顺序,结果是不一样的。
两个内部维度不同的矩阵是不能够相乘的。
一个 N * M阶与S * T阶矩阵相乘,必须满足 M和S维度相同,乘法结果是一个N * T阶矩阵。
一个列向量是不能与一个3x3矩阵相乘的,但一个3x3 矩阵可以乘以一个列向量。
一个行向量可以与一个3x3矩阵相乘。
一个行向量乘以一个3x3矩阵,结果与一个相同的3x3矩阵转置后乘以相同的行向量一样,结果是一个向量(但一个是行向量,一个是列向量)。
单位矩阵
在矩阵中,从左上角到右下角这样的一条线我们称为主对角线。在主对角线上所有元素的值都是1,其它元素为0的矩阵,我们称为单位矩阵。
单位矩阵A乘以另一个矩阵B,结果矩阵为B。也就是说单位矩阵乘以一个矩阵,它不会改变这个矩阵的元素。
转载于:https://www.cnblogs.com/yangyxd/articles/5408441.html
[Unity] 3D数学基础 - 坐标系、向量、矩阵相关推荐
- [Unity3D学习]3D数学基础之向量
[Unity3D学习]3D数学基础之向量 2014.05.11 向量是2D.3D数学研究的标准工具,在3D游戏中向量是基础. 一.向量 1.向量的数学定义 向量就是一个数字列表,对于程序员来说一个向量 ...
- 3D数学基础 - 坐标系、向量、矩阵
一.坐标系 模型坐标系: 物体自身的坐标系,只描述自身各个顶点的情况. 在3D模型坐标系中,z方向前向如果是负值,我们称为右手坐标系,如果是正值,我们称为左手坐标系.在3DMax中使用了右手坐标系,U ...
- 3D数学基础——矩阵、欧拉角和四元数的相互转换与比较
矩阵.欧拉角和四元数的相互转换与比较 相互转换 这里只展示最终的转换结果,推导过程请参考<3D数学基础:图形与游戏开发> 欧拉角转换到矩阵 欧拉角描述了一个旋转序列,分别计算出给每个旋转的 ...
- 《3D数学基础》实践1 向量类代码分析
理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. ...
- Unity 3D数学\图形学基础-游戏开发(向量)
Unity 3D数学\图形学基础-游戏开发(向量) 向量运算的几何意义 标量与向量的计算 向量的模长 标准化向量 normalize 0向量 向量与向量的加减法 两点间距离公式(向量间距离) 点积,点 ...
- 《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 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 ...
最新文章
- Maven安装与配置(最实用!!!)eclipse中配置maven
- 用中值排序基数法实现树状结构 (转)
- 卸载 流程_「工具」Windows 卸载软件,这一个就够了
- 用ipad维护Linux服务器
- Windows与Linux系统拷贝文件之pscp的使用
- Apache Ivy 2.5.0-rc1发布–现在允许解析器超时
- UART/I2C/SPI/1-wire四大通信接口的神解释
- 随笔-机器如何学习我们的知识?
- zoj 1109 Language of FatMouse 解题报告
- Ubuntu 18.04 安装 mysql 并且设置远程可登陆连接
- Solr 新增、更新、删除索引
- JAVA加载 编译 运行,在Java 7中编译的加载/运行类6
- 什么是Mybatis配置解析?(源码+图文)
- 用eclipse开发需要准备什么?
- Pannellum:实例之为全景图添加标题和作者
- 牛津高阶字典ld2_(离线)英语词典软件推荐
- AcGiGeometry::text 自画实体输出文字实例
- [AirSim in Unreal] 在Unreal中使用无人机/无人车
- 华为m3现在还能用吗_现在买二手华为平板m3还能用吗?
- CSRF攻击实验 ——合天网安实验室学习笔记
热门文章
- Acticity切换时ScrollView不停留原位置,自动滚动其他位置
- SDNU 1280.就问你慌不慌(高精度)
- 虚拟机中的Linux安装VMware Tools的方法
- Codeforces Round #337 (Div. 2) C. Harmony Analysis
- WebApi接口 - 响应输出xml和json 转
- networkX如何读取存储图的二进制.dat文件
- 使用jquery脚本获取随笔、文章和评论的统计数,自定义显示位置
- 使用request简单爬虫
- “万能数据库查询分析器” 5.03发布,访问EXCEL将自动为表名前后加上中括弧
- InfaSkin Probiotic Ecologic Panda 30 Sachets