我正在为路径规划算法做一个实现。我真的希望能够以矢量图形(svg)格式加载2d“环境”,以便可以使用复杂的障碍物。这也可以很容易地将路径覆盖到环境中,并使用算法的结果导出另一个文件。
我希望能够做的是在我的碰撞测试方法中使用某种库,这样我就可以简单地问,“x,y有障碍吗?”并得到回真或假。当然,我希望能够将路径本身添加到文件中。
简短的搜索和几次下载给我留下了库,这些库要么创建svg,要么渲染它们但没有一个真正给了我我需要的东西。我最好只解析xml并手动黑客攻击一切?这似乎是浪费了很多精力。
答案 0 :(得分:1)
1.这可能有点重,但Qt有一套很棒的工具,叫做Graphics View Framework。使用这些工具,您可以在QGraphicsScene中创建一堆QGraphicsItems(多边形,路径等),然后通过给它一个位置来查询场景。使用此功能,您将永远不必将场景渲染到栅格位图。 http://doc.trolltech.com/4.2/graphicsview.html,http://doc.trolltech.com/4.2/qgraphicsscene.html#itemAt
2.Cairo也有绘制各种形状的工具,但我相信你必须渲染整个图像,然后检查像素值。 http://cairographics.org/
答案 1 :(得分:0)
SVG规范包括一些用于冲突检测的DOM接口:
使用这些方法,所有“障碍”(可以是使用<g>
元素的原始元素组)应该被标记为指针事件的目标。
然而,这些方法是基于边界框的,因此可能不够复杂,无法满足您的要求。
答案 2 :(得分:0)
感谢您的回复。我没有设法在QT中工作(它很大!)或Cairo,我最终选择了PNGwriter,它完全符合我的要求,当然,除了它读取和写入PNG而不是矢量图形。这里的缺点是我的坐标必须四舍五入到偶数像素。也许我会继续研究矢量图形,但这个解决方案对于这个项目来说是令人满意的。