# Deriving an angle from three points

Mark Wieder mwieder at ahsoftware.net
Wed Dec 16 04:02:04 EST 2009

```Mark-

Tuesday, December 15, 2009, 10:21:47 PM, you wrote:

> 40,116
> 98,186
> 132,118

> How would one determine the angle created from three points, such as those above?

If I can assume that (98,186) is the center of the angle, then you can
calculate the angle (actually all three angles) from the lengths of
the three sides of the triangle:

on mouseUp
local pointA, pointB, pointC
local lengthA, lengthB, lengthC
local tSub

put "40,116" into pointA
put "98,186" into pointB -- assumed center of angle
put "132,118" into pointC

-- get the lengths of the three sides of the triangle
put SideLength(pointA, pointB) into lengthA
put SideLength(pointB, pointC) into lengthB
put SideLength(pointA, pointC) into lengthC

--calculate the angle as arccos( (b2+c2-a2) / 2bc)
--the other two angles are arccos( (a2+c2-b2) / 2ac)
-- and arccos( (a2+b2-c2) / 2ab)
put (lengthB * lengthB) + (lengthC * lengthC) - (lengthA * lengthA) into tSub
put acos(tSub / (2 * lengthB * lengthC))  into tRadians
put tRadians * 180 / pi -- convert from radians to degrees
end mouseUp

-- calculate (x2-x1)^2 + (y2-y1)^2
-- return the square root of that
function SideLength pPointA, pPointB
local lengthX, lengthY

set the itemdelimiter to comma
put item 1 of pPointB - item 1 of pPointA into lengthX
put lengthX * lengthX into lengthX -- x squared
put item 2 of pPointB - item 2 of pPointA into lengthY
put lengthY * lengthY into lengthY -- y squared
return sqrt(lengthX + lengthY) -- length of hypotenuse
end SideLength

...and I come up with 64.680313 degrees.

--
-Mark Wieder
mwieder at ahsoftware.net

```