利用叉乘計算物體轉向

2021-06-22 15:07:52 字數 671 閱讀 4909

物體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個洞放水,就是單指令單資料流。底部同時開多個相同大小的洞放水,就是單指令多資料流。多個洞...