Войти

Показать полную графическую версию : Задача про два круга


DaRiYs
21-02-2008, 17:24
Как развязять даную задачю:

Условие. Определить, сколько точек пересечения у двух окружностей.

Технические условия. Входные данные: 6 чисел x1, y1, r1, x2, y2, r2,
где x1, y1, x2, y2, - координаты центров окружностей, r1, r2 – их радиусы.
Выходные данные: единственное число, показывающее количество точек пересечения.
0, 1, 2 – соответствующее количество точек пересечения.
-1 – бесконечное количество точек пересечения.

DedAlex
21-02-2008, 17:49
Начнем с простого. :) Если x1=x2, y1=y2 и r1=r2, значит бесконечное. Дальше можно по теореме Пифагора.

1) Проверяем не находится ли центр одной окружности внутри другой. Для этого сравниваем радиус большей окружности с расстоянием между центрами. Находится - шаг 2, нет - шаг 3.

2) Если разница между большим и меньшим радиусом меньше расстояния между центрами значит 2 точки, если ранвна - 1 точка, больше - 0 точек.

3) Если r1+r2 меньше расстояния между центрами, значит 0 точек, если равно - 1, если больше - 2.

pva
21-02-2008, 21:47
пункты 1 и 2 не обязательно. По теореме треугольника: сумма длин 2х сторон меньше или равна длине третьей. Равна - прямая, меньше - треугольник, больше - не пересекаются.

mrcnn
28-02-2008, 11:29
3) Если r1+r2 меньше расстояния между центрами, значит 0 точек, если равно - 1, если больше - 2.
Наоборот.
Если больше, то 0
Если меньше, то 2 точки

azbest
29-02-2008, 01:16
Если придать этой задаче скажем, более конкретный вид :jester: - а именно:
x1y1 - координаты первой вышки сотовой связи r1 -удаление от неё до звонящего телефона,
x2y2 - координаты второй вышки сотовой связи и r2 - удаление от неё до звонящего телефона.
Так же, зная расстояние между вышками, - В РЕЗУЛЬТАТЕ можно вычислить направление от любой из этих вышек до звонящего по телефону :yahoo:
Так задачка гораздо интереснее

podsyp
02-03-2008, 13:14
Здравствуйте.

Для решения задачи введите функцию 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