# Angle between 3 given vertices in a n-sided regular polygon

• Last Updated : 13 Mar, 2022

Given a n-sided regular polygon and three vertices a1, a2 and a3, the task is to find the angle suspended at vertex a1 by vertex a2 and vertex a3.

Examples:

```Input: n = 6, a1 = 1, a2 = 2, a3 = 4
Output: 90

Input: n = 5, a1 = 1, a2 = 2, a3 = 5
Output: 36```

Approach:

1. The angle subtended by an edge on the center of n sided regular polygon is 360/n.
2. The angle subtended by vertices separated by k edges becomes (360*k)/n.
3. The chord between the vertices subtends an angle with half the value of the angle subtended at the center at the third vertex which is a point on the circumference on the circumcircle.
4. Let the angle obtained in this manner be a = (180*x)/n where k is number of edges between i and k.
5. Similarly for the opposite vertex we get the angle to be b = (180*y)/n where l is number of edges between j and k.
6. The angle between the three vertices thus equals 180-a-b.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach` `#include ``using` `namespace` `std;` `// Function that checks whether given angle``// can be created using any 3 sides``double` `calculate_angle(``int` `n, ``int` `i, ``int` `j, ``int` `k)``{``    ``// Initialize x and y``    ``int` `x, y;` `    ``// Calculate the number of vertices``    ``// between i and j, j and k``    ``if` `(i < j)``        ``x = j - i;``    ``else``        ``x = j + n - i;``    ``if` `(j < k)``        ``y = k - j;``    ``else``        ``y = k + n - j;` `    ``// Calculate the angle subtended``    ``// at the circumference``    ``double` `ang1 = (180 * x) / n;``    ``double` `ang2 = (180 * y) / n;` `    ``// Angle subtended at j can be found``    ``// using the fact that the sum of angles``    ``// of a triangle is equal to 180 degrees``    ``double` `ans = 180 - ang1 - ang2;``    ``return` `ans;``}` `// Driver code``int` `main()``{``    ``int` `n = 5;``    ``int` `a1 = 1;``    ``int` `a2 = 2;``    ``int` `a3 = 5;` `    ``cout << calculate_angle(n, a1, a2, a3);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG``{` `// Function that checks whether given angle``// can be created using any 3 sides``static` `double` `calculate_angle(``int` `n, ``int` `i,``                              ``int` `j, ``int` `k)``{``    ``// Initialize x and y``    ``int` `x, y;` `    ``// Calculate the number of vertices``    ``// between i and j, j and k``    ``if` `(i < j)``        ``x = j - i;``    ``else``        ``x = j + n - i;``    ``if` `(j < k)``        ``y = k - j;``    ``else``        ``y = k + n - j;` `    ``// Calculate the angle subtended``    ``// at the circumference``    ``double` `ang1 = (``180` `* x) / n;``    ``double` `ang2 = (``180` `* y) / n;` `    ``// Angle subtended at j can be found``    ``// using the fact that the sum of angles``    ``// of a triangle is equal to 180 degrees``    ``double` `ans = ``180` `- ang1 - ang2;``    ``return` `ans;``}` `// Driver code``public` `static` `void` `main (String[] args)``{``    ``int` `n = ``5``;``    ``int` `a1 = ``1``;``    ``int` `a2 = ``2``;``    ``int` `a3 = ``5``;` `    ``System.out.println((``int``)calculate_angle(n, a1, a2, a3));``}``}` `// This code is contributed by Rajput-Ji`

## Python3

 `# Python3 implementation of the approach` `# Function that checks whether given angle``# can be created using any 3 sides``def` `calculate_angle(n, i, j, k):``    ` `    ``# Initialize x and y``    ``x, y ``=` `0``, ``0`` ` `    ``# Calculate the number of vertices``    ``# between i and j, j and k``    ``if` `(i < j):``        ``x ``=` `j ``-` `i``    ``else``:``        ``x ``=` `j ``+` `n ``-` `i``    ``if` `(j < k):``        ``y ``=` `k ``-` `j``    ``else``:``        ``y ``=` `k ``+` `n ``-` `j` `    ``# Calculate the angle subtended``    ``# at the circumference``    ``ang1 ``=` `(``180` `*` `x) ``/``/` `n``    ``ang2 ``=` `(``180` `*` `y) ``/``/` `n` `    ``# Angle subtended at j can be found``    ``# using the fact that the sum of angles``    ``# of a triangle is equal to 180 degrees``    ``ans ``=` `180` `-` `ang1 ``-` `ang2``    ``return` `ans` `# Driver code``n ``=` `5``a1 ``=` `1``a2 ``=` `2``a3 ``=` `5` `print``(calculate_angle(n, a1, a2, a3))` `# This code is contributed by Mohit Kumar`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{` `// Function that checks whether given angle``// can be created using any 3 sides``static` `double` `calculate_angle(``int` `n, ``int` `i,``                              ``int` `j, ``int` `k)``{``    ``// Initialize x and y``    ``int` `x, y;` `    ``// Calculate the number of vertices``    ``// between i and j, j and k``    ``if` `(i < j)``        ``x = j - i;``    ``else``        ``x = j + n - i;``    ``if` `(j < k)``        ``y = k - j;``    ``else``        ``y = k + n - j;` `    ``// Calculate the angle subtended``    ``// at the circumference``    ``double` `ang1 = (180 * x) / n;``    ``double` `ang2 = (180 * y) / n;` `    ``// Angle subtended at j can be found``    ``// using the fact that the sum of angles``    ``// of a triangle is equal to 180 degrees``    ``double` `ans = 180 - ang1 - ang2;``    ``return` `ans;``}` `// Driver code``public` `static` `void` `Main ()``{``    ``int` `n = 5;``    ``int` `a1 = 1;``    ``int` `a2 = 2;``    ``int` `a3 = 5;` `    ``Console.WriteLine((``int``)calculate_angle(n, a1, a2, a3));``}``}` `// This code is contributed by ihritik`

## Javascript

 ``

Output:

`36`

Time Complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up