📜  五角星形的面积

📅  最后修改于: 2021-04-27 16:52:18             🧑  作者: Mango

给定一个五角星形,它的内侧长度是(d)。任务是找出五角星的区域。五角星是五点星,是通过在五个直线段中画一条连续线而形成的。

例子:

想法是在a / b,b / c和c / d之间使用黄金分割率,大约等于1.618
内边长度d给出为
c = 1.618 * d
b = 1.618 * c
a = 1.618 * b

AB,BC和CD相等(正五边形的两边)
因此,AB = BC = CD = c,而BD由d给出。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
#define PI 3.14159
using namespace std;
  
// Function to return the area of triangle BCD
double areaOfTriangle(float d)
{
    // Using Golden ratio
    float c = 1.618 * d;
    float s = (d + c + c) / 2;
  
    // Calculate area of triangle BCD
    double area = sqrt(s * (s - c) *
                          (s - c) * (s - d));
  
    // Return area of all 5 trianlge are same
    return 5 * area;
}
  
// Function to return the area of regular pentagon
double areaOfRegPentagon(float d)
{
    // Calculate the area of regular
    // pentagon using above formula
    double cal = 4 * tan(PI / 5);
    double area = (5 * d * d) / cal;
  
    // Return area of regular pentagon
    return area;
}
  
// Function to return the area of pentagram
double areaOfPentagram(float d)
{
    // Area of a pentagram is equal to the 
    // area of regular  pentagon and five times 
    // the area of Triangle
    return areaOfRegPentagon(d) + 
                             areaOfTriangle(d);
}
  
// Driver code
int main()
{
    float d = 5;
    cout << areaOfPentagram(d) << endl;
  
    return 0;
}


Java
// Java implemenation of above approach
public class GFG 
{
  
    static double PI = 3.14159;
  
    // Function to return the area of triangle BCD
    static double areaOfTriangle(float d) 
    {
        // Using Golden ratio
        float c = (float) (1.618 * d);
        float s = (d + c + c) / 2;
  
        // Calculate area of triangle BCD
        double area = Math.sqrt(s * (s - c)
                * (s - c) * (s - d));
  
        // Return area of all 5 trianlge are same
        return 5 * area;
    }
  
    // Function to return the area of regular pentagon
    static double areaOfRegPentagon(float d)
    {
        // Calculate the area of regular
        // pentagon using above formula
        double cal = 4 * Math.tan(PI / 5);
        double area = (5 * d * d) / cal;
  
        // Return area of regular pentagon
        return area;
    }
  
    // Function to return the area of pentagram
    static double areaOfPentagram(float d) 
    {
        // Area of a pentagram is equal to the 
        // area of regular pentagon and five times 
        // the area of Triangle
        return areaOfRegPentagon(d)
                + areaOfTriangle(d);
    }
  
    // Driver code
    public static void main(String[] args) 
    {
        float d = 5;
        System.out.println(areaOfPentagram(d));
    }
}
  
// This code has been contributed by 29AjayKumar


Python
# Python3 implementation of the approach
  
import math
  
PI = 3.14159
  
# Function to return the area of triangle BCD
def areaOfTriangle(d) :
  
    # Using Golden ratio
    c = 1.618 * d
    s = (d + c + c) / 2
  
    # Calculate area of triangle BCD
    area = math.sqrt(s * (s - c) *
                        (s - c) * (s - d))
  
    # Return area of all 5 triangles are the same
    return 5 * area
  
  
# Function to return the area of regular pentagon
def areaOfRegPentagon(d) :
      
    global PI
    # Calculate the area of regular
    # pentagon using above formula
    cal = 4 * math.tan(PI / 5)
    area = (5 * d * d) / cal
      
    # Return area of regular pentagon
    return area
  
  
# Function to return the area of pentagram
def areaOfPentagram(d) :
  
    # Area of a pentagram is equal to the 
    # area of regular pentagon and five times 
    # the area of Triangle
    return areaOfRegPentagon(d) + areaOfTriangle(d)
  
  
# Driver code
  
d = 5
print(areaOfPentagram(d)) 
  
      
# This code is contributed by ihritik


C#
// C# implementation of the above approach
using System;
  
class GFG 
{
  
    static double PI = 3.14159;
  
    // Function to return the area of triangle BCD
    static double areaOfTriangle(float d) 
    {
        // Using Golden ratio
        float c = (float) (1.618 * d);
        float s = (d + c + c) / 2;
  
        // Calculate area of triangle BCD
        double area = Math.Sqrt(s * (s - c)
                * (s - c) * (s - d));
  
        // Return area of all 5 trianlge are same
        return 5 * area;
    }
  
    // Function to return the area of regular pentagon
    static double areaOfRegPentagon(float d)
    {
        // Calculate the area of regular
        // pentagon using above formula
        double cal = 4 * Math.Tan(PI / 5);
        double area = (5 * d * d) / cal;
  
        // Return area of regular pentagon
        return area;
    }
  
    // Function to return the area of pentagram
    static double areaOfPentagram(float d) 
    {
        // Area of a pentagram is equal to the 
        // area of regular pentagon and five times 
        // the area of Triangle
        return areaOfRegPentagon(d)
                + areaOfTriangle(d);
    }
  
    // Driver code
    public static void Main()
    {
        float d = 5;
        Console.WriteLine(areaOfPentagram(d));
    }
}
  
// This code has been contributed by ihritik


输出:
139.187

时间复杂度: O(1)