Библиотеки для чтения и записи векторной графики - опросы x, y для цвета - PullRequest
0 голосов
/ 08 ноября 2010

Я делаю реализацию для алгоритма планирования пути. Мне бы очень хотелось иметь возможность загружать в 2-мерную «среду» в формате векторной графики (svg), чтобы можно было использовать сложные препятствия. Это также позволит довольно легко наложить путь на среду и экспортировать другой файл с результатом алгоритма.

Что я надеюсь сделать, так это использовать какую-то библиотеку в моем методе проверки столкновений, чтобы я мог просто спросить: «Есть ли препятствие в точке х, у?» и вернитесь, правда или ложь. И тогда, конечно, я хотел бы иметь возможность добавить сам путь к файлу.

После короткого поиска и нескольких загрузок у меня были библиотеки, которые либо создают svg, либо воспроизводят их, но ни одна из них не дала мне того, что мне нужно. Мне лучше просто разобрать xml и взломать все вручную? Это похоже на много потраченных впустую усилий.

Ответы [ 3 ]

1 голос
/ 08 ноября 2010

1. Это может быть немного сложным, но в Qt есть действительно отличный набор инструментов, называемый Graphics View Framework. Используя эти инструменты, вы можете создать группу QGraphicsItems (полигоны, пути и т. Д.) В QGraphicsScene, а затем запросить сцену, задав ей позицию. Используя это, вам никогда не придется рендерить сцену в растровое растровое изображение. http://doc.trolltech.com/4.2/graphicsview.html, http://doc.trolltech.com/4.2/qgraphicsscene.html#itemAt

2.Каир также имеет инструменты для рисования всевозможных фигур, но я считаю, что вам придется визуализировать все изображение, а затем проверить значения пикселей. http://cairographics.org/

0 голосов
/ 29 ноября 2010

Спасибо за ответы.Мне не удалось заставить что-либо работать в QT (это здорово!) Или в Каире, и я закончил тем, что перешел на PNGwriter, который делает почти то, что я хотел, за исключением того, что он читает и пишет PNG вместо векторной графики.Недостатком здесь является то, что мои координаты должны быть округлены до четных пикселей.Возможно, я продолжу изучать векторную графику, но это решение удовлетворительно для этого проекта.

0 голосов
/ 08 ноября 2010

Спецификация SVG включает некоторые интерфейсы DOM для обнаружения столкновений:

Используя эти методы, все «препятствия» (которые могут быть группами примитивных элементов, использующих элемент <g>) должны быть помечены как цель событий указателя.

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

...