Shortest distance between a point and a circle
Given a circle with a given radius has its centre at a particular position in the coordinate plane. In the coordinate plane, another point is given. The task is to find the shortest distance between the point and the circle.
Examples:
Input: x1 = 4, y1 = 6, x2 = 35, y2 = 42, r = 5
Output: 42.5079
Input: x1 = 0, y1 = 0, x2 = 5, y2 = 12, r = 3
Output: 10
Approach:
- Let the radius of the circle = r
- co-ordinate of the centre of circle = (x1, y1)
- co-ordinate of the point = (x2, y2)
- let the distance between centre and the point = d
- As the line AC intersects the circle at B, so the shortest distance will be BC,
which is equal to (d-r)
- here using the distance formula,
d = √((x2-x1)^2 – (y2-y1)^2)
- so BC = √((x2-x1)^2 – (y2-y1)^2) – r
- so,
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void dist( double x1, double y1, double x2, double y2, double r)
{
cout << "The shortest distance "
<< "between a point and a circle is "
<< sqrt (( pow ((x2 - x1), 2))
+ ( pow ((y2 - y1), 2)))
- r
<< endl;
}
int main()
{
double x1 = 4, y1 = 6,
x2 = 35, y2 = 42, r = 5;
dist(x1, y1, x2, y2, r);
return 0;
}
|
Java
class GFG
{
static void dist( double x1, double y1, double x2,
double y2, double r)
{
System.out.println( "The shortest distance "
+ "between a point and a circle is "
+ (Math.sqrt((Math.pow((x2 - x1), 2 ))
+ (Math.pow((y2 - y1), 2 )))
- r));
}
public static void main(String[] args)
{
double x1 = 4 , y1 = 6 ,
x2 = 35 , y2 = 42 , r = 5 ;
dist(x1, y1, x2, y2, r);
}
}
|
Python3
def dist(x1, y1, x2, y2, r):
print ( "The shortest distance between a point and a circle is "
,((((x2 - x1) * * 2 ) + ((y2 - y1) * * 2 )) * * ( 1 / 2 )) - r);
x1 = 4 ;
y1 = 6 ;
x2 = 35 ;
y2 = 42 ;
r = 5 ;
dist(x1, y1, x2, y2, r);
|
C#
using System;
class GFG
{
static void dist( double x1, double y1, double x2,
double y2, double r)
{
Console.WriteLine( "The shortest distance "
+ "between a point and a circle is "
+ (Math.Sqrt((Math.Pow((x2 - x1), 2))
+ (Math.Pow((y2 - y1), 2)))
- r));
}
public static void Main(String[] args)
{
double x1 = 4, y1 = 6,
x2 = 35, y2 = 42, r = 5;
dist(x1, y1, x2, y2, r);
}
}
|
PHP
<?php
function dist( $x1 , $y1 , $x2 , $y2 , $r )
{
echo "The shortest distance between a point and a circle is "
,sqrt((pow(( $x2 - $x1 ), 2))
+ (pow(( $y2 - $y1 ), 2)))
- $r ;
}
$x1 = 4;
$y1 = 6;
$x2 = 35;
$y2 = 42;
$r = 5;
dist( $x1 , $y1 , $x2 , $y2 , $r );
?>
|
Javascript
<script>
function dist(x1 , y1 , x2, y2 , r)
{
document.write( "The shortest distance "
+ "between a point and a circle is "
+ (Math.sqrt((Math.pow((x2 - x1), 2))
+ (Math.pow((y2 - y1), 2)))
- r).toFixed(5));
}
var x1 = 4, y1 = 6,
x2 = 35, y2 = 42, r = 5;
dist(x1, y1, x2, y2, r);
</script>
|
Output: The shortest distance between a point and a circle is 42.5079
Time Complexity: O(1)
Auxiliary Space: O(1)
Last Updated :
07 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...