Source PostScript (interdroite.pps)

Retour Texte non formaté
/interdroite { %% A B C D /dr@ite2 4 array def dr@ite2 3 3 -1 roll put dr@ite2 2 3 -1 roll put dr@ite2 1 3 -1 roll put dr@ite2 0 3 -1 roll put /dr@ite1 4 array def dr@ite1 3 3 -1 roll put dr@ite1 2 3 -1 roll put dr@ite1 1 3 -1 roll put dr@ite1 0 3 -1 roll put %%% %% trace pour deboguage %%% dr@ite1 aload pop droite %%% dr@ite2 aload pop droite %%% Dans tous les cas, on suppose que l'intersection existe %%% %%% * la 1ere droite est verticale. les equations reduites sont %%% x = a1 et y = a2 x + b2 %%% Le point d'intersection est : %%% {{x = a1, y = b2 + a1 a2}} %%% %%% * la 2eme droite est verticale. les equations reduites sont %%% x = a1 x+ b1 et x = a2 %%% Le point d'intersection est : %%% {{x = a2, y = b1 + a1 a2}} %%% %%% * aucune n'est verticale. Les equations reduites sont %%% y = a1 x + b1 et y = a2 x + b2 %%% Le point d'intersection est : %%% { { b2 - b1 a1 b2 - a2 b1 } } %%% { { x = -------, y = ------------- } } %%% { { a1 - a2 a1 - a2 } } %%% remarque : pour le moment, je n'arrive pas a rendre mes variables %%% locales : elle restent globales. Pour que cela ne soit pas trop %%% genant, je les note respectivement @1, @@1, @2 et @@2 au lieu de a1, %%% b1, a2 et b2. dr@ite1 aload pop verticale? { /@1 {dr@ite1 aload pop pop pop pop} def /@2 {dr@ite2 aload pop coeffdir} def /@@2 {dr@ite2 aload pop ordorig} def @1 @1 @2 mul @@2 add } { dr@ite2 aload pop verticale? { /@1 {dr@ite1 aload pop coeffdir} def /@@1 {dr@ite1 aload pop ordorig} def /@2 {dr@ite2 aload pop pop pop pop} def @2 @1 @2 mul @@1 add } { /@1 {dr@ite1 aload pop coeffdir} def /@@1 {dr@ite1 aload pop ordorig} def /@2 {dr@ite2 aload pop coeffdir} def /@@2 {dr@ite2 aload pop ordorig} def @@2 @@1 sub @1 @2 sub div @1 @@2 mul @2 @@1 mul sub @1 @2 sub div } ifelse } ifelse } def