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

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)

filter_none

edit
close

play_arrow

link
brightness_4
code

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

edit
close

play_arrow

link
brightness_4
code

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

edit
close

play_arrow

link
brightness_4
code

# 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

edit
close

play_arrow

link
brightness_4
code

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

edit
close

play_arrow

link
brightness_4
code

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

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.





Program Analyst Trainee,Cognizant

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.



Article Tags :
Practice Tags :