Open In App

Area of largest Circle inscribe in N-sided Regular polygon

Improve
Improve
Like Article
Like
Save
Share
Report

Given a regular polygon of N sides with side length a. The task is to find the area of the Circle which inscribed in the polygon. 
Note : This problem is mixed version of This and This 
Examples: 
 

Input: N = 6, a = 4
Output: 37.6801
Explanation:

In this, the polygon have 6 faces 
and as we see in fig.1 we clearly see 
that the angle  x  is 30 degree  
so the radius of circle will be ( a / (2  * tan(30))) 
Therefore, r = a?3/2

Input: N = 8, a = 8
Output: 292.81
Explanation:

In this, the polygon have 8 faces 
and as we see in fig.2 we clearly see 
that the angle  x  is 22.5 degree  
so the radius of circle will be ( a / (2  * tan(22.5))) 
Therefore, r = a/0.828

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 x = 180/n 
Now, tan(x) = (a / 2) * r
So, r = a / ( 2 * tan(x))
So, Area of the Inscribed Circle is, 
 

 A = ?r² = ? * (a / (2 * tan(x))) * (a / (2*tan(x)))

Below is the implementation of the above approach: 
 

C++




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


Java




// Java Program to find the area of a circle
// inscribed in a polygon
import java.io.*;
 
class GFG {
 
    // Function to find the area
    // of a regular polygon
    static float InscribedCircleArea(float n, float a)
    {
        // Side and side length cannot be negative
        if (a < 0 && n < 0)
            return -1;
 
        // degree converted to radians
        float r = a / (float)(2 * Math.tan((180 / n) * 3.14159 / 180));
 
        // area of circle
        float Area = (float)(3.14) * (r) * (r);
 
        return Area;
    }
 
    // Driver code
 
    public static void main(String[] args)
    {
 
        // no.  of sides
        float n = 6;
 
        // side length
        float a = 4;
 
        System.out.println(InscribedCircleArea(n, a));
    }
}


Python3




# Python 3 Program to find the area
# of a circle inscribed
# in a polygon
from math import tan
 
# Function to find the area of a
# circle
def InscribedCircleArea(n, a):
    # Side and side length cannot
    # be negative
    if (a < 0 and n < 0):
        return -1
 
    # degree converted to radians
    r = a/(2 * tan((180 / n) * 3.14159 / 180));
 
    # area of circle
    Area = 3.14 * r * r
 
    return Area
 
# Driver code
if __name__ == '__main__':
    a = 4
    n = 6
 
    print('{0:.6}'.format(InscribedCircleArea(n, a)))
 
# This code is contributed by
# Chandan Agrawal


C#




// C# Program to find the area of a circle
// inscribed in a polygon
using System;
 
class GFG
{
 
// Function to find the area
// of a regular polygon
static float InscribedCircleArea(float n, float a)
{
    // Side and side length cannot be negative
    if (a < 0 && n < 0)
        return -1;
 
    // degree converted to radians
    float r = a / (float)(2 * Math.Tan((180 / n) *
                                 3.14159 / 180));
 
    // area of circle
    float Area = (float)(3.14) * (r) * (r);
 
    return Area;
}
 
// Driver code
public static void Main()
{
 
    // no. of sides
    float n = 6;
 
    // side length
    float a = 4;
 
    Console.WriteLine(InscribedCircleArea(n, a));
}
}
 
// This code is contributed by Ryuga


PHP




<?php
// PHP Program to find the area
// of a circle inscribed
// in a polygon
 
// Function to find the area of a
// circle
function InscribedCircleArea($n, $a)
{
    // Side and side length cannot
    // be negative
    if ($a < 0 && $n < 0)
        return -1;
 
    // degree converted to radians
    $r = $a / (2 * tan((180 / $n) * 3.14159 / 180));
 
    // area of circle
    $Area = 3.14 * $r * $r;
 
    return $Area;
}
 
// Driver code
$a = 4;
$n = 6;
echo(InscribedCircleArea($n, $a));
 
// This code contributed by PrinciRaj1992
?>


Javascript




<script>
// Javascript Program to find the area of a circle
// inscribed in a polygon
 
    // Function to find the area
    // of a regular polygon
    function InscribedCircleArea( n ,a)
    {
     
        // Side and side length cannot be negative
        if (a < 0 && n < 0)
            return -1;
 
        // degree converted to radians
        let r = a /  (2 * Math.tan((180 / n) * 3.14159 / 180));
 
        // area of circle
        let Area =  (3.14) * (r) * (r);
        return Area;
    }
 
    // Driver code
 
    // no. of sides
    let n = 6;
 
    // side length
    let a = 4;
 
    document.write(InscribedCircleArea(n, a).toFixed(4));
     
// This code is contributed by 29AjayKumar
</script>


Output: 

37.6801

 

Time Complexity: O(1)
Auxiliary Space: O(1)



Last Updated : 09 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads