Check whether a point lies inside a sphere or not

24 Mar, 2021
Given co-ordinates of the center of a sphere (cx, cy, cz) and its radius r. Our task is to check whether a point (x, y, z) lies inside, outside or on this sphere.Examples:  
Input : Centre(0, 0, 0) Radius 3
        Point(1, 1, 1)
Output :Point is inside the sphere

Input :Centre(0, 0, 0) Radius 3
       Point(2, 1, 2)
Output :Point lies on the sphere

Input :Centre(0, 0, 0) Radius 3
       Point(10, 10, 10)
Output :Point is outside the sphere
 
Approach: Whether a point lies inside a sphere or not, depends upon its distance from the centre. A point (x, y, z) is inside the sphere with center (cx, cy, cz) and radius r if  
( x-cx ) ^2 + (y-cy) ^2 + (z-cz) ^ 2 < r^2 
A point (x, y, z) lies on the sphere with center (cx, cy, cz) and radius r if  
( x-cx ) ^2 + (y-cy) ^2 + (z-cz) ^ 2 = r^2 
A point (x, y, z) is outside the sphere with center (cx, cy, cz) and radius r if  
( x-cx ) ^2 + (y-cy) ^2 + (z-cz) ^ 2 > r^2 
 
C++
Java
Python
C#
PHP
Javascript
// CPP code to illustrate above approach#include <bits/stdc++.h>using namespace std;// function to calculate the distance between centre and the pointint check(int cx, int cy, int cz, int x, int y, int z){    int x1 = pow((x - cx), 2);    int y1 = pow((y - cy), 2);    int z1 = pow((z - cz), 2);     // distance between the centre    // and given point    return (x1 + y1 + z1);} // Driver program to test above functionint main(){    // coordinates of centre    int cx = 1, cy = 2, cz = 3;     int r = 5; // radius of the sphere    int x = 4, y = 5, z = 2; // coordinates of point     int ans = check(cx, cy, cz, x, y, z);     // distance btw centre and point is less    // than radius    if (ans < (r * r))        cout << "Point is inside the sphere";     // distance btw centre and point is    // equal to radius    else if (ans == (r * r))        cout << "Point lies on the sphere";     // distance btw center and point is    // greater than radius    else        cout << "Point is outside the sphere";    return 0;}
// Java code to illustrate above approachimport java.io.*;import java.util.*;import java.lang.*; class GfG {         // function to calculate the distance    // between centre and the point    public static int check(int cx, int cy,                 int cz, int x, int y, int z)    {        int x1 = (int)Math.pow((x - cx), 2);        int y1 = (int)Math.pow((y - cy), 2);        int z1 = (int)Math.pow((z - cz), 2);             // distance between the centre        // and given point        return (x1 + y1 + z1);    }         // Driver program to test above function    public static void main(String[] args)    {        // coordinates of centre        int cx = 1, cy = 2, cz = 3;             int r = 5; // radius of the sphere                 // coordinates of point        int x = 4, y = 5, z = 2;             int ans = check(cx, cy, cz, x, y, z);             // distance btw centre and point is less        // than radius        if (ans < (r * r))            System.out.println("Point is inside"                       + " the sphere");             // distance btw centre and point is        // equal to radius        else if (ans == (r * r))            System.out.println("Point lies on"                        + " the sphere");             // distance btw center and point is        // greater than radius        else            System.out.println("Point is outside"                             + " the sphere");    }} // This code is contributed by Sagar Shukla.
# Python3 code to illustrate above approach import math# function to calculate distance btw center and given pointdef check(cx, cy, cz, x, y, z, ):         x1 = math.pow((x-cx), 2)    y1 = math.pow((y-cy), 2)    z1 = math.pow((z-cz), 2)    return (x1 + y1 + z1) # distance between the centre and given point     # driver code   cx = 1cy = 2 # coordinates of centrecz = 3 r = 5 # radius of sphere x = 4y = 5 # coordinates of the given pointz = 2# function call to calculate distance btw centre and given pointans = check(cx, cy, cz, x, y, z); # distance btw centre and point is less than radiusif ans<(r**2):    print("Point is inside the sphere") # distance btw centre and point is equal to radiuselif ans ==(r**2):    print("Point lies on the sphere") # distance btw centre and point is greater than radiuselse:    print("Point is outside the sphere")
// C# code to illustrate// above approachusing System; class GFG{         // function to calculate    // the distance between    // centre and the point    public static int check(int cx, int cy,                            int cz, int x,                            int y, int z)    {        int x1 = (int)Math.Pow((x - cx), 2);        int y1 = (int)Math.Pow((y - cy), 2);        int z1 = (int)Math.Pow((z - cz), 2);             // distance between the        // centre and given point        return (x1 + y1 + z1);    }         // Driver Code    public static void Main()    {        // coordinates of centre        int cx = 1, cy = 2, cz = 3;             int r = 5; // radius of the sphere                 // coordinates of point        int x = 4, y = 5, z = 2;             int ans = check(cx, cy, cz,                        x, y, z);             // distance btw centre        // and point is less        // than radius        if (ans < (r * r))            Console.WriteLine("Point is inside" +                                  " the sphere");             // distance btw centre        // and point is        // equal to radius        else if (ans == (r * r))            Console.WriteLine("Point lies on" +                                " the sphere");             // distance btw center        // and point is greater        // than radius        else            Console.WriteLine("Point is outside" +                                   " the sphere");    }} // This code is contributed by anuj_67.
<?php// function to calculate // the distance between// centre and the pointfunction check($cx, $cy, $cz,               $x, $y, $z){    $x1 = pow(($x - $cx), 2);    $y1 = pow(($y - $cy), 2);    $z1 = pow(($z - $cz), 2);     // distance between the    // centre and given point    return ($x1 + $y1 + $z1);} // Driver Code // coordinates of centre$cx = 1;$cy = 2;$cz = 3; $r = 5; // radius of the sphere$x = 4;$y = 5;$z = 2; // coordinates of point $ans = check($cx, $cy, $cz,             $x, $y, $z); // distance btw centre and// point is less than radiusif ($ans < ($r * $r))    echo "Point is inside " .                  "the sphere"; // distance btw centre and// point is equal to radiuselse if ($ans == ($r * $r))    echo "Point lies on the sphere"; // distance btw center and point// is greater than radiuselse    echo "Point is outside " .                 "the sphere";     // This code is contributed// by shiv_bhakt?>
<script> // Javascript code to illustrate above approach // function to calculate the distance between centre and the pointfunction check(cx, cy, cz, x, y, z){    let x1 = Math.pow((x - cx), 2);    let y1 = Math.pow((y - cy), 2);    let z1 = Math.pow((z - cz), 2);     // distance between the centre    // and given point    return (x1 + y1 + z1);} // Driver program to test above function      // coordinates of centre    let cx = 1, cy = 2, cz = 3;     let r = 5; // radius of the sphere    let x = 4, y = 5, z = 2; // coordinates of point     let ans = check(cx, cy, cz, x, y, z);     // distance btw centre and point is less    // than radius    if (ans < (r * r))        document.write("Point is inside the sphere");     // distance btw centre and point is    // equal to radius    else if (ans == (r * r))        document.write("Point lies on the sphere");     // distance btw center and point is    // greater than radius    else        document.write("Point is outside the sphere");     // This code is contributed by Mayank Tyagi </script>
Output: 
Point is inside the sphere
Time Complexity:O(1) 
vt_m
Vishal_Khoda
mayanktyagi1709
Geometric
School Programming
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.