向量夹角计算

向量夹角

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)
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×