Рубрики

Длина перпендикулярного биссектрисы линии, соединяющей центры двух окружностей

Даны два круга, радиусы которых заданы так, что меньший полностью лежит внутри большего круга, и они касаются друг друга в одной точке. Нам нужно найти длину перпендикулярного биссектрисы линии, соединяющей центры окружностей.

Примеры:

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

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

Подход :

  • Пусть два круга имеют центр в точках A и B. Перпендикулярный биссектриса PQ делит линию на C.
  • Пусть радиус большего круга = r1
    радиус меньшего круга = r2
  • Итак, AB = r1-r2 ,
  • следовательно, AC = (r1-r2) / 2
  • На рисунке мы видим
    PA = r1
  • в треугольнике ACP ,
    ПК ^ 2 + АС ^ 2 = РА ^ 2
    ПК ^ 2 = РА ^ 2 — АС ^ 2
    ПК ^ 2 = r1 ^ 2 — (r1-r2) ^ 2/4
  • Итак, PQ = 2 * √ (r1 ^ 2 — (r1-r2) ^ 2/4)

Length of the perpendicular bisector = 2 * sqrt(r1^2 – (r1-r2)*(r1-r2)/4)

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ программа для поиска длины
// перпендикулярного биссектрисы
// линии, соединяющей центры
// из двух кругов, в которых лежит
// полностью внутри касаясь
// больший круг в одной точке

  
#include <bits/stdc++.h>

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;

}

  
// Код драйвера

int main()

{

    double r1 = 5, r2 = 3;

    lengperpbisect(r1, r2);

    return 0;

}

Джава

// Java-программа для поиска длины
// перпендикулярного биссектрисы
// линии, соединяющей центры
// из двух кругов, в которых лежит
// полностью внутри касаясь
// больший круг в одной точке

  

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 );

}

  
// Код драйвера

public static void main(String[] args) 

{

    double r1 = 5, r2 = 3;

    lengperpbisect(r1, r2);

}
}

  
// Этот код предоставлен 29AjayKumar

python3

      
# Python программа для поиска длины
# перпендикулярного биссектрисы
# линии, соединяющей центры
# из двух кругов, в которых лежит
# полностью внутри касаясь
# больший круг в одной точке

  

def lengperpbisect(r1, r2):

    z = 2 * (((r1 * r1) - ((r1 - r2) * (r1 - r2) / 4))**(1/2));

  

    print("The length of the perpendicular bisector is ", z);

  

  
# Код драйвера

r1 = 5; r2 = 3;

lengperpbisect(r1, r2);

  
# Этот код предоставлен PrinciRaj1992

C #

// C # программа для поиска длины
// перпендикулярного биссектрисы
// линии, соединяющей центры
// из двух кругов, в которых лежит
// полностью внутри касаясь
// больший круг в одной точке

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 );

}

  
// Код драйвера

public static void Main() 

{

    double r1 = 5, r2 = 3;

    lengperpbisect(r1, r2);

}
}

  
// Этот код предоставлен anuj_67 ..

Выход:

The length of the perpendicular bisector is 9.79796

Рекомендуемые посты:

Длина перпендикулярного биссектрисы линии, соединяющей центры двух окружностей

0.00 (0%) 0 votes