📌  相关文章
📜  如果给出半径和共和弦长度,则两个相交圆的中心之间的距离

📅  最后修改于: 2021-04-22 09:26:07             🧑  作者: Mango

给定的是两个具有给定半径的圆,它们彼此相交并具有相同的弦。给出了普通和弦的长度。任务是找到两个圆心之间的距离。

例子:

Input:  r1 = 24, r2 = 37, x = 40
Output: 44

Input: r1 = 14, r2 = 7, x = 10
Output: 17

方法

  • 令普通和弦的长度AB = x
  • 设以O为中心的圆的半径为OA = r2
  • 中心为P的圆的半径为AP = r1
  • 从图中可以看出, OP垂直于AB
    AC = CB
    AC = x / 2 (因为AB = x)
  • 在三角形ACP中
    AP ^ 2 = PC ^ 2 + AC ^ 2 [根据毕达哥拉斯定理]
    r1 ^ 2 = PC ^ 2 +(x / 2)^ 2
    PC ^ 2 = r1 ^ 2 – x ^ 2/4
  • 考虑三角ACO
    r2 ^ 2 = OC ^ 2 + AC ^ 2 [根据毕达哥拉斯定理]
    r2 ^ 2 = OC ^ 2 +(x / 2)^ 2
    OC ^ 2 = r2 ^ 2 – x ^ 2/4
  • 从图中, OP = OC + PC
    OP =√(r1 ^ 2 – x ^ 2/4)+√(r2 ^ 2 – x ^ 2/4)

    下面是上述方法的实现:

    C++
    // C++ program to find
    // the distance between centers
    // of two intersecting circles
    // if the radii and common chord length is given
      
    #include 
    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


    输出:
    distance between the centers is 44