La librairie Vector2D (classe Vector2)

Pour mon premier code publié, voici un objet émulant les vecteurs en 2 dimensions.
Le code est au bout de ce lien.
le repositary complet est au bout de celui-ci.
Je l’ai conçu pour être facile d’usage et flexible au dépend de la performance. On peut, inverser cela en commentant quelques lignes (tout ce qui commence par « @ »).
Cet objet permet du code tel que celui ci:

a = Vector2( 2, 2)
b = Vector2( 3, 3)
c = 2*a - b    # Les opérateurs courants marchent (+, -, *, +=, -=, ==) exceptés le point du produit scalaire et le ^ du produit vectoriel
c += (0,2)    # Le duck typing autorise un tuple comme opérande
x,y = c    # sémantiquement équivalent à "x = c[0]; y=c[1]"
toto == c.x    #les vecteurs ont des propriétés x et y
tata== c[1]    # les vecteurs sont des énumérés.

Utiliser un tuple (ou n’importe quel énuméré), c’est cool, mais le duck typing va plus loin.
Il est possible d’utiliser n’importe quel objet avec les propriétés x et y OU getX() et getY() OU get_x() et get_y() dans la plupart des calculs.
Mon point de départ était la librairie “euclid.py” de Alex Holkner que j’ai élaguée puis améliorée. L’original s’occupe de la géométrie euclidienne de manière bien plus large.

J’ai préféré me limiter à 2 dimensions et aux vecteurs pour fournir un code pas trop fouillis à ceux qui n’ont pas besoin de plus. En particulier pour le jeu vidéo.
Dans ce contexte, j’ai constaté qu’il est plus simple (et performant) d’utiliser un “vrai” vecteur 2D qu’un vecteur 3D (ou n dimensions) dont on ignore une dimension.
Je pense publier une librairie plus complète plus tard.

Je publie ce code dans le domaine public. La règle est simple: vous en faites ce que vous voulez (et je ne suis pas responsable du résultat).
Je vous invite chaleureusement à me faire une donation, à me créditer et à garder le code résultant aussi libre que possible, mais avant tout je ne veux pas vous bloquer avec des contraintes de droit.

Bref! Voici les liens vers:
Le module vector2d.py
La documentation (en anglais, aproximatif, pour l’instant)
La libraire originale “euclid.py”. Plus complète mais moins cool (en python2.x)
Donation à votre bienfaiteur

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.