Check whether a point lies inside a sphere or not

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP code to illustrate above approach
#include <bits/stdc++.h>
using namespace std;
// function to calculate the distance between centre and the point
int 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 function
int 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to illustrate above approach
import 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.

chevron_right


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to illustrate above approach
  
import math
# function to calculate distance btw center and given point
def 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 = 1
cy = 2 # coordinates of centre
cz = 3
  
r = 5 # radius of sphere
  
x = 4
y = 5 # coordinates of the given point
z = 2
# function call to calculate distance btw centre and given point
ans = check(cx, cy, cz, x, y, z);
  
# distance btw centre and point is less than radius
if ans<(r**2):
    print("Point is inside the sphere"
  
# distance btw centre and point is equal to radius
elif ans ==(r**2):
    print("Point lies on the sphere"
  
# distance btw centre and point is greater than radius
else:
    print("Point is outside the sphere"

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to illustrate
// above approach
using 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.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// function to calculate  
// the distance between 
// centre and the point
function 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 radius
if ($ans < ($r * $r))
    echo "Point is inside " .   
                "the sphere"
  
// distance btw centre and 
// point is equal to radius
else if ($ans == ($r * $r))
    echo "Point lies on the sphere"
  
// distance btw center and point 
// is greater than radius
else
    echo "Point is outside "
                 "the sphere";
      
// This code is contributed
// by shiv_bhakt
?>

chevron_right



Output:

Point is inside the sphere

Time Complexity:O(1)



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.