Largest right circular cone that can be inscribed within a sphere

Given sphere of radius r. The task is to find the radius of base and height of the largest right circular cone that can be inscribed within it.

Examples:

Input : R = 10
Output : r = 9.42809, h = 13.3333

Input : R = 25
Output : r = 23.5702, h = 33.3333

Approach:

Let the radius of the cone = r
height of the cone = h

From the diagram it is clear that:
x = √(R^2 – r^2)
Now,

To maximize the volume of the cone(V):
V = (πr2h)/3

From the diagram,
V = (πr2R)/3 + πr2√(R2> – r2)/3

Taking derivative of V with respect to r we get,
dV/dr = 2πr(√(R2 – r2) + R)/3 – πr2√(R2 – r2)/3

Now, setting dV/dr = 0 we get,
r = 2√2R/3

since, h = R + √(R2 – r2)

So, h = 4R/3

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 cone
// that can be inscribed within a sphere
#include <bits/stdc++.h>
using namespace std;
  
// Function to find the radius of the cone
float coner(float R)
{
  
    // radius cannot be negative
    if (R < 0)
        return -1;
  
    // radius of the cone
    float r = (2 * sqrt(2) * R) / 3;
    return r;
}
  
// Function to find the height of the cone
float coneh(float R)
{
  
    // side cannot be negative
    if (R < 0)
        return -1;
  
    // height of the cone
    float h = (4 * R) / 3;
    return h;
}
  
// Driver code
int main()
{
    float R = 10;
  
    cout << "r = " << coner(R) << ", "
         << "h = " << coneh(R) << endl;
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to find the biggest cone
// that can be inscribed within a sphere
import java.util.*;
import java.lang.*;
  
class GFG
{
// Function to find the radius
// of the cone
static float coner(float R)
{
    // radius cannot be negative
    if (R < 0)
        return -1;
  
    // radius of the cone
    float r = (float)(2
            Math.sqrt(2) * R) / 3;
    return r;
}
  
// Function to find the 
// height of the cone
static float coneh(float R)
{
  
    // side cannot be negative
    if (R < 0)
        return -1;
  
    // height of the cone
    float h = (4 * R) / 3;
    return h;
}
  
// Driver code
public static void main(String args[])
{
    float R = 10;
  
    System.out.println("r = " + coner(R) + 
                       ", " + "h = " + coneh(R));
}
}
  
// This code is contributed 
// by Akanksha Rai

chevron_right


Python3

# Python 3 Program to find the biggest cone
# that can be inscribed within a sphere
import math

# Function to find the radius
# of the cone
def coner(R):

# radius cannot be negative
if (R < 0): return -1; # radius of the cone r = (2 * math.sqrt(2) * R) / 3 return float(r) # Function to find the height # of the cone def coneh(R): # side cannot be negative if (R < 0): return -1; # height of the cone h = (4 * R) / 3 return float(h) # Driver code R = 10 print("r = " , coner(R) , ", ", "h = " , coneh(R)) # This code is contributed # by 29AjayKumar [tabby title="C#"]

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to find the biggest cone
// that can be inscribed within a sphere
using System;
  
class GFG
{
// Function to find the radius
// of the cone
static float coner(float R)
{
    // radius cannot be negative
    if (R < 0)
        return -1;
  
    // radius of the cone
    float r = (float)(2 * 
               Math.Sqrt(2) * R) / 3;
    return r;
}
  
// Function to find the 
// height of the cone
static float coneh(float R)
{
  
    // side cannot be negative
    if (R < 0)
        return -1;
  
    // height of the cone
    float h = (4 * R) / 3;
    return h;
}
  
// Driver code
public static void Main()
{
    float R = 10;
  
    Console.WriteLine("r = " + coner(R) + 
                      ", " + "h = " + coneh(R));
}
}
  
// This code is contributed 
// by Akanksha Rai

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP Program to find the biggest 
// cone that can be inscribed 
// within a sphere
  
// Function to find the radius 
// of the cone
function coner($R)
{
  
    // radius cannot be negative
    if ($R < 0)
        return -1;
  
    // radius of the cone
    $r = (2 * sqrt(2) * $R) / 3;
    return $r;
}
  
// Function to find the height
// of the cone
function coneh($R)
{
  
    // side cannot be negative
    if ($R < 0)
        return -1;
  
    // height of the cone
    $h = (4 * $R) / 3;
    return $h;
}
  
// Driver code
$R = 10;
  
echo ("r = ");
echo coner($R);
echo (", ");
echo ("h = ");
echo (coneh($R));
  
// This code is contributed
// by Shivi_Aggarwal
?>

chevron_right


Output:

r = 9.42809, h = 13.3333


My Personal Notes arrow_drop_up

Budding Web DeveloperKeen learnerAverage CoderDancer&Social Activist

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.