Unity学习:3D数学基础知识

一、3D坐标系
笛卡尔坐标系。分为 左手坐标系和右手坐标系。
按照X,Y,Z的顺序表示坐标。
1. 全局坐标系(世界坐标系)
坐标原点(0,0,0),例(1,2,1)
2. 局部坐标系(模型坐标系,物体坐标系)
每个物体有自己独立的坐标系,并且随物体进行相同的移动和旋转。模型mesh中保存的顶点坐标,均为局部坐标系下的坐标。
建立父子关系,子物体的坐标系以 父物体的坐标点为自身的坐标原点。
3. 相机坐标系
根据 观察位置方向建立的坐标系。使用此坐标系可以方便的判断物体是否在相机前方以及物体之间的先后遮挡顺序等。
4. 屏幕坐标系
建立在屏幕上的二维坐标系,用来描述像素在屏幕上的 位置

Unity中,Transform组件的
Transform.TransformPoint 方法可以将坐标点 从局部转换到全局坐标系
Transform.InverseTransformPoint 可以讲坐标点从 全局坐标系转换到局部坐标系。
Transform.TransformDirection用于对向量 从局部坐标系转换到全局
Transform.InverseTransformDirection从 全局坐标系转换到局部坐标

Transform.TransformDirection 变换方向
function TransformDirection (direction : Vector3) : Vector3
Description描述
Transforms direction from local space to world space.
从自身坐标到世界坐标变换方向。
This operation is not affected by scale or position of the transform. The returned vector has the same length as direction.
这个操作不会受到变换的缩放和位置的影响。返回的向量与direction有同样的长度。


二、向量 Vector
向量又称矢量,在数学里,既有大小又有方向的量,就是向量。在几何中,向量可以用一段有方向的线段来表示。
1.向量的运算
1)加减:向量的加减为 各 分量分别相加减,在物理上可以用来计算 两个力的合力,或者几个 速度分量的叠加
2)数乘:向量与一个 标量相乘为数乘。数乘可以对向量的长度进行缩放,如果标量小于0,向量的方向会变反方向。
3)点乘:两个向量点乘得到一个 标量,数值等于 两个向量长度相乘后再乘以二者夹角的余弦。
a•b = ax*bx + ay*by 
=  (|a|*sinθ1) * (|b| * sinθ2) +   (|a| * cosθ1) * (|b| * cosθ2)
= |a||b|(sinθ1*sinθ2 + cosθ1*cosθ2)
=|a||b|(cos(θ1-θ2))
= |a||b|cosθ

通过两个向量的点乘结果符号,可以快速判断两个向量的夹角,
若:U·V = 0,则U,V互相垂直
若:U·V > 0,则U,V夹角小于90度
若:U·V < 0,则U,V夹角大于90度a
点乘的几何意义是: 是一条边向另一条边的投影乘以另一条边的长度
平行四边形,面积相等,cos点乘满足 :交换律a·b=b·a ,分配率a·(b+c) = a·b + a·c

4)叉乘:两个向量的叉乘得到一个新的向量,新向量 垂直于原来两个向量,并且 长度等于原来两个向量长度相乘后,再乘夹角的正弦值
可用左手拇指和食指来代表UV,中指则为叉乘向量的方向
另外叉乘不满足交换律:UxV ≠ VxU
2.Vector3类
Unity中和向量有关的类有:Vector2,Vector3,Vector4,分别对应不同维度的向量。其中Vector3使用广泛。
三、矩阵
矩阵是一个矩形阵列,有指定的 行和列,使用矩阵可以简化数据的 表示变换处理
M × N的矩阵是一个具有M行、N列的矩形数组,行数和猎术分别为矩阵的维度。Unity中常用4X4矩阵,它可以描述向量的 平移,旋转,缩放等所有 线性变换
平移矩阵,
旋转矩阵,
缩放矩阵

四、齐次坐标
将原本三维向量的(x,y,z)用四维向量(Wx,Wy,Wz,W)来表示。
目的1 区分向量和点(x,y,z,1)来表示坐标点,(x,y,z,0)表示向量
2统一用4X4矩阵乘法来表示平移旋转和缩放变换。
3当分量w=0时,可以用来表示无穷远的点。

五、四元数
四元数包含一个标量分量和一个三维向量分量
Q可以计作 :Q = [w,(x,y,z)]
四元数用表示旋转
(其余两种旋转表示方法:欧拉角和矩阵)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值