Length of Diagonal of a n-sided regular polygon

Given a n-sided regular polygon of side length a.The task is to find the length of it’s diagonal.

Examples:

Input:  a = 9, n = 10
Output:  17.119

Input: a = 4, n = 5
Output: 6.47213

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

We know that the sum of interior angles of a polygon = (n – 2) * 180 where, n is the no. of sides in the polygon.
So, each interior angle = (n – 2) * 180/n
Now, we have to find BC = 2 * x. If we draw a perpendicular AO on BC, we will see that the perpendicular bisects BC in BO and OC, as triangles AOB and AOC are congruent to each other.
Now, t = (n – 2) * 180/2n
So, sint = x/a
Therefore, x = asint
Hence, diagonal=2x = 2asint = 2asin((n – 2) * 180/2n)

C++

 // C++ Program to find the diagonal // of a regular polygon with given side length #include using namespace std;    // Function to find the diagonal // of a regular polygon float polydiagonal(float n, float a) {        // Side and side length cannot be negative     if (a < 0 && n < 0)         return -1;        // diagonal     // degree converted to radians     return 2 * a * sin((((n - 2) * 180) / (2 * n)) * 3.14159 / 180); }    // Driver code int main() {     float a = 9, n = 10;     cout << polydiagonal(n, a) << endl;        return 0; }

Java

 // Java Program to find the diagonal // of a regular polygon with given side length    class GFG {    // Function to find the diagonal // of a regular polygon     static float polydiagonal(float n, float a) {            // Side and side length cannot be negative         if (a < 0 && n < 0) {             return -1;         }            // diagonal         // degree converted to radians         return (float) (2 * a * Math.sin((((n - 2) * 180) / (2 * n)) * 3.14159 / 180));     }    // Driver code     public static void main(String[] args) {         float a = 9, n = 10;         System.out.printf("%.3f",polydiagonal(n, a));        } }     // This code is contributed by 29AjayKumar

Python3

 # Python3 Program to find the diagonal  # of a regular polygon with given side length  import math as mt    # Function to find the diagonal  # of a regular polygon def polydiagonal(n, a):         # Side and side length cannot      # be negative      if (a < 0 and n < 0):          return -1        # diagonal degree converted to radians      return (2 * a * mt.sin((((n - 2) * 180) /             (2 * n)) * 3.14159 / 180))     # Driver code  a, n = 9, 10 print(polydiagonal(n, a))    # This code is contributed # by Mohit kumar 29

C#

 // C#  Program to find the diagonal // of a regular polygon with given side length using System;    public class GFG{        // Function to find the diagonal // of a regular polygon     static float polydiagonal(float n, float a) {            // Side and side length cannot be negative         if (a < 0 && n < 0) {             return -1;         }            // diagonal         // degree converted to radians         return (float) (2 * a * Math.Sin((((n - 2) * 180) / (2 * n)) * 3.14159 / 180));     }    // Driver code     static public void Main (){             float a = 9, n = 10;         Console.WriteLine(polydiagonal(n, a));        } }     // This code is contributed by  @Sachin...

PHP



Output:

17.119

My Personal Notes arrow_drop_up

Budding Web DeveloperKeen learnerAverage CoderDancer&Social Activist

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.