Vector3函式理解 計算兩向量之間的角度

2021-06-20 16:30:37 字數 730 閱讀 7149

1.已知兩個向量dira,dirb。

vector3 dira = new vector3(-1,1,0);

vector3 dirb = new vector3(-1,1,1);

2.使向量處於同乙個平面,這裡平面為xz

dira = dira - vector3.project(dira,vecotr3.up);

dirb = dirb - vector3.project(dirb,vecotr3.up);

注:vector3.project計算向量在指定軸上的投影,向量本身減去此投影向量就為在平面上的向量

3.計算角度

float angle = vector3.angle(dira,dirb);

4.計算方向

float dir = (vector3.dot (vector3.up, vector3.cross (dira, dirb)) < 0 ? -1 : 1);

angle *= dir;

vector3.cross 叉乘返回為同時垂直於兩個引數向量的向量,方向可朝上也可朝下,由兩向量夾角的方向決定。

vector3.dot 點乘意義為兩引數向量方向完全相同返回1,完全相反返回-1,垂直返回0。當兩向量角度減小,將得到更大的值

關於對vector3及其衍生變數的理解

vector3簡單來講即表示向量和點的系統類,這個結構用於處理向量和點,也包含許多做向量運算的函式。而vector2即少一維向量的類,用於處理二維運算。栗子 新增乙個剛體的速度向量,public vector3 velocity 在大多數情況下,我們不應該直接修改速度,因為這會導致不切實際的行為。不...

SetBkMode函式理解

輸出的字串時,發現存在背景色,這樣的輸出是破壞背景的。那需要使用什麼方法來保持背景不變,而又能輸出紅色的字串呢?比如按鈕的文字顏色是黑色的,而背景是灰色的。這就需要使用setbkmode函式來設定drawtext函式的輸出方式,顯示裝置共有兩種輸出方式 opaque和transparent。opaq...

OpenGl glenable 函式理解

glenable 用於啟用各種功能。功能由引數決定。與gldisable相對應。gldisable是用來關閉的。兩個函式引數取值是一至的。引數說明 void glenable glenum cap glenum 是unsigned int 型別 cap 是乙個取值。由值決定啟用的功能鍵。各種功能請看...