📜  给定半径的n边规则多边形的面积

📅  最后修改于: 2021-04-22 09:16:45             🧑  作者: Mango

给定N边的规则多边形,其半径(从中心到任何顶点的距离)为R。任务是找到多边形的区域。
例子:

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

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

在图中,我们可以看到多边形可以分为N个相等的三角形。
查看三角形中的一个,我们看到中心的整个角度可以分为= 360 / N个部分。
因此,角度t = 180 / N。
观察其中一个三角形,我们看到,

h = rcost
a = rsint

我们知道,

area of the triangle = (base * height)/2 
                     = r2sin(t)cos(t)
                     = r2*sin(2t)/2

因此,多边形的面积:

A = n * (area of one triangle) 
  = n*r2*sin(2t)/2 
  = n*r2*sin(360/n)/2

下面是上述方法的实现:

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


Java
// Java Program to find the area
// of a regular polygon with given radius
 
import java.util.*;
class GFG
{
    // Function to find the area
    // of a regular polygon
    static double polyarea(double n, double r)
    {
        // Side and radius cannot be negative
        if (r < 0 && n < 0)
            return -1;
     
        // Area
        // degree converted to radians
        double A = ((r * r * n) * Math.sin((360 / n) * 3.14159 / 180)) / 2;
     
        return A;
    }
     
    // Driver code
    public static void main(String []args)
    {
        float r = 9, n = 6;
     
        System.out.println(polyarea(n, r));
     
         
    }
}
 
// This code is contributed
// By ihritik (Hritik Raj)


Python3
# Python3 Program to find the area
# of a regular polygon with given radius
 
# form math lib import sin function
from math import sin
 
# Function to find the area
# of a regular polygon
def polyarea(n, r) :
     
    # Side and radius cannot be negative
    if (r < 0 and n < 0) :
        return -1
 
    # Area
    # degree converted to radians
    A = (((r * r * n) * sin((360 / n) *
                 3.14159 / 180)) / 2);
 
    return round(A, 3)
 
# Driver code
if __name__ == "__main__" :
 
    r, n = 9, 6
    print(polyarea(n, r))
 
# This code is contributed by Ryuga


C#
// C# Program to find the area
// of a regular polygon with given radius
 
using System;
class GFG
{
    // Function to find the area
    // of a regular polygon
    static double polyarea(double n, double r)
    {
        // Side and radius cannot be negative
        if (r < 0 && n < 0)
            return -1;
     
        // Area
        // degree converted to radians
        double A = ((r * r * n) * Math.Sin((360 / n) * 3.14159 / 180)) / 2;
     
        return A;
    }
     
    // Driver code
    public static void Main()
    {
        float r = 9, n = 6;
     
        Console.WriteLine(polyarea(n, r));
     
         
    }
}
 
// This code is contributed
// By ihritik (Hritik Raj)


PHP


Javascript


输出:
210.444