Open In App
Related Articles

Length of the transverse common tangent between the two non intersecting circles

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

Given two circles of given radii, having there centres a given distance apart, such that the circles don’t touch each other. The task is to find the length of the transverse common tangent between the circles.
Examples: 
 

Input: r1 = 4, r2 = 6, d = 12
Output: 6.63325

Input: r1 = 7, r2 = 9, d = 21
Output: 13.6015


 


Approach
 

  1. Let the radii of the circles be r1 & r2 respectively.
  2. Let the distance between the centers be d units.
  3. Draw a line O’R parallel to PQ,
  4. angle OPQ = angle RPQ = 90 deg 
    angle O’QP = 90 deg 
    { line joining the center of the circle to the point of contact makes an angle of 90 degree with the tangent } 
     

  5. angle RPQ + angle O’QP = 180 deg 
    PR || O’Q

  6. Since opposite sides are parallel and interior angles are 90, therefore O’PQR is a rectangle.
  7. O’Q = RP = r2 and PQ = O’R
  8. In triangle OO’R
    angle ORO’ = 90 deg 
    By Pythagoras theorem
    OR^2 + O’R^2 = OO’^2 
    O’R^2 = OO’^2 – OR^2 
    O’R^2 = d^2 – (r1+r2)^2 
    O’R^2 = √(d^2 – (r1+r2)^2)


Length of transverse common tangent = sqrt((distance between centers)^2 - (sum of radii)^2)
 

C++

// C++ program to find the length
// of the transverse common tangent
// between two circles which
// do not touch each other
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the length
// of the transverse common tangent
void lengthOfTangent(double r1, double r2, double d)
{
 
    cout << "The length of the transverse"
         << " common tangent is "
         << sqrt(pow(d, 2) - pow((r1 + r2), 2))
         << endl;
}
 
// Driver code
int main()
{
    double r1 = 4, r2 = 6, d = 12;
    lengthOfTangent(r1, r2, d);
    return 0;
}

                    

Java

// Java program to find the length
// of the transverse common tangent
// between two circles which
// do not touch each other
class GFG {
 
    // Function to find the length
    // of the transverse common tangent
    static void lengthOfTangent(double r1,
                                double r2, double d)
    {
 
        System.out.println("The length of the transverse"
                           + " common tangent is "
                           + Math.sqrt(Math.pow(d, 2)
                                       - Math.pow((r1 + r2), 2)));
    }
 
    // Driver code
    public static void main(String args[])
    {
        double r1 = 4, r2 = 6, d = 12;
        lengthOfTangent(r1, r2, d);
    }
}
 
// This code has been contributed by 29AjayKumar

                    

Python3

# python 3 program to find the length
# of the transverse common tangent
# between two circles which
# do not touch each other
from math import sqrt, pow
 
# Function to find the length
# of the transverse common tangent
def lengthOfTangent(r1, r2, d):
    print("The length of the transverse",
                     "common tangent is",
          '{0:.6g}'.format(sqrt(pow(d, 2) -
                                pow((r1 + r2), 2))))
 
# Driver code
if __name__ == '__main__':
    r1 = 4
    r2 = 6
    d = 12
    lengthOfTangent(r1, r2, d)
     
# This code is contributed by
# Surendra_Gangwar

                    

C#

// C# program to find the length
// of the transverse common tangent
// between two circles which
// do not touch each other
using System;
 
class GFG {
    // Function to find the length
    // of the transverse common tangent
    static void lengthOfTangent(double r1,
                                double r2, double d)
    {
 
        Console.WriteLine("The length of the transverse"
                          + " common tangent is "
                          + Math.Sqrt(Math.Pow(d, 2)
                                      - Math.Pow((r1 + r2), 2)));
    }
 
    // Driver code
    static public void Main()
    {
        double r1 = 4, r2 = 6, d = 12;
        lengthOfTangent(r1, r2, d);
    }
}
 
// This code has been contributed by ajit.

                    

PHP

<?php
// PHP program to find the length
// of the transverse common tangent
// between two circles which
// do not touch each other
 
// Function to find the length
// of the transverse common tangent
function lengthOfTangent($r1, $r2, $d)
{
 
    echo "The length of the transverse common tangent is ",
    sqrt(pow($d, 2) - pow(($r1 + $r2), 2)) ;
}
 
// Driver code
$r1 = 4; $r2 = 6; $d = 12;
lengthOfTangent($r1, $r2, $d);
 
// This code is contributed by AnkitRai01
?>

                    

Javascript

<script>
 
// javascript program to find the length
// of the transverse common tangent
// between two circles which
// do not touch each other
 
 
// Function to find the length
// of the transverse common tangent
function lengthOfTangent(r1,r2 , d)
{
 
    document.write("The length of the transverse"
                       + " common tangent is "
                       + Math.sqrt(Math.pow(d, 2)
                                   - Math.pow((r1 + r2), 2)));
}
 
// Driver code
 
var r1 = 4, r2 = 6, d = 12;
lengthOfTangent(r1, r2, d);
 
// This code contributed by Princi Singh
 
</script>

                    

Output: 
The length of the transverse common tangent is 6.63325

 

Time Complexity: O(logn) because using inbuilt sqrt and pow function

Auxiliary Space: O(1)



Last Updated : 03 Aug, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads