![]() |
Задача про два круга
Как развязять даную задачю:
Условие. Определить, сколько точек пересечения у двух окружностей. Технические условия. Входные данные: 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х сторон меньше или равна длине третьей. Равна - прямая, меньше - треугольник, больше - не пересекаются.
|
Цитата:
Если больше, то 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. Удачи. |
Время: 22:39. |
Время: 22:39.
© OSzone.net 2001-