# Find all angles of a given triangle

Given coordinates of all three vertices of the triangle in the 2D plane, the task is to find all three angles.
Example:

```Input : A = (0, 0),
B = (0, 1),
C = (1, 0)
Output : 90, 45, 45```

To solve this problem we use below Law of cosines

`c^2 = a^2 + b^2 - 2(a)(b)(cos beta)`

After re-arranging

`beta = acos( ( a^2 + b^2 - c^2 ) / (2ab) )`

In trigonometry, the law of cosines (also known as the cosine formula or cosine rule) relates the lengths of the sides of a triangle to the cosine of one of its angles.

```First, calculate the length of all the sides.
Then apply above formula to get all angles in
degrees.```

Below is implementation of above steps.

## C++

 `// Code to find all three angles ``// of a triangle given coordinate ``// of all three vertices ``#include ``#include // for pair ``#include // for math functions ``using` `namespace` `std; `` ` `#define PI 3.1415926535 `` ` `// returns square of distance b/w two points ``int` `lengthSquare(pair<``int``,``int``> X, pair<``int``,``int``> Y) ``{ ``    ``int` `xDiff = X.first - Y.first; ``    ``int` `yDiff = X.second - Y.second; ``    ``return` `xDiff*xDiff + yDiff*yDiff; ``} `` ` `void` `printAngle(pair<``int``,``int``> A, pair<``int``,``int``> B, ``                ``pair<``int``,``int``> C) ``{ ``    ``// Square of lengths be a2, b2, c2 ``    ``int` `a2 = lengthSquare(B,C); ``    ``int` `b2 = lengthSquare(A,C); ``    ``int` `c2 = lengthSquare(A,B); `` ` `    ``// length of sides be a, b, c ``    ``float` `a = ``sqrt``(a2); ``    ``float` `b = ``sqrt``(b2); ``    ``float` `c = ``sqrt``(c2); `` ` `    ``// From Cosine law ``    ``float` `alpha = ``acos``((b2 + c2 - a2)/(2*b*c)); ``    ``float` `beta = ``acos``((a2 + c2 - b2)/(2*a*c)); ``    ``float` `gamma = ``acos``((a2 + b2 - c2)/(2*a*b)); `` ` `    ``// Converting to degree ``    ``alpha = alpha * 180 / PI; ``    ``beta = beta * 180 / PI; ``    ``gamma = gamma * 180 / PI; `` ` `    ``// printing all the angles ``    ``cout << ``"alpha : "` `<< alpha << endl; ``    ``cout << ``"beta : "` `<< beta << endl; ``    ``cout << ``"gamma : "` `<< gamma << endl; ``} `` ` `// Driver code ``int` `main() ``{ ``    ``pair<``int``,``int``> A = make_pair(0,0); ``    ``pair<``int``,``int``> B = make_pair(0,1); ``    ``pair<``int``,``int``> C = make_pair(1,0); `` ` `    ``printAngle(A,B,C); `` ` `    ``return` `0; ``} `

