Open In App

Distance between centers of two intersecting circles if the radii and common chord length is given

Last Updated : 03 Aug, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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

Approach:

  • 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.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads