web-dev-qa-db-fra.com

Bonne bibliothèque de géométrie en python?

Je cherche une bonne bibliothèque bien développée pour les manipulations et évaluations géométriques en python, comme:

  • évaluer l'intersection entre deux lignes en 2D et 3D (si présentes)
  • évaluer le point d'intersection entre un plan et une ligne, ou la ligne d'intersection entre deux plans
  • évaluer la distance minimale entre une ligne et un point
  • trouver l'orthonormal à un plan passant par un point
  • faire pivoter, traduire, refléter un ensemble de points
  • trouver l'angle dièdre défini par quatre points

J'ai un recueil pour toutes ces opérations, et je pourrais l'implémenter mais malheureusement je n'ai pas le temps, donc j'aimerais une bibliothèque qui le fait. La plupart des opérations sont utiles à des fins de jeu, donc je suis sûr que certaines de ces fonctionnalités peuvent être trouvées dans les bibliothèques de jeux, mais je préférerais ne pas inclure de fonctionnalités (comme les graphiques) dont je n'ai pas besoin.

Aucune suggestion ? Merci

90
Stefano Borini

Jetez un œil à SymPy .

34
John Y

Shapely est un joli python wrapper autour de la populaire GEOS bibliothèque.

27
A. Coady

J'ai trouvé pyeuclid pour être un grand paquet mathématique euclidien à usage général simple. Bien que la bibliothèque ne contienne pas exactement les problèmes que vous avez mentionnés, son infrastructure est suffisamment bonne pour faciliter la rédaction de ceux-ci par vous-même.

13
Dov Grobgeld
10
Agnel Kurian

geometry-simple a des classes Point Line Plane Movement en ~ 300 lignes, utilisant uniquement numpy; regarde.

6
denis

Je veux vraiment une bonne réponse à cette question, et celles ci-dessus m'ont laissé insatisfait. Cependant, je suis juste tombé sur pythonocc qui a fière allure, à part manquer de bons documents et avoir encore quelques problèmes avec l'installation (pas encore compatible pypi). La dernière mise à jour date d'il y a 4 jours (19 juin 2011). Il enveloppe OpenCascade qui a une tonne de fonctionnalités de géométrie et de modélisation. Depuis le site Web de pythonocc:

pythonOCC est un cadre de développement CAO/CAE/PLM 3D pour le langage de programmation Python. Il fournit des fonctionnalités telles que les opérations topologiques et géométriques avancées, l'échange de données (STEP, IGES, import/export STL), Maillage 2D et 3D, simulation de corps rigides, modélisation paramétrique.

[EDIT: J'ai maintenant téléchargé pythonocc et commencé à travailler sur certains des exemples]

Je crois qu'il peut effectuer toutes les tâches mentionnées, mais je l'ai trouvé peu intuitif à utiliser. Il est créé presque entièrement à partir de wrappers SWIG, et par conséquent, l'introspection des commandes devient difficile.

6
BenjaminGolder

Python Wild Magic est un autre code encapsulé SWIG. Il s'agit cependant d'une bibliothèque de jeux, mais vous pouvez manipuler le fichier de bibliothèque SWIG pour exclure tout élément graphique indésirable de l'API Python.

2
Velimir Mlaker

Vous pouvez être intéressé par Python module SpaceFuncs du projet OpenOpt, http://openopt.org

SpaceFuncs est un outil de modélisation géométrique 2D, 3D et N-dimensionnelle avec des possibilités de calculs paramétrés, d'optimisation numérique et de résolution de systèmes d'équations géométriques

2
user871016