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
- 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
- Central angle of a N sided Regular Polygon
- Check whether two convex regular polygon have same center or not

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.