How to calculate an angle from three points?

algorithm, geometry, math

Solution

If you mean the angle that P1 is the vertex of then using the Law of Cosines should work:

arccos((P122 + P132 - P232) / (2 * P12 * P13))

where P12 is the length of the segment from P1 to P2, calculated by

sqrt((P1x - P2x)2 + (P1y - P2y)2)

Problem

Lets say you have this: ``` P1 = (x=2, y=50) P2 = (x=9, y=40) P3 = (x=5, y=20) ``` Assume that `P1` is the center point of a circle. It is always the same. I want the angle that is made up by `P2` and `P3`, or in other words the angle that is next to `P1`. The inner angle to be precise. It will always be an acute angle, so less than -90 degrees. I thought: Man, that's simple geometry math. But I have looked for a formula for around 6 hours now, and only find people talking about complicated NASA stuff like arccos and vector scalar product stuff. My head feels like it's in a fridge. Some math gurus here that think this is a simple problem? I don't think the programming language matters here, but for those who think it does: java and objective-c. I need it for both, but haven't tagged it for these.

Original source