因為是B在A上的投影,是以投影向量必然是沿着A方向的
點積結果的正負,依賴于夾角的大小,當夾角大于90度時,Cos結果為負,此時可以判斷兩個向量朝向不同
兩個向量叉積的結果,垂直于這兩個向量,此時3個向量可以構成一個三維坐标系
根據右手定則以及兩個向量叉積的結果的正負,很容易的可以判斷這兩個向量的左右關系
利用好上一個規則,如果P在三角形ABC内,則AP在AB的左側,BP在BC的左側,CP在CA的左側,即各項叉積的結果應該都是正或者都是負
否則P不在三角形ABC内
矩陣可以表示縮放以及選擇,但沒法表示平移,于是引入齊次矩陣的概念
對于一個點(X,Y,Z),我們稱它對應的齊次坐标為(X,Y,Z,1)
對于一個向量(X,Y,Z),我們稱它對應的齊次坐标為(X,Y,Z,0)
那麼對應的矩陣也需要多加入一維,變成四維矩陣
平移矩陣:
縮放矩陣:
旋轉矩陣則比較複雜,不多考慮,能明白齊次的概念就好
重中之重!
一個非常關鍵的問題是,如果給定坐标系A下某一個點P的坐标,如何得到P在坐标系B中的坐标?
如圖,假設有兩個坐标系A、B,對應的基底分别是(Ua,Va)、(Ub,Vb)
其中,P在坐标系A的坐标是(x,y),如何求出P在坐标系B中的坐标?
同時,我們很明顯的能夠發現,坐标系A的基底,可以用坐标系B來描述
其中(m1,n1)是坐标系A的X軸的機關向量,在坐标系B中的表示,其餘同理
是以隻要能找到某一個坐标系的基底向量再另一個坐标系中的表示,自然就很容易能夠把某一個坐标系中的點或者向量轉到另一個坐标系中
此時有一個新的問題,上述兩個坐标系,其坐标原點是重合的,那如果兩個坐标系不在同一個位置呢?
也很容易想到,如果我們整體平移某一個坐标系,那麼這個坐标系裡的點或者向量,并不會發生改變
是以隻要先平移子坐标系A,再利用上述規則進行轉換即可
加上齊次坐标的規則,總結出三維空間中的轉換公式如下:
其中(Xa,Ya,Za,Oa)代表按列展開
Xa代表着坐标系A中的基底X在坐标系B中的表示,其餘同理
Oa代表坐标系A的遠點平移到坐标系B
左手坐标系
右手坐标系
不難發現差別隻是X軸的朝向不同
在Unity中,模型空間與世界空間采用左手坐标系,觀察空間采用右手坐标系