Area of a n-sided regular polygon with given side length

Given a regular polygon of N sides with side length a. The task is to find the area of the polygon.

Examples:

Input : N = 6, a = 9
Output : 210.444

Input : N = 7, a = 8
Output : 232.571



Approach: In the figure above, we see the polygon can be divided into N equal triangles. Looking into one of the triangles, we see that the whole angle at the center can be divided into = 360/N

So, angle t = 180/n
Now, tan(t) = a/2*h

So, h = a/(2*tan(t))

Area of each triangle = (base * height)/2 = a * a/(4*tan(t))
So, area of the polygon,

A = n * (area of one triangle) = a2 * n/(4tan t)

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ Program to find the area of a regular
// polygon with given side length
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to find the area
// of a regular polygon
float polyarea(float n, float a)
{
    // Side and side length cannot be negative
    if (a < 0 && n < 0)
        return -1;
  
    // Area
    // degree converted to radians
    float A = (a * a * n) / (4 * tan((180 / n) * 3.14159 / 180));
  
    return A;
}
  
// Driver code
int main()
{
    float a = 9, n = 6;
  
    cout << polyarea(n, a) << endl;
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java  Program to find the area of a regular
// polygon with given side length
  
import java.io.*;
  
class GFG {
    
  
// Function to find the area
// of a regular polygon
static float polyarea(float n, float a)
{
    // Side and side length cannot be negative
    if (a < 0 && n < 0)
        return -1;
  
    // Area
    // degree converted to radians
    float A = (a * a * n) /(float) (4 * Math.tan((180 / n) * 3.14159 / 180));
  
    return A;
}
  
// Driver code
  
    public static void main (String[] args) {
    float a = 9, n = 6;
  
    System.out.println( polyarea(n, a));
    }
}
// This code is contributed by inder_verma..

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 Program to find the area 
# of a regular polygon with given
# side length
from math import tan
  
# Function to find the area of a 
# regular polygon
def polyarea(n, a):
      
    # Side and side length cannot 
    # be negative
    if (a < 0 and n < 0):
        return -1
  
    # Area degree converted to radians
    A = (a * a * n) / (4 * tan((180 / n) *
                      3.14159 / 180))
  
    return A
  
# Driver code
if __name__ == '__main__':
    a = 9
    n = 6
  
    print('{0:.6}'.format(polyarea(n, a)))
  
# This code is contributed by
# Shashank_sharma

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to find the area of a regular
// polygon with given side length
using System;
  
class GFG 
{
  
// Function to find the area
// of a regular polygon
static float polyarea(float n, float a)
{
    // Side and side length cannot be negative
    if (a < 0 && n < 0)
        return -1;
  
    // Area
    // degree converted to radians
    float A = (a * a * n) / (float)(4 * Math.Tan((180 / n) *
                                           3.14159 / 180));
  
    return A;
}
  
// Driver code
public static void Main ()
{
    float a = 9, n = 6;
      
    Console.WriteLine(polyarea(n, a));
}
}
  
// This code is contributed
// by Akanksha Rai

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP Program to find the area of a regular 
// polygon with given side length 
  
// Function to find the area 
// of a regular polygon 
function polyarea($n, $a
    // Side and side length cannot
    // be negative 
    if ($a < 0 && $n < 0) 
        return -1; 
  
    // Area 
    // degree converted to radians 
    $A = ($a * $a * $n) / (4 * tan((180 / $n) * 
                              3.14159 / 180)); 
  
    return $A
  
// Driver code 
$a = 9 ;
$n = 6 ;
  
echo round(polyarea($n, $a), 3); 
  
// This code is contributed by Ryuga
?>

chevron_right


Output:

210.444


My Personal Notes arrow_drop_up

Budding Web DeveloperKeen learnerAverage CoderDancer&Social Activist

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.