J'ai un polygone complexe (éventuellement concave) et quelques-uns de ses bords marqués comme points d'entrée/sortie. il est possible qu'à l'intérieur de ce polygone se trouvent un ou plusieurs blocs de forme arbitraire. Quelles approches pourrais-je utiliser pour déterminer si un chemin d'une certaine largeur existe entre une paire d'arêtes d'entrée/sortie? Après avoir lu la question, il ressemble à un type de devoirs - ce n'est pas le cas. Je souhaite juste avoir au moins quelques pistes que je pourrais poursuivre, car c'est nouveau pour moi.comment savoir si une forme est praticable
Répondre
Jetez un coup d'œil à Motion Planning - il y a une mine d'informations là-bas.
Cela dépend si l'itinéraire doit avoir une largeur. Si l'objet qui doit se déplacer a une taille finie, vous devez prendre la différence Minkowski de votre polygone de domaine avec le polygone de l'objet en mouvement, puis vous essayez de le parcourir. Une façon de calculer exactement les chemins est de calculer le graphique de visibilité du polygone. Le graphe de visibilité a des sommets correspondant aux sommets du polygone du domaine (éventuellement avec des trous où se trouvent les obstacles), et deux sommets sont reliés par un bord s'ils peuvent se "voir" entre eux. La forme est passable s'il existe un ensemble d'arêtes joignant une entrée à une sortie. Vous pouvez également calculer des choses comme les chemins les plus courts. Calculer le graphique de la visibilité d'une manière naïve n'est pas difficile, mais lent. Il existe des algorithmes très avancés pour le faire, mais ils (AFAIK) n'ont pas été implémentés. J'ai essayé de le mettre en place il y a quelques années, avec des résultats médiocres. La plupart d'entre eux assument des sommets en position générale, en utilisant l'arithmétique exacte, alors que les applications pratiques utiliseraient des nombres à virgule flottante.
Oui, l'objet est en effet de taille finie. merci pour l'avance sur les différences Minkowski - jamais entendu parler d'eux avant. –
- 1. Comment savoir si une certaine forme est ouverte?
- 2. Comment savoir si une session est active?
- 3. Comment savoir si une fonction est terminée?
- 4. Comment savoir si l'objet raphael est caché?
- 5. Savoir si une propriété est déclarée virtuelle
- 6. Savoir si une touche est enfoncée, wxPython
- 7. android savoir si une application est installée
- 8. PHP Comment savoir si une variable est une référence?
- 9. Comment savoir si une action est une expression lambda?
- 10. Comment savoir si une propriété est une collection générique
- 11. Comment savoir si une police est une police de symbole?
- 12. Comment savoir si l'applet ou l'application est
- 13. Comment savoir si NSUserDefaults est déjà enregistré?
- 14. Comment savoir si un utilisateur est connecté?
- 15. Comment savoir si un ordinateur est redémarré
- 16. Comment savoir si dll RAPI est existant
- 17. Comment savoir si Oracle Streams est installé?
- 18. Comment savoir si UITableViewCell est sélectionné?
- 19. Comment savoir si une fonction est définie dans php
- 20. Comment savoir si un PropertyInfo est une collection
- 21. Réflexion AS3. Comment savoir si une méthode est surchargée?
- 22. Comment savoir si une variable C integer est signée?
- 23. Comment savoir si une fenêtre est active? (Win32 API)
- 24. Comment savoir si Invoke est requis pour une propriété?
- 25. comment savoir si une case est cochée dans jQuery
- 26. Comment savoir si un Type est une classe statique?
- 27. Comment savoir si un descripteur de fichier est une socket?
- 28. Comment savoir si une classe Java est abstraite?
- 29. Comment savoir si une référence d'objet IDisposable est supprimée?
- 30. En Perl, comment savoir si une chaîne est un nombre?
c'est intéressant, merci! –
Je pense en général que c'est un problème de recherche, c'est pourquoi je n'ai pas vraiment donné plus de détails. Vous avez vraiment besoin de savoir quelles sont vos restrictions et d'optimiser pour cela. – Larry