Related Articles

Related Articles

Largest cube that can be inscribed within a right circular cone
  • Last Updated : 03 Dec, 2018

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to find the 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) 
  
    // hegiht 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

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to find the 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) 
  
// hegiht 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right


Output:

3.14613

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :