Thursday, June 27, 2024
HomeData ModellingData Structure & AlgorithmLargest right circular cone that can be inscribed within a sphere which...

Largest right circular cone that can be inscribed within a sphere which is inscribed within a cube

Given a cube of side length a, which inscribes a sphere which in turn inscribes a right circular cone. The task is to find the largest possible volume of this cone.
Examples: 
 

Input:  a = 5
Output: 58.1481

Input: a = 8
Output: 238.175

 

Approach
Let, the height of right circular cone = h
Radius of the cone = r 
Radius of the sphere = R 
We, know radius of the sphere inside the cube, r = a/2. Please refer ( Largest sphere that can be inscribed inside a cube)
Also, height of cone inside the sphere, h = 4r/3
radius of cone inside the sphere, r = 2√2r/3. Please refer (Largest right circular cone that can be inscribed within a sphere)
So, height of the cone inside the sphere which in turn is inscribed within a cube, h = 2a/3
Radius of the cone inside the sphere which in turn is inscribed within a cube, r = √2a/3.
Below is the implementation of the above approach: 
 

C++




// C++ Program to find the biggest right circular cone
// that can be inscribed within a right circular cone
// which in turn is inscribed within a cube
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the biggest right circular cone
float cone(float a)
{
 
    // side cannot be negative
    if (a < 0)
        return -1;
 
    // radius of right circular cone
    float r = (a * sqrt(2)) / 3;
 
    // height of right circular cone
    float h = (2 * a) / 3;
 
    // volume of right circular cone
    float V = 3.14 * pow(r, 2) * h;
 
    return V;
}
 
// Driver code
int main()
{
    float a = 5;
    cout << cone(a) << endl;
 
    return 0;
}


Java




// Java Program to find the biggest right circular cone
// that can be inscribed within a right circular cone
// which in turn is inscribed within a cube
import java.io.*;
 
class GFG
{
     
// Function to find the biggest right circular cone
static float cone(float a)
{
 
    // side cannot be negative
    if (a < 0)
        return -1;
 
    // radius of right circular cone
    float r = (float) (a * Math.sqrt(2)) / 3;
 
    // height of right circular cone
    float h = (2 * a) / 3;
 
    // volume of right circular cone
    float V = (float)(3.14 *Math. pow(r, 2) * h);
 
    return V;
}
 
// Driver code
public static void main (String[] args)
{
    float a = 5;
    System.out.println( cone(a));
}
}
 
// This code is contributed by anuj_67..


Python3




# Python3 Program to find the biggest right
# circular cone that can be inscribed within
# a right circular cone which in turn is
# inscribed within a cube
import math
 
# Function to find the biggest
# right circular cone
def cone(a):
 
    # side cannot be negative
    if (a < 0):
        return -1;
 
    # radius of right circular cone
    r = (a * math.sqrt(2)) / 3;
 
    # height of right circular cone
    h = (2 * a) / 3;
 
    # volume of right circular cone
    V = 3.14 * math.pow(r, 2) * h;
 
    return V;
 
# Driver code
a = 5;
print(cone(a));
 
# This code is contributed by
# Shivi_Aggarwal


C#




// C# Program to find the biggest
// right circular cone that can be
// inscribed within a right circular cone
// which in turn is inscribed within a cube
using System;
 
class GFG
{
     
// Function to find the biggest
// right circular cone
static double cone(double a)
{
 
    // side cannot be negative
    if (a < 0)
        return -1;
 
    // radius of right circular cone
    double r = (double) (a * Math.Sqrt(2)) / 3;
 
    // height of right circular cone
    double h = (2 * a) / 3;
 
    // volume of right circular cone
    double V = (double)(3.14 * Math.Pow(r, 2) * h);
 
    return Math.Round(V,4);
}
 
// Driver code
static void Main ()
{
    double a = 5;
    Console.WriteLine(cone(a));
}
}
 
// This code is contributed by chandan_jnu


PHP




<?php
// PHP Program to find the biggest right
// circular cone that can be inscribed
// within a right circular cone which in
// turn is inscribed within a cube
 
// Function to find the biggest
// right circular cone
function cone($a)
{
 
    // side cannot be negative
    if ($a < 0)
        return -1;
 
    // radius of right circular cone
    $r = ($a * sqrt(2)) / 3;
 
    // height of right circular cone
    $h = (2 * $a) / 3;
 
    // volume of right circular cone
    $V = 3.14 * pow($r, 2) * $h;
 
    return $V;
}
 
// Driver code
$a = 5;
echo round(cone($a), 4);
 
// This code is contributed by Ryuga
?>


Javascript




<script>
 
// javascript Program to find the biggest right circular cone
// that can be inscribed within a right circular cone
// which in turn is inscribed within a cube
 
// Function to find the biggest right circular cone
function cone(a)
{
 
    // side cannot be negative
    if (a < 0)
        return -1;
 
    // radius of right circular cone
    var r =  (a * Math.sqrt(2)) / 3;
 
    // height of right circular cone
    var h = (2 * a) / 3;
 
    // volume of right circular cone
    var V = (3.14 *Math. pow(r, 2) * h);
 
    return V;
}
 
// Driver code
var a = 5;
document.write( cone(a).toFixed(5));
 
 
// This code is contributed by Amit Katiyar
 
</script>


Output: 

58.1481

 

Time Complexity: O(1)

Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Ted Musemwa
As a software developer I’m interested in the intersection of computational thinking and design thinking when solving human problems. As a professional I am guided by the principles of experiential learning; experience, reflect, conceptualise and experiment.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments