Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 25 Май, 2012, 08:37:27

Страниц: [1]
Печать
Автор Тема: Как быстро находить многоугольник, которому принадлежит точка?  (Прочитано 141 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Абырвалг    ↓ 
26 Декабрь, 2011, 02:28:17
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

Вот есть народная карта, допустим я ее распарсил и получил точки вершин многоугольника каждого района. Таких многоугольников у меня дохуища. Как бы мне с минимальными затратами найти тот многоугольник, которому эта точка принадлежит?
 
Брать все многоугольники и для каждого проверять http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D0%BF%D1%80%D0%B8%D0%BD%D0%B0%D0%B4%D0%BB%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%BE%D1%87%D0%BA%D0%B8_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D1%83 ?
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
kostyl    ↓ 
26 Декабрь, 2011, 02:46:22 , спустя 18 минут 5 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3523
Сила слова: 1.7

Абырвалг, область видимости сократи для начала, а потом проверяй. Любой многоугольник можно вписать в прямоугольники, если данные находятся в базе то можно с участием индексов выбрать все прямоугольники в которых есть эта точка, а потом там хуйня останется..
Записан

качество жизни обратно пропорционально количеству лени
Абырвалг    ↓ 
26 Декабрь, 2011, 02:56:50 , спустя 10 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

с прямоугольниками - да, все просто, там тупо WHERE lat BETWEEN lat_from AND lat_to AND lng BETWEEN lng_from AND lng_to. Окей, спасибо
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
kostyl    ↓ 
26 Декабрь, 2011, 02:59:58 , спустя 3 минуты 8 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3523
Сила слова: 1.7

Абырвалг, в MS SQL есть уже готовые штуки для вычисления, не  знаю может в PostgreSQL уже тоже есть или в MySQL
Записан

качество жизни обратно пропорционально количеству лени
mario    ↓ 
26 Декабрь, 2011, 03:13:28 , спустя 13 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09

читал?
Записан

с ув. mario.
Контакты
Абырвалг    ↓ 
26 Декабрь, 2011, 03:16:28 , спустя 3 минуты
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

учитывая то, что я несколькими сообщениями ранее ссылку на эту статью кинул - да)
Спустя 23 секунды добавил
Костян разрулил вопрос, спасибо ему, тема собственно говоря исчерпала себя.
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
artoodetoo    ↓ 
26 Декабрь, 2011, 03:19:31 , спустя 3 минуты 3 секунды
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

Я когда-то игрухи писАл ))) Если многоугольников много, надо на первом проходе отсеять заведомо неподходящие. Тебе надо знать мин/макс координаты точек для каждого из них, т.е. координаты "описывающего" прямоугольника. С ними сравниваешь точку.
Если грубый тест прошел - считаешь по алгоритму трассировки луча.
Спустя 1 минуту 33 секунды добавил
А если заранее потрудиться и разбить многоугольники на множество ВЫПУКЛЫХ многоугольников, то считать можно вообще влет.
Записан
mario    ↓ 
26 Декабрь, 2011, 03:19:47 , спустя 16 секунд
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09

учитывая то, что я несколькими сообщениями ранее ссылку на эту статью кинул - да)
ухахаах сори )))
Там просто в ссылке кракозябры я и щелкать на неё не стал ))
Записан

с ув. mario.
Контакты
Абырвалг    ↓ 
26 Декабрь, 2011, 03:21:30 , спустя 1 минуту 43 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

artoodetoo, да, об этом и написал kostyl
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
kostyl    ↓ 
26 Декабрь, 2011, 03:31:25 , спустя 9 минут 55 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3523
Сила слова: 1.7

Абырвалг, да, только ВЫПУКЛОСТЬ, как заметил artoodetoo может повлиять, так что ты смотри
Записан

качество жизни обратно пропорционально количеству лени
artoodetoo    ↓ 
26 Декабрь, 2011, 03:32:31 , спустя 1 минуту 6 секунд
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

молодец костыль, чо )))
Записан
phpdude    ↓ 
26 Декабрь, 2011, 03:36:51 , спустя 4 минуты 20 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66

а я бы уже сделал блеядь :D
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
kostyl    ↓ 
26 Декабрь, 2011, 03:38:35 , спустя 1 минуту 44 секунды
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3523
Сила слова: 1.7

Вообще я слышал что то подобное на видео из какой-то PHP конфе толи 2006 толи 2007, там чуваки на постгри делали поиск ближайших ресторанов или типа того...
 
Записан

качество жизни обратно пропорционально количеству лени
Страниц: [1]
Печать
 

Перейти в: