Source PostScript (ordonnepoints3d.pps)

Retour Texte non formaté
%% syntaxe : array1 M ordonnepoints3d --> array2 %% array1 = tableau de points 3d coplanaires (plan P) %% M = point3d indiquant la direction de la normale a P %% array2 = les indices des points de depart, ranges dans le %% sens trigo par rapport a la normale /ordonnepoints3d { 5 dict begin /M defpoint3d /table exch def table isobarycentre3d /G defpoint3d %% calcul de la normale table 0 getp3d /ptref defpoint3d table 1 getp3d /A defpoint3d G ptref vecteur3d G A vecteur3d vectprod3d /vecteurnormal defpoint3d vecteurnormal G M vecteur3d scalprod3d 0 lt { vecteurnormal -1 mulv3d /vecteurnormal defpoint3d } if %% la table des angles table duparray exch pop {1 dict begin /M defpoint3d G ptref vecteur3d G M vecteur3d vecteurnormal angle3doriente end} papply3d % [0 1 table length 3 idiv 1 sub {} for] % exch doublebubblesort pop end } def