Et ça continue ...
Nouveau groupe "o." correspond à "outils"
Je rappelle que "t." est déjà utilisé par "tableur"
donc :
- o.distance(p1,p2) - donne la distance entre deux points. On peut se servir de Listes pour aller plus vite
- o.bar(mat) - Calcule le barycentre pondéré d'une matrice formatée en 2 lignes x colonnes où x est le nombre de points. ex : o.bar([[1,2][1,1]]) calcule l'isobarycentre du segment délimité par les points de numéro 1 et 2

C'est pas bien compliqué mais ça peut toujours servir...
J'étais sinon en train de réfléchir sur un algo permettant de tracer une face entre 4 points dans l'espace sans que la face soit concave.
Je rappelle que les faces sont "codées" par des séquences où l'ordre est important car définit l'unique vecteur normal à la face qui permet de définir le sens de projection.
Un exemple : [A B C D]
L'algo qui trace la face, ne fait qu'en fait tracer les lignes qui la composent. Donc il va tracer une ligne entre les points A et B, puis B et C puis C et D, et enfin D et A pour fermer le quadrilatère.
Avec un produit vectoriel, on définit le sens de la face pour le mode
solid en suivant cette ordre
J'ai donc tout d'abord pensé à un algo de calcul de distances.
Le principe était le suivant :
On a 4 points dans l'espace, A, B, C, D.

Si on part du point A, on va projeter un rayon sur B, puis sur C, puis sur D et on va récupérer la plus courte distance. La plus courte distance définit le prochain point à attendre.
La séquence commencera donc par [AB]

Ensuite, on "oublie" A et on recommence la projection à partir de B. Le point le plus proche est C... et ainsi de suite jusqu'à former la séquence complète.
A vue de nez, ça parait parfait comme algo. Sauf que, voilà, il y a quelques pépins.
Posons l'espace suivant composé toujours des quatre points mais avec des positions différentes :

Voyez-vous le problème ?
Allez, je vous aide, en bleu la phase "correcte", en rouge "l'erreur" provoquée par l'algo, et en vert ce qui devrait se passer :

Voilà, c'est ma torture mentale depuis 3 heures...
