【Unity Shader入門】數學基礎:向量

【Unity Shader入門】Unity Shader概述:渲染流水線
【Unity Shader入門】Unity Shader基礎:ShaderLab
【Unity Shader入門】數學基礎:總結目錄

前言

點和向量

介紹

點(point):是n維空間(遊戲中主要使用二維和三維空間)中的一個位置,它沒有大小、寬度這類概念。

向量(vector,也被稱爲矢量):是指n維空間中一種包含了模(magnitude)和方向(direction)的有向線段。速度(velocity)就是一種典型的向量。向量被用於表示相對於某個點的偏移,也就是說是一個相對量。
向量的模:指的是這個向量的長度。一個向量的長度可以是任意的非負數。
向量的方向:則描述了這個向量在空間中指向。
向量通常由一個箭頭表示
向量的頭(head):是它的箭頭所在的端點處。
向量的尾(tail):是另一個端點處。
只要向量的模和方向保持不變,無論在哪裏,都是同一個向量。

標量(scalar):只有模沒有方向。例如距離(distance)就是一種標量。

區別

向量可以用於表示相對於另一個點的位置,此時向量的尾是一個位置,那麼向量的頭就可以表示另一個位置了。如果我們把向量的尾固定在座標系原點,那麼這個向量的表示就和點的表示重合了。儘管點和向量在數學表達式上都是一樣的,但區分點和向量之間的不同是非常重要的。可以這樣理解,任何一個點都可以表示成一個從原點位置出發的向量。

點:沒有大小之分的空間中的位置
向量:有模和方向,但是沒有位置的量,相對量(可以描述相對位置),如果向量的頭尾都固定在座標系的原點,則這個向量就和點重合了。

向量運算

幾何意義

把一個向量和一個標量相乘,意味着對向量進行一個大小爲標量的縮放。

kv=(kvx,kvy,kvz) kv=(kv_x,kv_y,kv_z)

一個向量也可以被一個非零的標量除。這等同於和這個標量的倒數相乘。

vk=(x,y,z)k=1k(x,y,z)=(xk,yk,zk),k0 \frac vk=\frac{ (x,y,z) } k=\frac 1k (x,y,z)=(\frac xk,\frac yk,\frac zk),k≠0

注意:對於乘法來說,向量和標量的位置可以互換的。但對於除法,只能是向量被標量除,而不能是標量被向量除,這是沒有意義的。當k<0時,向量的方向也會取反

例如,如果想把一個向量放大兩倍,就乘以2,。當標量小於0時,向量的方向也會相反。

向量的加法和減法

兩個向量進行相加或相減,其結果是一個相同維度的新向量。

a+b=(ax+bx,ay+by,az+bz) a+b=(a_x+b_x,a_y+b_y,a_z+b_z)
ab=(axbx,ayby,azbz) a-b=(a_x-b_x,a_y-b_y,a_z-b_z)

二維向量模

二維向量點乘

二維向量叉乘

二維單位向量

二維座標系

二維座標系旋轉

二維座標系平移

二維座標系旋轉和平移

三維座標系

三維向量基本運算

三維向量點乘

三維向量叉乘

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章