Area of a Regular Pentagram
Given a Pentagram and its inner side length(d). The task is to find out the area of Pentagram. The Pentagram is a five-pointed star that is formed by drawing a continuous line in five straight segments.
Examples:
Input: d = 5
Output: Area = 139.187
Area of regular pentagram = 139.187Input: d = 7
Output: Area = 272.807
Idea is to use Golden Ratio between a/b, b/c, and c/d which equals approximately 1.618
Inner side length d is given so
c = 1.618 * d
b = 1.618 * c
a = 1.618 * b
AB, BC and CD are equal(both side of regular pentagram)
So AB = BC = CD = c and BD is given by d.
Area of pentagram = Area of Pentagon BDFHJ + 5 * (Area of triangle BCD)
Area of Pentagon BDFHJ = (d2 * 5)/ (4* tan 36)
Area of triangle BCD = [s(s-d)(s-c)(s-c)]1/2 {Heron’s Formula}
where
s = (d + c + c)/2
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> #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 triangle 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 implementation 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 triangle 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 |
Python3
# 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 triangle 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 |
Javascript
<script> // Javascript implementation of the approach var PI = 3.14159 // Function to return the area of triangle BCD function areaOfTriangle(d) { // Using Golden ratio var c = 1.618 * d; var s = (d + c + c) / 2; // Calculate area of triangle BCD var area = Math.sqrt(s * (s - c) * (s - c) * (s - d)); // Return area of all 5 triangle are same return 5 * area; } // Function to return the area of regular pentagon function areaOfRegPentagon( d) { // Calculate the area of regular // pentagon using above formula var cal = 4 * Math.tan(PI / 5); var area = (5 * d * d) / cal; // Return area of regular pentagon return area; } // Function to return the area of pentagram function 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 var d = 5; document.write(areaOfPentagram(d).toFixed(3)); // This code is contributed by ShubhamSingh10 </script> |
139.187
Time Complexity : O(log(N)), for using in-built sqrt() function.
Auxiliary Space: O(1)
Please Login to comment...