Open In App

Largest cube that can be inscribed within a right circular cone

Last Updated : 28 Aug, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given a right circular cone of radius r and perpendicular height h. We have to find the side length of the biggest cube that can be inscribed within it.
Examples
 

Input : h = 5, r = 6
Output : 3.14613

Input : h = 8, r = 12
Output : 5.43698

 

 

Approach
Let, side of the cube = a.
From the diagram, we can clearly understand using the properties of triangles: BC/AB = DE/AD.
Therefore, 
 

r/h = (a/?2)/(h-a)

or, a = h*r?2/(h+?2*r)

Below is the implementation of the above approach: 
 

C++




// C++ Program to find the biggest cube
// inscribed within a right circular cone
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the side of the cube
float cubeSide(float h, float r)
{
    // height and radius cannot be negative
    if (h < 0 && r < 0)
        return -1;
 
    // side of the cube
    float a = (h * r * sqrt(2)) / (h + sqrt(2) * r);
 
    return a;
}
 
// Driver code
int main()
{
    float h = 5, r = 6;
 
    cout << cubeSide(h, r) << endl;
 
    return 0;
}


Java




// Java Program to find the biggest cube
// which can be inscribed within a right circular cone
 
import java.io.*;
 
class GFG {
 
 
// Function to find the side of the cube
 
static float cube(float h, float r)
{
 
    // height and radius cannot be negative
    if (h < 0 && r < 0)
        return -1;
 
 // side of the cube
    float a = (h * r * (float)Math.sqrt(2)) / (h + (float)Math.sqrt(2) * r);
   
    return a;
}
 
// Driver code
   
    public static void main (String[] args) {
          float h = 5, r = 6;
    System.out.println( cube(h, r));
    }
}
 
// this article is contributed by Ishwar Gupta


Python 3




# Python3 Program to find the biggest cube
# inscribed within a right circular cone
import math
 
# Function to find the side of the cube
def cubeSide(h, r):
 
    # height and radius cannot
    # be negative
    if (h < 0 and r < 0):
        return -1
 
    # side of the cube
    a = ((h * r * math.sqrt(2)) /
         (h + math.sqrt(2) * r))
 
    return a
 
# Driver code
h = 5; r = 6;
 
print(cubeSide(h, r), "\n")
 
# This code is contributed
# by Akanksha Rai


C#




// C# Program to find the 
// biggest cube which can be
// inscribed within a right
// circular cone
using System;
 
class GFG
{
 
// Function to find the side
// of the cube
static float cube(float h, float r)
{
 
// height and radius cannot be negative
if (h < 0 && r < 0)
    return -1;
 
// side of the cube
float a = (h * r * (float)Math.Sqrt(2)) /
          (h + (float)Math.Sqrt(2) * r);
 
    return a;
}
 
// Driver code
public static void Main ()
{
    float h = 5, r = 6;
    Console.Write( cube(h, r));
}
}
 
// This code is contributed
// by 29AjayKumar


PHP




<?php
// PHP Program to find the biggest cube
// inscribed within a right circular cone
 
// Function to find the side of the cube
function cubeSide($h, $r)
{
    // height and radius cannot
    // be negative
    if ($h < 0 && $r < 0)
        return -1;
 
    // side of the cube
    $a = ($h * $r * sqrt(2)) /
         ($h + sqrt(2) * $r);
 
    return $a;
}
 
// Driver code
$h = 5;
$r = 6;
 
echo cubeSide($h, $r);
 
// This code is contributed
// by Shivi_Aggarwal
?>


Javascript




<script>
 
// javascript Program to find the biggest cube
// which can be inscribed within a right circular cone
 
// Function to find the side of the cube
 
function cube(h , r)
{
 
    // height and radius cannot be negative
    if (h < 0 && r < 0)
        return -1;
 
 // side of the cube
    var a = (h * r * Math.sqrt(2)) / (h + Math.sqrt(2) * r);
   
    return a;
}
 
// Driver code
   
var h = 5, r = 6;
document.write( cube(h, r).toFixed(5));
 
// This code is contributed by 29AjayKumar
 
</script>


Output: 

3.14613

 

Time Complexity: O(1)

Auxiliary Space: O(1), since no extra space has been taken.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads