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 是乙個取值。由值決定啟用的功能鍵。各種功能請看...