Find angle between two vectors from a point

I’m pretty sure this has been answered numerous times already, but I want this to specifically work around a certain point.

How would I check the angles between two vectors? - Development Discussion - DevForum | Roblox

That finds the angle between two vectors from the world origin. I want to find it from a point.

That still works. You just take the distance between B and A and then C and A then use cosine to find it.

Let the points of the triangle be ABC with B as the origin.

construct the two vectors BA and BC:
use the parts .Position property

local BA = A.Position - B.Position
local BC = C.Position - B.Position

now get the angle of the constructed vectors using the method @maycoleee2231 suggested.

local angle = math.acos(BA:Dot(BC))

I haven’t tested this but it should work. I can draw a diagram of my thinking if needed.

It returns -nan(ind) for some reason

print(math.deg(math.acos((workspace.C.Position-workspace.A.Position):Dot(workspace.B.Position-workspace.A.Position))))

I meant for it to be

sorry if that was not translated across in my explanation

That’s what I did
print(math.deg(math.acos((workspace.C.Position-workspace.A.Position):Dot(workspace.B.Position-workspace.A.Position))))
A = B
C = A
B = C
Left is mine and right is yours
(workspace.C.Position-workspace.A.Position):Dot(workspace.B.Position-workspace.A.Position)

I found the error. I forgot to unitise the vectors. Add .Unit onto the end of the vectors and then get the angle between them. I tested this with a triangle with the ratio 60 30 90 and got the expected results for the angle

local A = workspace.A
local B = workspace.B
local C = workspace.C

local BA = (A.Position - B.Position).Unit
local BC = (C.Position - B.Position).Unit

local angle = math.acos(BA:Dot(BC))
print(angle)
4 Likes