Задача. Геометрия & Программирование
- Два маленьких круга (см.рисунок ниже), которые касаются внешне друг друга.
- Также есть большой круг, который расположен таким образом, что он касается два малых круга, но они находятся внутри него.
- Хорда t большего круга является общей касательной к 2м меньших кругам с радиусами r1 и r2.
- Также известно, что центры всех трех окружностей лежат на одной прямой.
- Вам даны ЛИБО значения радиусов r1, r2, ЛИБО значение длины хорды t.
Необходимо вычислить площадь области, помеченной желтым цветом на рисунке.
Входные данные: r1, r2 ЛИБО t.
r1, r2, t больше нуля и меньше 100.
Пример:
r1 = 15, r2 = 20
Output: ~1884
Разбор
Исходя из условий задачи (расположение окружностей, центры окружностей O, O1, O2 лежат на одной прямой) получаем, что радиус большого круга равен:
Тогда площадь серой области будет:
S = Pi*(r1 + r2)^2 - P*r1^2 - Pi*r2^2 = 2*Pi*r1*r2
Рассмотрим треугольник (смотри рисунок) OBC.
OB - радиус большего круга, поэтому OB = r1 + r2
OC = 2*(r1 + r2) - 2*r2 - r1 - (r1 + r2 - r1) = r1 - r2
Хорда проходит в точке касания двух окружностей, поэтому она будет перпендикулярна к прямой, на ктр лежат центры окружностей. Треугольник OBC будет прямоугольный. Поэтому воспользуемся теоремой Пифагора:
(r1 + r2)^2 = (r1 - r2)^2 + t^2 / 4
Преобразуем формулу и получим формулу для серой части:
*Pi*r1*r2 (эту формулу мы вывели из 1го случая) = Pi*t^2 / 8
Рисунок ужасный, но, надеюсь, главную суть уловили :)