Task 54. Окружности
UniLecsЗадача: Определить количество точек пересечения двух окружностей.
Даны 6 чисел X1, Y1, R1, X2, Y2, R2, где X1, Y1, X2, Y2 — координаты центров окружностей, а R1, R2 – их радиусы.
Например:
0 0 5 5 0 5
Вывод:
2
Идея: для решения этой задачи вспомним геометрию, будем использовать квадрат расстояния между центрами окружностей - Dist^2
Окружности имеют точку внешнего касания, если (R1 + R2) ^ 2 = Dist^2
Также окружности имеют точку внутреннего касания, если (R1 - R2)^2 = Dist^2
В случаях, когда (R1 + R2)^2 < Dist^2 и (R1 - R2)^2 > Dist^2 окружности не пересекаются.
Реализация:
https://gist.github.com/unilecs/a22b6a14389d90aa95e29e6121e2dedb
Тест: