![]() |
|
Модераторы: bsa |
![]()
|
|
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
даны точки на плоскости(в txt файле заданы координаты).
Надо найти положение на плоскости треугольника с целочисленными координатами вершин,внутри которого находится максимальное число точек. Подскажите идею в поиске такого треугольника |
|||
|
||||
| eyeofhell |
|
|||
|
Адепт ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 16.10.2008 Где: Россия, Москва Репутация: 1 Всего: 1 |
Пропущено какое-то условие. Берешь любой треугольник с координатами в миллион раз больше самых больших/маленьких координат точек - все точки гарантировано будут там.
Наверное есть ограничение на площадь треугольника, его координаты? |
|||
|
||||
| Dmi3ev |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
вот функция, которая проверяет, находится ли точка внутри треугольника:
правда в билдере сделано, но это не суть важно, по-моему. а вот подключаемые файлы:
и второй:
это является ключом к решению задачи, проверять, лежит ли точка внутри или нет. возможно у кого-то есть другие идеи, но я бы так делал. -------------------- |
||||||
|
|||||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
да, насчет условия , треугольник составляется из точек в файле.
to Dmi3ev: можно поподробнее в словах про алгоритм определения принадлежности точек триугольнику (код не надо). Это сообщение отредактировал(а) f999t1 - 19.10.2008, 23:53 |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
ну смотри, если точка в треугольники, то площадь треугольника равна сумме площадей треугольников, образованных этой точкой и сторонами треугольника (их будет три). площади определяешь по формуле Геррона.
-------------------- |
|||
|
||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
понятно
ну а возвращяясь к первоначальной задаче, получается надо перебрать n*(n-1)*(n-2) треугольников для каждого из которых надо тоже перебором оставшихся точек определить их принадлежность ему, а потом из всех треугольников определить тот который удовлетворяет условию. Может есть алгоритм который решает эту задачу побыстрее? |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
ну, надо же не все точки тупо пробовать, некоторые можно исключать заранее, а дальше можно еще что-то придумать -------------------- |
|||
|
||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
ОК! Спасибо
Буду считать вопрос закрытым. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
f999t1, для начала можно попробовать просто найти три точки, расстояние между любыми парами которых максимальное (D = sqrt((x1-x2)^2 + (y1-y2)^2). Из них составить треугольник... Но это очень приблизительный метод, который еще нужно проверить.
|
|||
|
||||
![]()
|
| Правила форума "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. |