Scripting Helpers is winding down operations and is now read-only. More info→
1

# Getting angle between two vector3's? [closed]

Asked by 10 years ago

I need to get the angle between two vector3 points, how would I go about doing it?

### Locked by theCJarmy7, Avigant, Programical, Thundermaker300, User#19524, User#1007, and Zafirua

This question has been locked to preserve its current state and prevent spam and unwanted comments and answers.

4
BlueTaslem 18071
10 years ago

We can use the fact that the dot product of two vectors has two equivalent definitions.

The first definition is the sum of the products of the components, and ROBLOX provides this for you: If a and b are vectors, then the dot product of a and b is a:Dot(b).

The second definition is the product of the vectors' magnitudes and the cosine of the angle between them. So we have some simple algebra here:

-- Let a and b be vectors and d be the dot-product of them.
-- t is the angle for which we are solving, and |u| is taken to mean the
-- magnitude of u (in ROBLOX, u.magnitude)

-- |a| * |b| * cos(?) = d
-- cos(t) = d / (|a| * |b|)
-- t = arccos(d / (|a| * |b|))

-- To clean this math up further, we can make a and b be
-- unit vectors, so that their magnitudes are one and don't matter.
-- cos(t) = d
-- t = arccos(d)

-- So here it is in Lua.

-- a and b are the unit vectors
local theta = math.acos( a.unit:Dot(b.unit) );
-- theta is now the angle between a and b, measured in radians.