物體a轉向物體b時,是從左轉,還是從右轉呢?可利用叉乘計算。u3d使用左手座標系。
dirc = cross(dira, dirb) = |dira| * |dirb| * sin;
而根據正弦曲線可知道,夾角在[0,pi]區間內時sin > 0,夾角在[pi,2pi]區間內時sin < 0;
再結合左手法則,通過dirc.y就知道目標點是在左邊還是右邊了。
// a的當前朝向
vector3 vec3forward = a.transform.transformdirection(vector3.forward);
// 目標方向
vector3 vec3target = b.transform.transform.position - a.transform.position;
// 計算叉乖
vector3 vec3cross = vector3.cross( vec3forward, vec3target );
// 計算轉角
float dangle = vector3.angle( vec3forward, vec3target ); // angle方法始終返回最小角
// 根據左手法則,y向上,說明目標在右邊,y向下,說明目標在左邊
if( vec3cross.y > 0 )
else
計算幾何叉乘作用
1 獲得最小的旋轉角度。比如做乙個方向盤,目標點在b,則可以oa叉乘ob,使用右手定則,大於0逆時針旋轉,小於0順時針。道理和上面的相同,左邊右手定則是大於0的,小於0右邊,等於0共線,可以運用這個來判斷乙個點是否在多邊形內部。如果多邊形頂點按逆時針給出,則可以直接判斷,o分別在bc cd da a...
兩向量叉乘的計算公式 向量叉乘
建議閱讀原文 預備知識三階行列式 向量叉乘在物理定律中十分常見,例如在討論力學中的力矩,角動量,以及電磁學中的洛倫茲力,安培力時都會使用 以下我們討論的向量都是三維空間中的幾何向量,在討論它們的座標時,我們預設取正交歸一基底 叉乘的幾何定義 兩個幾何向量 叉乘 cross product 也叫叉積 ...
利用SSE計算向量點乘simd dot
滷煮 非文藝小燕兒 所謂sse streaming simd extensions 也就是單指令多資料流的擴充套件。所謂單指令多資料流呢,簡單理解就是多個資料流同時處理一條指令。舉個栗子 乙個水箱中的水,底部開1個洞放水,就是單指令單資料流。底部同時開多個相同大小的洞放水,就是單指令多資料流。多個洞...