## Java

 `// Java Code to find all three angles ``// of a triangle given coordinate ``// of all three vertices `` ` `import` `java.awt.Point; ``import` `static` `java.lang.Math.PI; ``import` `static` `java.lang.Math.sqrt; ``import` `static` `java.lang.Math.acos; `` ` `class` `Test ``{ ``    ``// returns square of distance b/w two points ``    ``static` `int` `lengthSquare(Point p1, Point p2) ``    ``{ ``        ``int` `xDiff = p1.x- p2.x; ``        ``int` `yDiff = p1.y- p2.y; ``        ``return` `xDiff*xDiff + yDiff*yDiff; ``    ``} ``     ` `    ``static` `void` `printAngle(Point A, Point B, ``            ``Point C) ``    ``{ ``    ``// Square of lengths be a2, b2, c2 ``    ``int` `a2 = lengthSquare(B,C); ``    ``int` `b2 = lengthSquare(A,C); ``    ``int` `c2 = lengthSquare(A,B); ``     ` `    ``// length of sides be a, b, c ``    ``float` `a = (``float``)sqrt(a2); ``    ``float` `b = (``float``)sqrt(b2); ``    ``float` `c = (``float``)sqrt(c2); ``     ` `    ``// From Cosine law ``    ``float` `alpha = (``float``) acos((b2 + c2 - a2)/(``2``*b*c)); ``    ``float` `betta = (``float``) acos((a2 + c2 - b2)/(``2``*a*c)); ``    ``float` `gamma = (``float``) acos((a2 + b2 - c2)/(``2``*a*b)); ``     ` `    ``// Converting to degree ``    ``alpha = (``float``) (alpha * ``180` `/ PI); ``    ``betta = (``float``) (betta * ``180` `/ PI); ``    ``gamma = (``float``) (gamma * ``180` `/ PI); ``     ` `    ``// printing all the angles ``    ``System.out.println(``"alpha : "` `+ alpha); ``    ``System.out.println(``"betta : "` `+ betta); ``    ``System.out.println(``"gamma : "` `+ gamma); ``    ``} ``     ` `    ``// Driver method ``    ``public` `static` `void` `main(String[] args)  ``    ``{ ``        ``Point A = ``new` `Point(``0``,``0``); ``        ``Point B = ``new` `Point(``0``,``1``); ``        ``Point C = ``new` `Point(``1``,``0``); ``      ` `        ``printAngle(A,B,C); ``    ``} ``} `

## Python3

 `# Python3 code to find all three angles  ``# of a triangle given coordinate  ``# of all three vertices  ``import` `math `` ` `# returns square of distance b/w two points  ``def` `lengthSquare(X, Y):  ``    ``xDiff ``=` `X[``0``] ``-` `Y[``0``]  ``    ``yDiff ``=` `X[``1``] ``-` `Y[``1``]  ``    ``return` `xDiff ``*` `xDiff ``+` `yDiff ``*` `yDiff ``     ` `def` `printAngle(A, B, C):  ``     ` `    ``# Square of lengths be a2, b2, c2  ``    ``a2 ``=` `lengthSquare(B, C)  ``    ``b2 ``=` `lengthSquare(A, C)  ``    ``c2 ``=` `lengthSquare(A, B)  `` ` `    ``# length of sides be a, b, c  ``    ``a ``=` `math.sqrt(a2);  ``    ``b ``=` `math.sqrt(b2);  ``    ``c ``=` `math.sqrt(c2);  `` ` `    ``# From Cosine law  ``    ``alpha ``=` `math.acos((b2 ``+` `c2 ``-` `a2) ``/``                         ``(``2` `*` `b ``*` `c));  ``    ``betta ``=` `math.acos((a2 ``+` `c2 ``-` `b2) ``/` `                         ``(``2` `*` `a ``*` `c));  ``    ``gamma ``=` `math.acos((a2 ``+` `b2 ``-` `c2) ``/` `                         ``(``2` `*` `a ``*` `b));  `` ` `    ``# Converting to degree  ``    ``alpha ``=` `alpha ``*` `180` `/` `math.pi;  ``    ``betta ``=` `betta ``*` `180` `/` `math.pi;  ``    ``gamma ``=` `gamma ``*` `180` `/` `math.pi;  `` ` `    ``# printing all the angles  ``    ``print``(``"alpha : %f"` `%``(alpha))  ``    ``print``(``"betta : %f"` `%``(betta)) ``    ``print``(``"gamma : %f"` `%``(gamma)) ``         ` `# Driver code ``A ``=` `(``0``, ``0``) ``B ``=` `(``0``, ``1``)  ``C ``=` `(``1``, ``0``) `` ` `printAngle(A, B, C);  `` ` `# This code is contributed  ``# by ApurvaRaj `

