Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Задача про два круга (http://forum.oszone.net/showthread.php?t=101221)

DaRiYs 21-02-2008 17:24 745592

Задача про два круга
 
Как развязять даную задачю:

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

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

DedAlex 21-02-2008 17:49 745607

Начнем с простого. :) Если 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 745790

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

mrcnn 28-02-2008 11:29 749810

Цитата:

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

azbest 29-02-2008 01:16 750305

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

podsyp 02-03-2008 13:14 751731

Здравствуйте.

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

Удачи.


Время: 22:39.

Время: 22:39.
© OSzone.net 2001-