向量的基礎知識以及在DCC軟件里的應用(一)
一.向量的基礎概念
向量: 一般認為,同時滿足具有大小和方向兩個性質(zhì)的幾何對象即可認為是向量
在DCC軟件里面可以堪稱向量的屬性:
- 法線:同時具有大小跟方向, 在Houdini里面一般用作發(fā)射物體的初速度杀赢。
- 速度:
- 位置:點的坐標凯楔,相對于世界坐標中心(0,0,0)
向量模:向量的模就是向量的的長度
eg: 向量a的坐標(x,y,z)則其模長為
[圖片上傳失敗...(image-b49f06-1594397658808)]
單位向量:單位向量是模等于1的向量印蓖。由于是非零向量,單位向量具有確定的方向。一個非零向量除以它的模数尿,可得所需單位向量。
應用: 一般在DCC軟件里面單位向量被用來確定方向惶楼,以及求兩個向量的角度右蹦。
向量的夾角:兩個向量的夾角是將二者圖示化后兩箭頭所夾之角
向量的夾角可由點積的定義導出計算公式,即:
[圖片上傳失敗...(image-218fc4-1594397658808)]
二.空間向量坐標的混合運算
[圖片上傳失敗...(image-39c3ee-1594397658808)]
向量的加法
:兩個向量組成的平行四邊形的對角線,或者三角形法則
:一般在houdini里面通過給其法線@N + 一個向量來改變其法線方向
# vex code
vector a = point(0,'P',0);
vector b = point(1,'P',0);
@N = b-a;
向量減法
:向量減法的差是由減向量指向被減向量得到的新向量歼捐,可以把減向量方向調(diào)反變成向量加法
:一般在houdini里面通過向量相減何陆,來調(diào)整物體爆炸時候的初速度
vector a = @P;
vector b = point(1,'P',0);
@N = -b-a;
向量乘法
1.向量的點積/標量積
代數(shù)定義:
向量a與b的點積定義為:
幾何定義:
在歐幾里德空間中,點積可以直觀的定義為:
從上述幾何定義可知:
- 當兩個向量垂直的時候豹储。向量點積為零贷盲,為1或-1則相互平行
- 當兩個向量都是單位向量的時候,其點積就是夾角的余弦值
- 判斷兩個向量的方向剥扣,點積的值大于零兩個向量方向相近巩剖,小于零方向相反
定義應用
- 求向量夾角
使用 houdini Vex
vector pos1 = {1,2,3};
vector pos2 = {1,0,0};
vector pos1_one = normalize(pos1); # 把向量轉(zhuǎn)換成單位向量
vector pos2_one = normalize(pos2);
float dot_value = dot(pos1_one, pos2_one) # 點積
float angle = acos(dot_value) # 反余弦值
# 歡迎關(guān)注微信供公眾號CGPipeline獲取更多干貨
2.向量的叉積
叉積的值還是向量:a向量與b向量的向量積的方向與這兩個向量所在平面垂直,且遵守右手定則
代數(shù)定義:
[圖片上傳失敗...(image-31ab57-1594397658808)]
幾何定義:
從上述幾何定義可知:
- 當兩個向量垂直的時候钠怯。向量叉積的模長為1或者-1佳魔,為0則相互平行
- 向量叉積與兩向量所在平面垂直
- 在計算機圖形學里面利用叉積來計算法線,只要已知物體表面的兩個非平行矢量(或者不在同一直線的三個點)晦炊,就可依靠叉積求得法線鞠鲜。
- 通過叉積來判斷兩個線段是否相交