Distance between centers of two intersecting circles if the radii and common chord length is given
Given are two circles, with given radii, which intersect each other and have a common chord. The length of the common chord is given. The task is to find the distance between the center of the two circles. Examples:
Input: r1 = 24, r2 = 37, x = 40 Output: 44 Input: r1 = 14, r2 = 7, x = 10 Output: 17
- let the length of common chord AB = x
- Let the radius of the circle with center O is OA = r2
- Radius of circle with center P is AP = r1
- From the figure, OP is perpendicular AB AC = CB AC = x/2 (Since AB = x)
- In triangle ACP, AP^2 = PC^2+ AC^2 [By Pythagoras theorem] r1^2 = PC^2 + (x/2)^2 PC^2 = r1^2 – x^2/4
- Consider triangle ACO r2^2 = OC^2+ AC^2[By Pythagoras theorem] r2^2 = OC^2+ (x/2)^2 OC^2 = r2^2 – x^2/4
- From the figure, OP = OC + PC OP = √( r1^2 – x^2/4 ) + √(r2^2 – x^2/4)
Distance between the centers = sqrt((radius of one circle)^2 – (half of the length of the common chord )^2) + sqrt((radius of the second circle)^2 – (half of the length of the common chord )^2)
Below is the implementation of the above approach:
C++
// C++ program to find // the distance between centers // of two intersecting circles // if the radii and common chord length is given #include <bits/stdc++.h> using namespace std; void distcenter( int r1, int r2, int x) { int z = sqrt ((r1 * r1) - (x / 2 * x / 2)) + sqrt ((r2 * r2) - (x / 2 * x / 2)); cout << "distance between the" << " centers is " << z << endl; } // Driver code int main() { int r1 = 24, r2 = 37, x = 40; distcenter(r1, r2, x); return 0; } |
Java
// Java program to find // the distance between centers // of two intersecting circles // if the radii and common chord length is given import java.lang.Math; import java.io.*; class GFG { static double distcenter( int r1, int r2, int x) { double z = (Math.sqrt((r1 * r1) - (x / 2 * x / 2 ))) + (Math.sqrt((r2 * r2) - (x / 2 * x / 2 ))); System.out.println ( "distance between the" + " centers is " + ( int )z ); return 0 ; } // Driver code public static void main (String[] args) { int r1 = 24 , r2 = 37 , x = 40 ; distcenter(r1, r2, x); } } // This code is contributed by jit_t. |
Python3
# Python program to find # the distance between centers # of two intersecting circles # if the radii and common chord length is given def distcenter(r1, r2, x): z = (((r1 * r1) - (x / 2 * x / 2 )) * * ( 1 / 2 )) + \ (((r2 * r2) - (x / 2 * x / 2 )) * * ( 1 / 2 )); print ( "distance between thecenters is " ,end = ""); print ( int (z)); # Driver code r1 = 24 ; r2 = 37 ; x = 40 ; distcenter(r1, r2, x); # This code has been contributed by 29AjayKumar |
C#
// C# program to find // the distance between centers // of two intersecting circles // if the radii and common chord length is given using System; class GFG { static double distcenter( int r1, int r2, int x) { double z = (Math.Sqrt((r1 * r1) - (x / 2 * x / 2))) + (Math.Sqrt((r2 * r2) - (x / 2 * x / 2))); Console.WriteLine( "distance between the" + " centers is " + ( int )z ); return 0; } // Driver code static public void Main () { int r1 = 24, r2 = 37, x = 40; distcenter(r1, r2, x); } } // This code is contributed by jit_t |
PHP
<?php // php program to find // the distance between centers // of two intersecting circles // if the radii and common chord length is given function distcenter( $r1 , $r2 , $x ) { $z = sqrt(( $r1 * $r1 ) - ( $x / 2 * $x / 2)) + sqrt(( $r2 * $r2 ) - ( $x / 2 * $x / 2)); echo ( "distance between the centers is " ); echo ((int) $z ); } // Driver code $r1 = 24; $r2 = 37; $x = 40; distcenter( $r1 , $r2 , $x ); // This code is contributed by aditya942003patil ?> |
Javascript
<script> // javascript program to find // the distance between centers // of two intersecting circles // if the radii and common chord length is given function distcenter(r1, r2, x) { var z = Math.sqrt((r1 * r1) - (x / 2 * x / 2)) + Math.sqrt((r2 * r2) - (x / 2 * x / 2)); document.write( "distance between the centers is " + z); } // Driver code var r1 = 24,r2 = 37,x = 40; distcenter(r1, r2, x); // This code is contributed by aditya942003patil </script> |
Output :
distance between the centers is 44
Time Complexity : O(log(n)) ,because using inbuilt sqrt function
Space Complexity : O(1) ,as no extra space used.
Please Login to comment...