2010-11-08 3 views
0

Je suis en train de mettre en œuvre un algorithme de planification de trajectoire. J'aimerais vraiment pouvoir charger dans un "environnement" 2D en format graphique vectoriel (svg), pour que des obstacles complexes puissent être utilisés. Cela rendrait également assez facile de superposer le chemin sur l'environnement et exporter un autre fichier avec le résultat de l'algorithme. Ce que j'espère être capable d'utiliser est une sorte de bibliothèque dans ma méthode de test de collision, de sorte que je puisse simplement demander: «Y at-il un obstacle à x, y? et revenez vrai ou faux. Et bien sûr, j'aimerais pouvoir ajouter le chemin lui-même au fichier.Bibliothèques pour la lecture et l'écriture de graphiques vectoriels - interrogation x, y pour la couleur

Une brève recherche et quelques téléchargements m'ont laissé des bibliothèques qui créent des svg ou les rendent, mais aucune ne m'a vraiment donné ce dont j'avais besoin. Suis-je préférable de simplement analyser le xml et de tout pirater manuellement? Cela semble être beaucoup d'efforts gaspillés.

Répondre

1

1.Cela peut être un peu lourd, mais Qt a un très bon ensemble d'outils appelé Graphics View Framework. En utilisant ces outils, vous pouvez créer un groupe de QGraphicsItems (polygones, chemins, etc ..) dans un QGraphicsScene, puis interroger la scène en lui donnant une position. En utilisant ceci, vous n'aurez jamais à rendre la scène à un bitmap raster. http://doc.trolltech.com/4.2/graphicsview.html, http://doc.trolltech.com/4.2/qgraphicsscene.html#itemAt

2.Cairo dispose d'outils pour dessiner toutes sortes de formes aussi bien, mais je crois que vous aurez à rendre toute l'image, puis vérifier les valeurs de pixel. http://cairographics.org/

0

La spécification SVG comprend des interfaces DOM pour la détection de collision:

En utilisant ces méthodes, tous les "obstacles" (qui peuvent être des groupes d'éléments primitifs, en utilisant l'élément <g>) devrait être étiqueté comme une cible d'événements de pointeur.

Ces méthodes sont basées sur une boîte englobante; elles ne sont peut-être pas assez sophistiquées pour vos besoins.

0

Merci pour les réponses. Je n'ai pas réussi à faire fonctionner QT (c'est énorme!) Ou Cairo, et j'ai fini par utiliser PNGwriter, qui fait à peu près ce que je voulais, sauf qu'il lit et écrit des PNG au lieu de graphiques vectoriels. L'inconvénient ici est que mes coordonnées doivent être arrondies à des pixels pairs. Peut-être que je continuerai à regarder dans les graphiques vectoriels, mais cette solution est satisfaisante pour ce projet.

Questions connexes