3D数学基础 - 坐标系、向量、矩阵

一、坐标系
模型坐标系:
物体自身的坐标系,只描述自身各个顶点的情况。
loading...
在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)
loading...
向量叉积的几何意义
loading...
两个向量的叉积得到了新的向量,它垂直于原来的两个向量所在平面。当某个向量垂直于一个平面,可以看作这个平面的法向量。
叉积运算是有顺序的, V1 x V2 和 V2 x V1 的叉积值是不一样的。顺序不同,新的法向量的方向是相反的。
三、矩阵
矩阵的维度和记法
矩阵是一个类似于二维数组的东西,但在数学概念上是完全不一样的。矩阵的下标是(1, 1)开始,数组是(0, 0)开始。在数学上,我们一般用大写的M来表示矩阵。
loading...
矩阵的转置
矩阵的转置就是把矩阵的行变成列。比如把第一行变成第一列,第二行变成第二列。
loading...
向量也可以看作一种矩阵。有时候我们会说行向量、列行量,其实我们是以矩阵的概念来看它。
矩阵和标量的乘法
一个矩阵和标量相乘,就是用标量与矩阵每一个元素依次相乘。得到的矩阵与原矩阵的维度是一样的。
loading...
矩阵和矩阵的乘法
用第一个矩阵的第一行的每个分量,与第二个矩阵的第一列的分量相乘,将结果相加,得到新的分量。
loading...
矩阵与矩阵相乘,其结果与两个矩阵的顺序是有关的,不同的顺序,结果是不一样的。
两个内部维度不同的矩阵是不能够相乘的。
一个 N * M阶与S * T阶矩阵相乘,必须满足 M和S维度相同,乘法结果是一个N * T阶矩阵。
loading...
一个列向量是不能与一个3x3矩阵相乘的,但一个3x3 矩阵可以乘以一个列向量。
一个行向量可以与一个3x3矩阵相乘。
一个行向量乘以一个3x3矩阵,结果与一个相同的3x3矩阵转置后乘以相同的行向量一样,结果是一个向量(但一个是行向量,一个是列向量)。
loading...
单位矩阵
在矩阵中,从左上角到右下角这样的一条线我们称为主对角线。在主对角线上所有元素的值都是1,其它元素为0的矩阵,我们称为单位矩阵。
loading...
单位矩阵A乘以另一个矩阵B,结果矩阵为B。也就是说单位矩阵乘以一个矩阵,它不会改变这个矩阵的元素。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值