![]() |
|
Модераторы: bsa |
![]()
|
|
| UnlaR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 22.11.2010 Репутация: нет Всего: нет |
Само задание: Для множества точек на плоскости найти круг минимального радиуса, содержащий все эти точки. Язык C++.
Главное сделать с использованием структур или классов. С геометрией у меня туго еще со школы
Очень прошу оказать содействие. достаточно правильного пинка под зад. Как думал действовать дальше: 1. Найти максимально удаленные точки. 2. Далее найти точку при которой угол треугольника будет максимально тупым. 3. Эта точка будет центром минимальной окружности. Радиус будет длинной максимального катета. Или есть другое и более правильное решение? Это сообщение отредактировал(а) UnlaR - 22.11.2010, 19:54 |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
В разделе прикреплены интересные ссылки... "Что бы не изобретать велосипед" или чтото в этом роде
http://algolist.manual.ru/maths/geom/misc/mincircle.php |
|||
|
||||
| UnlaR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 22.11.2010 Репутация: нет Всего: нет |
Не очень понял...
1. Перетряхивание массива можно изобразить 1 проходом скажем пузырьковой сортировки. 2. Проверку на принадлежность точки можно изобразить
3. Расширение окружности? Программа выглядит так: )строим окружность срез две эти точки(находим центр между этими двумя точками и этот отрезок является диаметром) ) проверяем принадлежность следующей точки к окружности ) если не принадлежит, то строим окружность по треугольнику Вики )после одного прохода по массиву перетряхиваем массив и проверяем снова. Если не прав - поправьте меня пожалуйста. Решение http://algolist.manual.ru/maths/geom/misc/mincircle.php Я не понимаю пункта 2 в программе MINDISC1 Как его сделать? Это сообщение отредактировал(а) UnlaR - 23.11.2010, 14:28 |
|||
|
||||
| UnlaR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 22.11.2010 Репутация: нет Всего: нет |
Как именно "расширить окружность". Я не могу найти формулы, теоремы, выкладки, правила...
|
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
1. Дело в том что что поиск максимально удаленных точек n! операций по вычислению их расстояния :( А это не есть гуд. Оптимизировать это глупо, решение на той ссылке проще. 2. Если найдены 2 максимально отдаленные точки, то радиус окружности ( минимальной ), это расстояние между ними поделенное на 2, ведь эти 2 точки и есть решение: Круг меньше построить нельзя, круг больше строить нет смысла ( все точки и так в него входят ) Это легко реализовать но дорого И да: у тупоугольного треугольника нету катетов http://www.personal.kent.edu/~rmuhamma/Com...r/centercli.htm Вот тут можно почитать про множество алгоритмов на эту тему, включая и тот, что выполняется O(n) Это сообщение отредактировал(а) sQu1rr - 27.11.2010, 01:10 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |