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 = 10Output:17.119Input:a = 4, n = 5Output:6.47213

**Approach**:

We know that the sum of interior angles of a polygon =

(n – 2) * 180where,nis the no. of sides in the polygon.

So, each interior angle =(n – 2) * 180/n

Now, we have to findBC = 2 * x. If we draw a perpendicularAOonBC, we will see that the perpendicular bisectsBCinBOandOC, as trianglesAOBandAOCare 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 <bits/stdc++.h> ` `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; ` `} ` |

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

## 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... ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP Program to find the diagonal of a ` `// regular polygon with given side length ` ` ` `// Function to find the diagonal ` `// of a regular polygon ` `function` `polydiagonal (` `$n` `, ` `$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 ` `$a` `= 9; ` `$n` `= 10; ` `echo` `polydiagonal(` `$n` `, ` `$a` `); ` ` ` `// This code is contributed ` `// by Sach_Code ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

17.119

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.

## Recommended Posts:

- Length of a Diagonal of a Parallelogram using the length of Sides and the other Diagonal
- Area of a n-sided regular polygon with given side length
- Filling diagonal to make the sum of every row, column and diagonal equal of 3x3 matrix
- Maximum sum of elements in a diagonal parallel to the main diagonal of a given Matrix
- Diagonal of a Regular Pentagon
- Diagonal of a Regular Hexagon
- Diagonal of a Regular Heptagon
- Diagonal of a Regular Decagon
- Regular polygon using only 1s in a binary numbered circle
- Program to find the Interior and Exterior Angle of a Regular Polygon
- Program to find the Circumcircle of any regular polygon
- Program to find the Perimeter of a Regular Polygon
- Program to find Area of Triangle inscribed in N-sided Regular Polygon
- Side of a regular n-sided polygon circumscribed in a circle
- Area of a n-sided regular polygon with given Radius
- Apothem of a n-sided regular polygon
- Area of largest Circle inscribe in N-sided Regular polygon
- Determine the position of the third person on regular N sided polygon
- Angle between 3 given vertices in a n-sided regular polygon
- Number of occurrences of a given angle formed using 3 vertices of a n-sided regular polygon

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.