Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
xax_nv
Зарегистрирован: 28.10.2011 Сообщения: 43 Откуда: г. Нижневартовск
|
Добавлено: Вс Фев 26, 2017 4:20 pm Заголовок сообщения: Коэффициент протяженности полигона. |
|
|
Приветствую всех!
Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог. |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Пн Фев 27, 2017 2:43 pm Заголовок сообщения: |
|
|
Смотри Функция ObjectGeography( ), параметры OBJ_GEO_MINX, ... |
|
Вернуться к началу |
|
|
xax_nv
Зарегистрирован: 28.10.2011 Сообщения: 43 Откуда: г. Нижневартовск
|
Добавлено: Пн Фев 27, 2017 2:44 pm Заголовок сообщения: |
|
|
Спасибо, посмотрю. |
|
Вернуться к началу |
|
|
xax_nv
Зарегистрирован: 28.10.2011 Сообщения: 43 Откуда: г. Нижневартовск
|
Добавлено: Пн Фев 27, 2017 5:22 pm Заголовок сообщения: |
|
|
Посмотрел, но что-то не понял, какую пользу я могу из нее извлечь. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Ср Мар 01, 2017 11:03 am Заголовок сообщения: |
|
|
особо никакую... стандартные функции дадут информацию об MBR (minimum boundary rectangle). и, в общем случае, эта информация никак не связана с длинной средней линии: объект может быть расположен по диагонали, объект может быть "незамкнутый бублик". Для решения задачи надо придумывать какой-то свой алгоритм. |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Ср Мар 01, 2017 2:07 pm Заголовок сообщения: |
|
|
Польза есть. Строим объект, который очерчивает полигон. Находим четыре общие точки полигона и объекта. Строим две линии. Отношение длин линий и будет искомое. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Ср Мар 01, 2017 2:31 pm Заголовок сообщения: |
|
|
Nick4 писал(а): |
Польза есть. Строим объект, который очерчивает полигон. Находим четыре общие точки полигона и объекта. Строим две линии. Отношение длин линий и будет искомое. |
ну тогда посмотрим на примеры:
[img]http://screenshot.ru/upload/image/zYNP[/img]
слева бублик. какая линия от MBR будет давать длину, а какая ширину?
справа многоугольник. как запариться и взять какие именно 4 точки на пересечении с MBR? |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Пт Мар 03, 2017 1:50 pm Заголовок сообщения: |
|
|
С бубликом все работает, как я описал. Четыре точки, которые соприкасаются с контуром создают две линии. Со вторым объектом, Вы взяли случай, когда грани идут строго по описывающему прямоугольнику. В этом случае надо взять среднюю точку из общей линии соприкосновения. Если на одной грани отсутствует общая точка (угловая), тогда строим одну линию там где есть две опозитные точки и относительно её строим перпендикуляр, который начинается с третьей тоски соприкосновения, пересекает построенную линию и заканчивается на границе объекта. |
|
Вернуться к началу |
|
|
xax_nv
Зарегистрирован: 28.10.2011 Сообщения: 43 Откуда: г. Нижневартовск
|
Добавлено: Пт Мар 03, 2017 1:55 pm Заголовок сообщения: |
|
|
Вы предлагаете все это проделывать вручную? |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Пт Мар 03, 2017 1:57 pm Заголовок сообщения: |
|
|
т.е. у бублика средняя длина будет раза в 2 меньше чем есть по факту?
а ширина у бублика раз в 5 меньше чем высота MBR?
я без картинок тяжело понимаю о каких линиях идет речь, но что-то мне подсказывает, что как не крути - двумя линиями не обойтись. |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Вс Мар 05, 2017 12:54 am Заголовок сообщения: |
|
|
Для ответа на вопрос про линии, прошу вернуться Вас к первому посту. Требуется вычислить соотношение длины и ширины полигона. Для решения задачи нужно построить две линии, которые соединяют максимальную длину и ширину. Коэффициент есть отношение длин линий. Таким образом задача состоит лишь в правильном построении двух линий. Функции на mapbasic построения перпендикуляров или линий объектов с общими точками не сложны. Не справитесь, помогу. |
|
Вернуться к началу |
|
|
sunzh
Зарегистрирован: 13.05.2006 Сообщения: 19
|
Добавлено: Пн Июл 31, 2017 3:39 pm Заголовок сообщения: |
|
|
Интересная тема. 100 пудово есть математическое решение MBR в чистом виде задачу не решает. Навскидку: Создается копия исходного объекта, строиться MBR вычисляется площадь, заноситься в массив, затем копию объекта поворачивают на (предположим) 1 градус. Снова вычиляется площадь МОП, и т. д. до 180 градусов. Затем берется МОП с минимальной площадью. Отношение сторон и будет коэффициентом вытянутости. шаг в градусах влияет на точность. Решение громоздкое с виду но думаю математически возможно сделать все проще, например через афинное преобразование начальной СК. Вобщем нужны математики. Крутить ротейтом можно, но в ранних версиях не работает.
З.Ы. Поделитесь решением если получиться. |
|
Вернуться к началу |
|
|
|