概述
Shader所需的数学基础笔记|点、矢量、标量
关于点、矢量、标量:
点—->(Point)是空间中的位置,无大小、宽度概念 二维点: P=(Px,Py) 三维点: P=(Px,Py,Pz)
矢量—->(Vector,数学也叫向量),矢量是空间中包含模和方向的有向线段。“速度”就是一种矢量(有方向,有速度),矢量一般用字母 “V” 表示
标量—->用通俗的说法,标量是只有大小,没有方向的量。“距离”就是一种标量矢量描述:
1.矢量的模指的是这个矢量的长度,矢量可以是任意的非负数
2.矢量的方向则描述了这个矢量在空间中的指向
3.矢量的表示方法与点类似,可以用 V=(x,y) 来表示二维矢量,用 V=(x,y,z) 表示三维矢量,用 V=(x,y,z,w) 来表示四维矢量
ps:点与矢量的关系:可以认为任何一个点都可以表示成一个从原点出发的矢量矢量运算:
矢量不能与标量进行相加/相减的运算(无法将速度和距离相加对吧?),但可以对他们进行相乘运算,结果可能是一个(长度不同,方向可能相反的…)新矢量乘法公式: ( k 代表标量
v 代表矢量)
kv=(kvx,kvy,kvz)
ps:对于乘法 矢量和标量可以互换矢量(v)也可以被一个非零的标量(k)除,等同于和这个标量的倒数相乘:
除法公式:
vk=(x,y,z)k=1k(x,y,z)=(xk,yk,zk),k≠0
ps:对于除法 只能是矢量v被标量k除 当K<0时,矢量的方向就会取反两个矢量相加或相减,结果是一个相同维度的新矢量
加法与减法公式:
a+b=(ax+bx,ay+by,az+bz)
a−b=(ax−bx,ay−by,az−bz)
ps:一个矢量不可以和一个标量相加或相减,或者和不同维度的矢量进行运算,图形学中矢量通常用于描述偏移位置,因此我们可以利用矢量的加法和减法来计算一点相对于另一点的位移。矢量的模:
矢量的模是一个标量,可理解为矢量在空间中的长度。表示符号是在矢量两旁分别加上一条垂直线(偶尔有些文献使用两条垂直线)。三维矢量模计算公式 计算方法:对每个分量的平方相加后再开根号得到
|v|=v2x+v2y+v2z−−−−−−−−−−√下面给出例子
|(1,2,3)|=12+22+32−−−−−−−−−−√=1+4+9−−−−−−−√=14−−√≈3.742
|(3,4)|=32+42−−−−−−√=9+16−−−−−√=25−−√=5
ps:在二维矢量,我们可以对任意矢量构建一个三角形,
在三角形的勾股定理中,矢量的两个分量的绝对值对应了三角形两个直角边的长度,而斜边的长度就是矢量的模(二维矢量)单位矢量
被归一化的矢量 = 单位矢量
V单=V|V|,V是任意非零矢量
下面给出例子
(3,−4)|(3,−4)|=(3,−4)32+(−4)2−−−−−−−−−√=(3,−4)25−−√=(3,−4)5=(35,−45)=(0.6,−0.8)
- 矢量的点积 dot(a,b)
a⋅b=(ax,ay,az)⋅(bx,by,bz)=axbx+ayby+azbz
下面给出例子
(1,2,3)⋅(0.5,4,2.5)=0.5+8+7.5=16
(−3,4,0)⋅(5,−1,7)=−15+−4+0=−19
矢量的点积满足交换律,即
a⋅b=b⋅a
点积应用到了图形学的各个方面,其中一个几何意义就是投影(Projection)
点积可结合标量乘法
(ka)⋅b=a⋅(kb)=k(a⋅b)
点积可结合矢量加法和减法,和性质一类似。(这里的“结合”指,点积的操作数可以是矢量相加或相减后的结果,公式为:)
a⋅(b+c)=a⋅b+a⋅c
一个矢量和本身进行点积的结果是该矢量模的平方
v⋅v=vxvx+vyvy+vzvz=|v|2
待续…………
最后
以上就是爱笑茉莉为你收集整理的笔记-Shader所需的数学基础的全部内容,希望文章能够帮你解决笔记-Shader所需的数学基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复