Skip to content
Related Articles

Related Articles

Angle between 3 given vertices in a n-sided regular polygon
  • Last Updated : 04 Oct, 2019

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 seperated 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. Similarily 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
  
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output:

36

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :