Страница 1 из 1

Библиотека на Си для булевских операций над полигонами

Добавлено: 22 фев 2010, 15:20
Shasoft
Може кто-то из спецов может подсказать библиотеку для работы с полигонами? Пересечение/объедениненеие/вычитание

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 22 фев 2010, 16:29
Mavka
Посмотрите здесь (раздел Librería).
Но что то на ум ничего для plain c не приходит.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 23 фев 2010, 03:10
Максим Дубинин
посмотрите вот здесь: http://trac.osgeo.org/ggl/ очень быстрая библиотека, но не уверен что в ней есть нужные функции, это тоже C++

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 10 мар 2010, 11:45
Дмитрий Барышников
http://www.complex-a5.ru/polyboolean/comp.html
По адресу приведено сравнение основных библиотек С++ по работе с полигонами.
Есть еще geos, но, например, на операции Intersection очень тормозит.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 23 мар 2010, 21:53
Shasoft
Всем спасибо. Вопрос решен.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 24 мар 2010, 10:02
Mavka
Чисто для повышения собственной образованности - на чем остановились?

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 07 июн 2010, 19:36
Shasoft
Остановился на gpc (Generic Polygon Clipper)
// General Polygon Clipper based on the GPC library by Alan Murta
// Union, Intersection, XOR, A-B, B-A
// Contact the author if you intend to use it in commercial applications!
// http://www.cs.man.ac.uk/aig/staff/alan/software/
// Alan Murta (email: gpc@cs.man.ac.uk)
Хотя, учитывая что мне нужно работать с полигонами, заданными гео-координатами - есть мнение, что нужна какая-нибудь библиотека для работы с полигонами на сфере, а не на плоскости, так как при использовании будут неверные результаты.
Могут профессионалы подтвердить мои опасения или опровергнуть? А то что-то никак сам не могу сообразить прав я или нет. Пока я исхожу из того, что на плоскости наименьшее расстояние между гео-точками будет выглядеть в виде дуги, а не прямой. А gpc (да и все аналогичные библиотеки) считают, что наименьшее расстояние можно представить в виде прямой.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 07 июн 2010, 19:45
Дмитрий Барышников
Я думаю это везде так, даже в коммерческих ГИС.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 07 июн 2010, 20:28
Shasoft
это везде так
Это потому что
а) Проще реализовать?
б) эти библиотеки дают точный результат, а все мои сомнения ошибочны?
в) другое

P.S. Нашел (точнее вспомнил то, что находил при прошлом поиске) библиотеку
2D Boolean Operations on Nef Polygons Embedded on the Sphere.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 07 июн 2010, 21:21
Дмитрий Барышников
Я думаю все вместе. Кроме того, сфера это хорошо, а если эллипсоид или иная фигура вращения - опять другая математика?
Я обрезал слой континентов кажется по 12 градусной зоне - все прилично получается. Главное чтобы обрезающая фигура имела точек побольше 4-х. На картинке есть пример обрезки континентов viewtopic.php?f=27&t=4906#p23768

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 07 июн 2010, 22:00
Shasoft
Сфера и эллипс - весьма похожи и конвертировать из одного в другой не так сложно. Хотя, всех тонкостей ГИС я не знаю, так что тут мне сложно что-то сказать. Мало ли что там ещё кроме элипса и окружности может использоваться.
В моем случае используется сфера, так что попробую сам придумать алгоритм с полигонами на сфере, либо разобраться с найденным. Скорость выполнения операций у меня не сильно принципиальна, так что может что и получится самому наваять. Точность гораздо важнее, так как при перемещении камеры с высоты в 6 тыс. км до высоты 1 метра даже при небольшом косяке в расчетах могут получиться не стыковки соседних тайлов и как следствие - ненужные мне дырки в карте. И так пришлось исхитриться, чтобы компенсировать ошибки округления при выполнении мат.операций.
В общем - спасибо за подсказки, буду обдумывать услышанное.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 07 июн 2010, 22:10
Дмитрий Барышников
Тайлы есть суть квадрат (ну или прямоугольник) - какие там могут быть нестыковки, если только на полюсе?
По поводу сферы и эллипсоида - длина дуги на эллипсоиде будет отличаться от аналогичной на сфере аз счет радиусов большой и малой полуоси. Я думаю там чуть сложнее математика чем на сфере.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 08 июн 2010, 08:12
Shasoft
У меня тайл в виде треугольника, поэтому всё не так просто.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 08 июн 2010, 08:34
Дмитрий Барышников
Этого не может быть т.к. пикселы квадратные!!! А то что у Вас часть пикселов помечены как nodata еще ничего не значит.

Re: Библиотека на Си для булевских операций над полигонами

Добавлено: 08 июн 2010, 09:00
Shasoft
Может. :) Моя карта, как хочу, так и делаю.
Про "nodata" я вообще первый раз слышу. Вообще же в 3D всё выводится треугольниками. Просто текстуру буду натягивать на треугольник.