Показать полную графическую версию : Задача про два круга
Как развязять даную задачю:
Условие. Определить, сколько точек пересечения у двух окружностей.
Технические условия. Входные данные: 6 чисел x1, y1, r1, x2, y2, r2,
где x1, y1, x2, y2, - координаты центров окружностей, r1, r2 – их радиусы.
Выходные данные: единственное число, показывающее количество точек пересечения.
0, 1, 2 – соответствующее количество точек пересечения.
-1 – бесконечное количество точек пересечения.
Начнем с простого. :) Если x1=x2, y1=y2 и r1=r2, значит бесконечное. Дальше можно по теореме Пифагора.
1) Проверяем не находится ли центр одной окружности внутри другой. Для этого сравниваем радиус большей окружности с расстоянием между центрами. Находится - шаг 2, нет - шаг 3.
2) Если разница между большим и меньшим радиусом меньше расстояния между центрами значит 2 точки, если ранвна - 1 точка, больше - 0 точек.
3) Если r1+r2 меньше расстояния между центрами, значит 0 точек, если равно - 1, если больше - 2.
пункты 1 и 2 не обязательно. По теореме треугольника: сумма длин 2х сторон меньше или равна длине третьей. Равна - прямая, меньше - треугольник, больше - не пересекаются.
3) Если r1+r2 меньше расстояния между центрами, значит 0 точек, если равно - 1, если больше - 2.
Наоборот.
Если больше, то 0
Если меньше, то 2 точки
Если придать этой задаче скажем, более конкретный вид :jester: - а именно:
x1y1 - координаты первой вышки сотовой связи r1 -удаление от неё до звонящего телефона,
x2y2 - координаты второй вышки сотовой связи и r2 - удаление от неё до звонящего телефона.
Так же, зная расстояние между вышками, - В РЕЗУЛЬТАТЕ можно вычислить направление от любой из этих вышек до звонящего по телефону :yahoo:
Так задачка гораздо интереснее
Здравствуйте.
Для решения задачи введите функцию R = (x2-x1)^2+(y2-y1)^2-(r1+r2)^2
Если x1=x2, y1= y2, r1=r2 ответ = -1.
Если R > 0 ответ = 0.
Если R = 0 ответ = 1.
Если R < 0 ответ = 2.
Удачи.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.