## C#

 `// C# Code to find all three angles ``// of a triangle given coordinate ``// of all three vertices ``using` `System; ``     ` `class` `GFG ``{ ``    ``class` `Point ``    ``{ ``        ``public` `int` `x, y; ``        ``public` `Point(``int` `x, ``int` `y) ``        ``{ ``            ``this``.x = x; ``            ``this``.y = y; ``        ``} ``    ``} ``     ` `    ``// returns square of distance b/w two points ``    ``static` `int` `lengthSquare(Point p1, Point p2) ``    ``{ ``        ``int` `xDiff = p1.x - p2.x; ``        ``int` `yDiff = p1.y - p2.y; ``        ``return` `xDiff * xDiff + yDiff * yDiff; ``    ``} ``     ` `    ``static` `void` `printAngle(Point A, Point B, Point C) ``    ``{ ``        ``// Square of lengths be a2, b2, c2 ``        ``int` `a2 = lengthSquare(B, C); ``        ``int` `b2 = lengthSquare(A, C); ``        ``int` `c2 = lengthSquare(A, B); ``         ` `        ``// length of sides be a, b, c ``        ``float` `a = (``float``)Math.Sqrt(a2); ``        ``float` `b = (``float``)Math.Sqrt(b2); ``        ``float` `c = (``float``)Math.Sqrt(c2); ``         ` `        ``// From Cosine law ``        ``float` `alpha = (``float``) Math.Acos((b2 + c2 - a2) /  ``                                           ``(2 * b * c)); ``        ``float` `betta = (``float``) Math.Acos((a2 + c2 - b2) /  ``                                           ``(2 * a * c)); ``        ``float` `gamma = (``float``) Math.Acos((a2 + b2 - c2) /  ``                                           ``(2 * a * b)); ``         ` `        ``// Converting to degree ``        ``alpha = (``float``) (alpha * 180 / Math.PI); ``        ``betta = (``float``) (betta * 180 / Math.PI); ``        ``gamma = (``float``) (gamma * 180 / Math.PI); ``         ` `        ``// printing all the angles ``        ``Console.WriteLine(``"alpha : "` `+ alpha); ``        ``Console.WriteLine(``"betta : "` `+ betta); ``        ``Console.WriteLine(``"gamma : "` `+ gamma); ``    ``} ``     ` `    ``// Driver Code ``    ``public` `static` `void` `Main(String[] args)  ``    ``{ ``        ``Point A = ``new` `Point(0, 0); ``        ``Point B = ``new` `Point(0, 1); ``        ``Point C = ``new` `Point(1, 0); ``     ` `        ``printAngle(A, B, C); ``    ``} ``} `` ` `// This code is contributed by Rajput-Ji `

## Javascript

 `// JavaScript program  ``// Code to find all three angles ``// of a triangle given coordinate ``// of all three vertices `` ` `// returns square of distance b/w two points ``function` `lengthSquare(X, Y){ ``    ``let xDiff = X[0] - Y[0]; ``    ``let yDiff = X[1] - Y[1]; ``    ``return` `xDiff*xDiff + yDiff*yDiff; ``} `` ` `function` `printAngle(A, B, C){ ``     ` `    ``// Square of lengths be a2, b2, c2 ``    ``let a2 = lengthSquare(B,C); ``    ``let b2 = lengthSquare(A,C); ``    ``let c2 = lengthSquare(A,B); `` ` `    ``// length of sides be a, b, c ``    ``let a = Math.sqrt(a2); ``    ``let b = Math.sqrt(b2); ``    ``let c = Math.sqrt(c2); `` ` `    ``// From Cosine law ``    ``let alpha = Math.acos((b2 + c2 - a2)/(2*b*c)); ``    ``let beta = Math.acos((a2 + c2 - b2)/(2*a*c)); ``    ``let gamma = Math.acos((a2 + b2 - c2)/(2*a*b)); `` ` `    ``// Converting to degree ``    ``alpha = alpha * 180 / Math.PI; ``    ``beta = beta * 180 / Math.PI; ``    ``gamma = gamma * 180 / Math.PI; `` ` `    ``// printing all the angles ``    ``console.log(``"alpha : "``, alpha); ``    ``console.log(``"beta : "``, beta); ``    ``console.log(``"gamma : "``, gamma); ``} `` ` `// Driver code ``let A = [0, 0]; ``let B = [0, 1]; ``let C = [1, 0]; `` ` `printAngle(A,B,C); `` ` `// The code is contributed by Gautam goel (guatamgoel962)`

Output:

```alpha : 90
beta : 45
gamma : 45```

Time Complexity: O(log(n)) since using inbuilt sqrt functions

Auxiliary Space: O(1)

Previous
Next