|
Вопрос # 3 307/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Я тут столкнулся с одной задачей(точнее мне ее задали как д.з), я вроде программированием 2 года занимаюсь а решить немогу, помогите плз.
Приложение: Переключить в обычный режим-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- e.in e.out
- 0 0 1000
- 0 0 500
- 0 0 500
-
- possible
- -468.09507906626652000000 -883.67810709213904000000
- -531.24014997680422000000 847.22128340394170000000
- 999.33522904307131000000 36.45682368819722500000
-
-
-
 |
Вопрос задал: Черняев Саша (статус: Посетитель)
Вопрос отправлен: 20 октября 2009, 22:51
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, Черняев Саша!
идея есть, как решить. реализацию оставляю автору вопроса, ибо, как правильно заметил min@y™: "а какого...?"
вычислять касательную двух кругов можно, но это долго.
можно пойти другим путём :)
в целом, идея такая:
1) по центрам окружностей деревьев проводим прямую
2) находим точки пересечения этой прямой и окружности клумбы (пусть будут точки 1 и 2)
3) вычисляем точки пересечения прямой с окружностями каждого из деревьев (пусть будут А, В, С и D)
4) пусть текущей будет точка А
5) проводим в текущей точке перпендикуляр к прямой
6) находим пересечение этого перпендикуляра с внешней окружностью (клумбой) - пусть будут точки E и F
7) по точкам E, F и 1 строим треугольник, проверяем, входят ли в него оба дерева - входят - танцуем
8) если не входят, то строим треугольник по точками E, F и 2, проверяем, входят ли деревья в этот треугольник
9) если деревья не входят ни туда, ни сюда, то не расстраиваемся - делаем текущей следующую точку (В, С, D) и возвращаемся к шагу 5
10) а вот тут расстраиваемся, что треугольник не получился...
з.ы. можно, конечно, ещё подоптимизировать алгоритм, например, не проверять точки В и С, треугольник строить только по точке 1 или 2 (по которой имеет смысл) и т.д.
правда, я гений?
:))))))))
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 21 октября 2009, 19:59
Оценка за ответ: 5
Комментарий к оценке: Спасибо огромное!!!
|
Мини-форум вопроса
Всего сообщений: 21; последнее сообщение — 9 ноября 2009, 19:23; участников в обсуждении: 6.
Страницы: [1] [2] [Следующая »]
|
Мережников Андрей (статус: Абитуриент), 21 октября 2009, 05:51 [#1]:
на каждое дерево свой забор или один забор на оба дерева? Дело не в программировании. Сначала задачу надо решить математически. Если для двух деревьев один забор, то задачу можно переформулировать следующим образом: Возможно ли вписать в заданную окружность (клумбу) треугольник (забор) так, чтобы две другие окружности (деревья) были внутри треугольника.
|
|
Черняев Саша (статус: Посетитель), 21 октября 2009, 09:55 [#2]:
ну я так понял что есть координаты деревьев и надо построить треугольник в окружности такой, что он не будет выходить за ее пределы и оба дерева не будут выходить за пределы треугольника, но деревья могут лежать на сторонах треугольника.
Заранее благодарю!
|
|
Черняев Саша (статус: Посетитель), 21 октября 2009, 10:16 [#3]:
то есть построить если это возможно, ваша формулировка,как я считаю, абсолютно правильна.
|
|
min@y™ (статус: Доктор наук), 21 октября 2009, 15:06 [#4]:
Половину рабочего дня убил уже! Интересная задачка. Процесс идёт!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 21 октября 2009, 15:29 [#5]:
Цитата (Черняев Саша):
Спасибо за помощь! премного благодарен!
Да пока не за что. Никак не могу вывести уравнения касательных к двум окружностям одновременно. Закопался в системе из 4 квадратных уравнений.
Подумываю, а не решить ли всё это численнымим методами...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 21 октября 2009, 15:33 [#6]:
Залазь ко мне в аську (5466111), поговорим.
Запросы авторизации не принимаются.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 21 октября 2009, 15:49 [#7]:
Блин, заколебался формулы выводить.
Деревья в клумбе могут располагаться как угодно? Не соприкасаться они могут?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Черняев Саша (статус: Посетитель), 21 октября 2009, 16:03 [#8]:
дерево же окружность, и одно дерево может быть в другом! не соприкасаться конечно могут, располагаться как угодно в одной большой окружности!
|
|
Вадим К (статус: Академик), 21 октября 2009, 16:23 [#9]:
Могу точно сказать - если "дерево" соприкасается с внешней окружностью, то задача уже нерешаемая.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Черняев Саша (статус: Посетитель), 21 октября 2009, 16:27 [#10]:
почему же так, к примеру так: проведем диаметр и поставим на его концы деревья потом проведем радиус перпендикулярный диаметру соединим его конец с деревьями и вуаля!
|
|
Вадим К (статус: Академик), 21 октября 2009, 16:33 [#11]:
это будет работать только в том случае, если деревья бесконечно тонки.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Черняев Саша (статус: Посетитель), 21 октября 2009, 16:35 [#12]:
да-а... и что же делать? из трех задач нихрена сделать немогу...
|
|
min@y™ (статус: Доктор наук), 21 октября 2009, 16:42 [#13]:
Очень интересно, если деревья равного радиуса...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Черняев Саша (статус: Посетитель), 21 октября 2009, 16:45 [#14]:
ну если они будут равного радиуса то они не будут совпадать, иначе задача потеряет смысл.
|
|
Вадим К (статус: Академик), 21 октября 2009, 16:55 [#15]:
Черняев Саша:
Ну ругаться не стоит. А во вторых, эта задача попахивает олимпиадной. А тут просто "изучаю два года программирование" недостаточно.
У меня есть идея, как решить задачу, но это пока идея.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Черняев Саша (статус: Посетитель), 21 октября 2009, 16:59 [#16]:
ну я не ругаюсь, одну задачу решил, всего 40 баллов набрал, 3 другие решил по 100 баллов набрал, осталась эта и еще одна.
А эта действительно олимпиадная задача, это тренировка в рамках подготовки к региональной олимпиаде.это задача с сайта olympiads.ru
|
|
min@y™ (статус: Доктор наук), 21 октября 2009, 17:00 [#17]:
Цитата (Черняев Саша):
ну если они будут равного радиуса то они не будут совпадать, иначе задача потеряет смысл.
Не потеряет. При некоторых условиях вокруг этих деревьев МОЖНО будет построить треугольный забор, даже если они будут/не будут совпадать. 1хрен, всё выливается в расчёт уравнений общих касательных к окружностям. А это система из 4 квадратных уравнений, 2 из которых ложные.
Короче, поскольку это ты участвуешь в этой олимпиаде, а не я, плати деньги за работу или делай её сам. Я и так на чистом энтузязизьме целый рабочий день её решал, исписал пачку бумаги трёхэтажными дробями. Под вечер меня наконец-то настигла мысль "а какого хрена, собственно?".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Amidamaru (статус: 4-ый класс), 21 октября 2009, 20:37 [#18]:
Мда... это называется аналитическая геометрия, довольно немаленький и непростой раздел высшей математики...
|
|
min@y™ (статус: Доктор наук), 22 октября 2009, 20:29 [#19]:
Ну таки шо, продолжать?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
prog-mer (статус: Посетитель), 9 ноября 2009, 19:22 [#20]:
А мы похожую задачку в школе решали!
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|