Largest Square that can be inscribed within a hexagon - GeeksforGeeks

17 Mar, 2021
Given a regular hexagonof side length a, the task is to find the area of the largest square that can be inscribed within it.Examples:  
Input: a = 6 Output: 57.8817Input: a = 8 Output: 102.901  
 
 
Approach: The square we will derive will have the same centre and axes of the hexagon. This is because the square will become smaller if we will rotate it.  
The sides of the hexagonal are equal i.e. a = b + c. Now, let d be the length of the side of the inscribed square, Then the top side of the square, d = 2 * c * sin(60). And, the left side of the square, d = a + 2 * b * sin(30). Substituting for c, d = 2 * (a – b) * sin(60). Now taking d and re-arranging, we get, b / a = (2 * sin(60) – 1) / (2 * (sin(30) + sin(60))) So, b / a = 2 – √3 Now, substituting the relation of b and a in the left hand side equation of square, we get, d / a = 3 – √3 i.e. d / a = 1.268 Therefore, d = 1.268 * a  
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ program to find the area of the largest square// that can be inscribed within the hexagon#include <bits/stdc++.h>using namespace std; // Function to find the area// of the squarefloat squareArea(float a){     // Side cannot be negative    if (a < 0)        return -1;     // Area of the square    float area = pow(1.268, 2) * pow(a, 2);    return area;} // Driver codeint main(){    float a = 6;    cout << squareArea(a) << endl;    return 0;}
// Java program to find the area of the largest square// that can be inscribed within the hexagonclass Solution {    // Function to find the area    // of the square    static float squareArea(float a)    {         // Side cannot be negative        if (a < 0)            return -1;         // Area of the square        float area = (float)(Math.pow(1.268, 2) * Math.pow(a, 2));        return area;    }     // Driver code    public static void main(String args[])    {        float a = 6;        System.out.println(squareArea(a));    }} // This code is contributed by Arnab Kundu
# Python program to find the area of the largest square# that can be inscribed within the hexagon # Function to find the area# of the squaredef squareArea(a):     # Side cannot be negative    if (a < 0):        return -1;     # Area of the square    area = (1.268 ** 2) * (a ** 2);    return area; # Driver codea = 6;print(squareArea(a)); # This code contributed by PrinciRaj1992
// C# program to find the area of the largest square// that can be inscribed within the hexagonusing System;class Solution {    // Function to find the area    // of the square    static float squareArea(float a)    {         // Side cannot be negative        if (a < 0)            return -1;         // Area of the square        float area = (float)(Math.Pow(1.268, 2) * Math.Pow(a, 2));        return area;    }     // Driver code    public static void Main()    {        float a = 6;        Console.WriteLine(squareArea(a));    }} // This code is contributed by  anuj_67..
<?php// PHP program to find the area of the largest square// that can be inscribed within the hexagon // Function to find the area// of the squarefunction squareArea($a){     // Side cannot be negative    if ($a < 0)        return -1;     // Area of the square    $area = pow(1.268, 2) * pow($a, 2);    return $area;} // Driver code$a = 6;echo squareArea($a), "\n"; // This code is contributed by Tushil?>
<script>// javascript program to find the area of the largest square// that can be inscribed within the hexagon // Function to find the area// of the squarefunction squareArea(a){   // Side cannot be negative  if (a < 0)  return -1;   // Area of the square  var area = (Math.pow(1.268, 2) * Math.pow(a, 2));  return area;} // Driver code var a = 6;document.write(squareArea(a).toFixed(5)); // This code is contributed by Princi Singh</script>
57.8817
 
andrew1234
vt_m
princiraj1992
jit_t
princi singh
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program for distance between two points on earth
Convex Hull | Set 1 (Jarvis's Algorithm or Wrapping)
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Convex Hull | Set 2 (Graham Scan)
Check whether a given point lies inside a triangle or not
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7