Given here is a right circular cone of radius r and perpendicular height h, which is inscribed in a cube which in turn is inscribed in a sphere, the task is to find the radius of the sphere.
Examples:
Input: h = 5, r = 6 Output: 1.57306 Input: h = 8, r = 11 Output: 2.64156
Approach:
- Let the side of the cube = a
- Let the radius of the sphere = R
- We know, a=h*r?2/(h+?2*r)(Please refer here)
- Also, R=a/2(Please refer here)
- So, R = (h*r?2/(h+?2*r))/2
Below is the implementation of the above approach:
C++
// C++ Program to find the biggest sphere // which is inscribed within a cube which in turn // inscribed within a right circular cone #include <bits/stdc++.h> using namespace std;
// Function to find the radius of the sphere float sphereSide( float h, float r)
{ // height and radius cannot be negative
if (h < 0 && r < 0)
return -1;
// radius of the sphere
float R = ((h * r * sqrt (2)) / (h + sqrt (2) * r)) / 2;
return R;
} // Driver code int main()
{ float h = 5, r = 6;
cout << sphereSide(h, r) << endl;
return 0;
} |
Java
// Java Program to find the biggest sphere // which is inscribed within a cube which in turn // inscribed within a right circular cone import java.lang.Math;
class GFG
{ // Function to find the radius of the sphere static float sphereSide( float h, float r)
{ // height and radius cannot be negative
if (h < 0 && r < 0 )
return - 1 ;
// radius of the sphere
float R = ( float )((h * r * Math.sqrt( 2 )) /
(h + Math.sqrt( 2 ) * r)) / 2 ;
return R;
} // Driver code public static void main(String[] args)
{ float h = 5 , r = 6 ;
System.out.println(sphereSide(h, r));
} } // This code is contributed by Code_Mech. |
Python3
# Program to find the biggest sphere # which is inscribed within a cube which in turn # inscribed within a right circular cone import math
# Function to find the radius of the sphere def sphereSide(h, r):
# height and radius cannot be negative
if h < 0 and r < 0 :
return - 1
# radius of the sphere
R = (((h * r * math.sqrt( 2 ))) /
(h + math.sqrt( 2 ) * r) / 2 )
return R
# Driver code h = 5 ; r = 6
print (sphereSide(h, r))
# This code is contributed by Shrikant13 |
C#
// C# Program to find the biggest sphere // which is inscribed within a cube which in turn // inscribed within a right circular cone using System;
class GFG
{ // Function to find the radius of the sphere static float sphereSide( float h, float r)
{ // height and radius cannot be negative
if (h < 0 && r < 0)
return -1;
// radius of the sphere
float R = ( float )((h * r * Math.Sqrt(2)) /
(h + Math.Sqrt(2) * r)) / 2;
return R;
} // Driver code public static void Main()
{ float h = 5, r = 6;
Console.WriteLine(sphereSide(h, r));
} } // This code is contributed by Code_Mech |
PHP
<?php // PHP Program to find the biggest sphere // which is inscribed within a cube which in turn // inscribed within a right circular cone // Function to find the radius of the sphere function sphereSide( $h , $r )
{ // height and radius cannot be negative
if ( $h < 0 && $r < 0)
return -1;
// radius of the sphere
$R = (( $h * $r * sqrt(2)) /
( $h + sqrt(2) * $r )) / 2;
return $R ;
} // Driver code $h = 5; $r = 6;
echo (sphereSide( $h , $r ));
// This code is contributed by Code_Mech. ?> |
Javascript
<script> // javascript Program to find the biggest sphere // which is inscribed within a cube which in turn // inscribed within a right circular cone // Function to find the radius of the sphere function sphereSide(h , r)
{ // height and radius cannot be negative
if (h < 0 && r < 0)
return -1;
// radius of the sphere
var R = ((h * r * Math.sqrt(2)) /
(h + Math.sqrt(2) * r)) / 2;
return R;
} // Driver code var h = 5, r = 6;
document.write(sphereSide(h, r).toFixed(5)); // This code is contributed by Amit Katiyar </script> |
Output
1.57306
Time Complexity: O(1)
Auxiliary Space: O(1)