Open In App
Related Articles

# 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)

Reference
https://en.wikipedia.org/wiki/Law_of_cosines
This article is contributed by Pratik Chhajer . If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.