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)
C++
#include <bits/stdc++.h>
using namespace std;
float polydiagonal( float n, float a)
{
if (a < 0 && n < 0)
return -1;
return 2 * a * sin ((((n - 2) * 180) / (2 * n)) * 3.14159 / 180);
}
int main()
{
float a = 9, n = 10;
cout << polydiagonal(n, a) << endl;
return 0;
}
|
Java
class GFG {
static float polydiagonal( float n, float a) {
if (a < 0 && n < 0 ) {
return - 1 ;
}
return ( float ) ( 2 * a * Math.sin((((n - 2 ) * 180 ) / ( 2 * n)) * 3.14159 / 180 ));
}
public static void main(String[] args) {
float a = 9 , n = 10 ;
System.out.printf( "%.3f" ,polydiagonal(n, a));
}
}
|
Python3
import math as mt
def polydiagonal(n, a):
if (a < 0 and n < 0 ):
return - 1
return ( 2 * a * mt.sin((((n - 2 ) * 180 ) /
( 2 * n)) * 3.14159 / 180 ))
a, n = 9 , 10
print (polydiagonal(n, a))
|
C#
using System;
public class GFG{
static float polydiagonal( float n, float a) {
if (a < 0 && n < 0) {
return -1;
}
return ( float ) (2 * a * Math.Sin((((n - 2) * 180) / (2 * n)) * 3.14159 / 180));
}
static public void Main (){
float a = 9, n = 10;
Console.WriteLine(polydiagonal(n, a));
}
}
|
PHP
<?php
function polydiagonal ( $n , $a )
{
if ( $a < 0 && $n < 0)
return -1;
return 2 * $a * sin(((( $n - 2) * 180) /
(2 * $n )) * 3.14159 / 180);
}
$a = 9;
$n = 10;
echo polydiagonal( $n , $a );
?>
|
Javascript
<script>
function polydiagonal(n , a) {
if (a < 0 && n < 0) {
return -1;
}
return (2 * a * Math.sin((((n - 2) * 180)
/ (2 * n)) * 3.14159 / 180));
}
var a = 9, n = 10;
document.write(polydiagonal(n, a).toFixed(3));
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Last Updated :
23 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...