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)
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 polygonfloat 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 codeint 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 lengthclass 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 polygondef 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, 10print(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 lengthusing 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
<?php// PHP Program to find the diagonal of a // regular polygon with given side length// Function to find the diagonal// of a regular polygonfunction 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?> |
Javascript
<script>// javascript Program to find the diagonal// of a regular polygon with given side length// Function to find the diagonal// of a regular polygonfunction 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 * Math.sin((((n - 2) * 180) / (2 * n)) * 3.14159 / 180));}// Driver code var a = 9, n = 10;document.write(polydiagonal(n, a).toFixed(3));// This code contributed by Princi Singh </script> |
17.119
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

