永远相信美好的事情即将发生 😊!

Unity Shader 入门精要(冯乐乐著)学习笔记(3)——学习Shader所需的数学基础

学习 Mavis 113℃ 0评论

二维笛卡尔坐标系

二维笛卡尔坐标系:原点+过原点且互相垂直的两矢量即x轴和y轴。所有二维笛卡尔坐标系都是等价的,可以通过旋转互相得到。

三维笛卡尔坐标系

三维笛卡尔坐标系:原点+三个坐标轴。

基矢量(Basis Vector):该坐标系的三个坐标轴。

正交基(Orthogonal Basis):三个坐标轴互相垂直。

标准正交基(Orthonormal Basis):三个坐标轴互相垂直且长度为1。

ps:正交代表互相垂直。

左右手坐标系(三维笛卡尔坐标系)

左右手坐标系具有不同的旋向性(handedness),所以无法通过旋转互相得到。同时左右手坐标系对正向旋转的定义不同,使用左右手法则进行判断。

使用的坐标系的差异绝大多数情况下不会影响底层数学计算(绝对性),但是映射到视觉上会有差别(相对性)

Unity使用的坐标系

世界空间和模型空间都使用左手坐标系。

观察空间(原点为摄像机)采用右手坐标系,代表在观察空间内,z轴坐标越小,物体深度越大,离摄像机越远。

点和矢量

(point):n维空间中的一个位置。描述坐标系下的绝对位置。

标量(scalar):n维空间中只包含模的线段。

矢量(vector):n维空间中包含了模(magnitude)和方向(direction)的有向线段。通常被用来表示相对于某个点的偏移(displacement)。描述坐标系下的相对位置。

矢量运算

  • 矢量和标量乘除法
  • 矢量的加减法(三角形定则triangle rule
  • 矢量的模(每个分量平方和再开根号)
  • 单位矢量(模长为1)——被归一化的矢量(normalized vector)
  • 归一化(normalization):零矢量不可以被归一化
  • 矢量的点积(dot product)/内积(inner product):

a·b=b·a

点积的几何意义是投影,投影值可正可负,取决于两向量夹角度数。点积的结果可以用来判断两向量的方向关系。点积还可以用来求矢量的模(矢量自身点积=模的平方)

  • 矢量的叉积(cross product)/外积(outer product):

a×b≠b×a           a×b=-(b×a)       |a×b|=|a||b|sinθ

两个矢量叉积的结果会得到一个同时垂直这两个矢量的新矢量。矢量叉积的方向根据选择的坐标系进行判断。最常用来计算垂直一个平面/三角形的矢量以及判断三角面片的朝向。


Mavis , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Unity Shader 入门精要(冯乐乐著)学习笔记(3)——学习Shader所需的数学基础
喜欢 (1)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址