1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // 基于点积计算, // a.b = ||a|| * ||b|| * sin(θ) // => θ = arccos(a·b / (||a|| * ||b||)) // => θ = arccos(a·b) //当a和b按照单位向量算时 float angle = Mathf.Acos(Vector3.Dot(a.normalized, b.normalized)) * Mathf.Rad2Deg;
// 基于叉积计算, // ||a × b|| = ||a|| ||b|| sinθ // => θ = arcsin(||a × b|| / (||a|| * ||b||)) // => θ = arcsin(||a × b||) //当a和b按照单位向量算时 // 下面公式中有个Distance的计算是因为||a × b||是有长度的 angle = Mathf.Asin(Vector3.Distance(Vector3.zero, Vector3.Cross(a.normalized, b.normalized))) * Mathf.Rad2Deg;
// 最简单计算方式 Vector3.Angle(a, b)
|