Área del círculo más grande inscrito en un polígono regular de N lados

Dado un polígono regular de N lados con longitud de lado a . La tarea es encontrar el área del círculo que se inscribe en el polígono. 
Nota: este problema es una versión mixta de este y este  
ejemplos: 
 

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

Planteamiento : En la figura de arriba, vemos que el polígono se puede dividir en N triángulos iguales. Mirando uno de los triángulos, vemos que todo el ángulo en el centro se puede dividir en = 360/N
Entonces, el ángulo x = 180/n 
Ahora, tan(x) = (a / 2) * r
Entonces, r = a / ( 2 * tan(x))
Entonces, el área del círculo inscrito es, 
 

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

A continuación se muestra la implementación del enfoque anterior: 
 

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>
Producción: 

37.6801

 

Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)

Publicación traducida automáticamente

Artículo escrito por Chandan_Agrawal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *