Esfera más grande que se puede inscribir dentro de un cubo que a su vez está inscrito dentro de un cono circular recto

Dado aquí es un cono circular recto de radio r y altura perpendicular h , que está inscrito en un cubo que a su vez está inscrito en una esfera, la tarea es encontrar el radio de la esfera.
Ejemplos: 
 

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

Input: h = 8, r = 11
Output: 2.64156

Enfoque
 

  • Sea el lado del cubo = a
  • Sea el radio de la esfera = R
  • Sabemos, a=h*r√2/(h+√2*r) (Consulte aquí)
  • Además, R=a/2 (consulte aquí)
  • Entonces, R = (h*r√2/(h+√2*r))/2

A continuación se muestra la implementación del enfoque anterior:
 

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>
Producción

1.57306

Complejidad de tiempo: O(logn)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por IshwarGupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *