📜  连接两个圆心的直线的垂直平分线的长度

📅  最后修改于: 2021-05-07 00:33:15             🧑  作者: Mango

给定的是两个圆,它们的半径已给定,使得较小的圆完全位于较大的圆内,并且它们在某一点彼此接触。我们必须找到连接圆心的直线的垂直平分线的长度。
例子:

Input: r1 = 5, r2 = 3
Output: 9.79796

Input: r1 = 8, r2 = 4
Output: 15.4919

方法

  • 让两个圆在AB处居中。垂直等分线PQ将线在C处等分。
  • 令较大圆的半径= r1
    小圆的半径= r2
  • 因此, AB = r1-r2
  • 因此, AC =(r1-r2)/ 2
  • 在图中,我们看到
    PA = r1
  • 在三角形ACP中
    PC ^ 2 + AC ^ 2 = PA ^ 2
    PC ^ 2 = PA ^ 2 – AC ^ 2
    PC ^ 2 = r1 ^ 2 –(r1-r2)^ 2/4
  • 因此, PQ = 2 *√(r1 ^ 2 –(r1-r2)^ 2/4)

下面是上述方法的实现:

C++
// C++ program to find the Length
// of the perpendicular bisector
// of the line joining the centers
// of two circles in which one lies
// completely inside touching the
// bigger circle at one point
 
#include 
using namespace std;
 
void lengperpbisect(double r1, double r2)
{
    double z = 2 * sqrt((r1 * r1)
                        - ((r1 - r2)
                           * (r1 - r2) / 4));
 
    cout << "The length of the "
         << "perpendicular bisector is "
         << z << endl;
}
 
// Driver code
int main()
{
    double r1 = 5, r2 = 3;
    lengperpbisect(r1, r2);
    return 0;
}


Java
// Java program to find the Length
// of the perpendicular bisector
// of the line joining the centers
// of two circles in which one lies
// completely inside touching the
// bigger circle at one point
 
class GFG {
     
static void lengperpbisect(double r1, double r2)
{
    double z = 2 * Math.sqrt((r1 * r1)
                        - ((r1 - r2)
                        * (r1 - r2) / 4));
 
    System.out.println("The length of the "
        + "perpendicular bisector is "
        + z );
}
 
// Driver code
public static void main(String[] args)
{
    double r1 = 5, r2 = 3;
    lengperpbisect(r1, r2);
}
}
 
// This code has been contributed by 29AjayKumar


Python3
# Python program to find the Length
# of the perpendicular bisector
# of the line joining the centers
# of two circles in which one lies
# completely inside touching the
# bigger circle at one point
 
def lengperpbisect(r1, r2):
    z = 2 * (((r1 * r1) - ((r1 - r2) * (r1 - r2) / 4))**(1/2));
 
    print("The length of the perpendicular bisector is ", z);
 
 
# Driver code
r1 = 5; r2 = 3;
lengperpbisect(r1, r2);
 
# This code contributed by PrinciRaj1992


C#
// C# program to find the Length
// of the perpendicular bisector
// of the line joining the centers
// of two circles in which one lies
// completely inside touching the
// bigger circle at one point
using System;
 
class GFG
{
     
static void lengperpbisect(double r1, double r2)
{
    double z = 2 * Math.Sqrt((r1 * r1)
                        - ((r1 - r2)
                        * (r1 - r2) / 4));
 
    Console.WriteLine("The length of the "
        + "perpendicular bisector is "
        + z );
}
 
// Driver code
public static void Main()
{
    double r1 = 5, r2 = 3;
    lengperpbisect(r1, r2);
}
}
 
// This code has been contributed by anuj_67..


Javascript


输出:
The length of the perpendicular bisector is 9.79796