Task 54. Окружности

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 окружности не пересекаются.

Реализация:

реализация на C#

https://gist.github.com/unilecs/a22b6a14389d90aa95e29e6121e2dedb


Тест:

https://dotnetfiddle.net/voVHVE

Report Page