PAGE
<
<
<        T R A C E   D U   S E G M E N T   ( M 1 , M 2 )  :
<
<
<        FONCTION :
<                      CETTE ROUTINE TRACE LE SEGMENT
<                    M1M2 , TEL QUE :
<                                    M1(X1,Y1) ,
<                                    M2(X2,Y2).
<
<
<        RESULTAT :
<                    X=X2 ,
<                    Y=Y2.
<
<
         TABLE
FPOINT:  EQU         $
FX1:     FLOAT       0
FY1:     FLOAT       0
FX2:     FLOAT       0
FY2:     FLOAT       0
FX:      FLOAT       0
FY:      FLOAT       0
FDEUX:   FLOAT       2
F05:     FLOAT       0.5
         PROG
SEG:     EQU         $
<
< INITIALISATIONS DU PROCESSUS RECURSIF :
<
         LA          'FF80,C         < A CAUSE DU BLOC FLOTTANT...
         PSR         A,W
         LRM         W
         WORD        FPOINT          < W BASE LES DONNEES FLOTTANTES.
         USE         W,FPOINT
         LA          X1
         FLT
         FST         FX1
         LA          Y1
         FLT
         FST         FY1
         LA          X2
         FLT
         FST         FX2
         LA          Y2
         FLT
         FST         FY2
         LX          X1
         LY          Y1
         BSR         APOINT          < AFFICHAGE 1ER POINT.
         BSR         ADICO           < PARCOURS DICHOTOMIQUE DE (M1,M2).
         LX          X2
         LY          Y2
         BSR         APOINT          < AFFICHAGE 2EME POINT.
         PLR         A,W
         STA         'FF80,C         < RESTAURE UN BOUT D'IMAGE...
         RSR
<
<
<        P A R C O U R S   D I C H O T O M I Q U E
<                    D ' U N   S E G M E N T  :
<
<
DICO:    EQU         $
         FLD         FX1
         FAD         FX2
         FDV         FDEUX
         FST         FX              < X=(X1+X2)/2.
         FLD         FY1
         FAD         FY2
         FDV         FDEUX
         FST         FY              < Y=(Y1+Y2)/2.
<
< TEST DE M PAR RAPPORT A M1 :
<
         FSB         FY1
         FIX
         JANE        E31             < CAS : M#M1.
         FLD         FX
         FSB         FX1
         FIX
         JAE         E32             < CAS : M=M1.
<
< TEST DE M PAR RAPPORT A M2 :
<
E31:     EQU         $
         FLD         FY
         FSB         FY2
         FIX
         JANE        E30             < CAS M#M2 ET M#M1.
         FLD         FX
         FSB         FX2
         FIX
         JANE        E30             < CAS : M#M2 ET M#M1.
<
< CAS OU M=M1 OU M=M2 :
<
E32:     EQU         $
         FLD         FX
         FAD         F05
         FIX
         LR          A,X
         FLD         FY
         FAD         F05
         FIX
         LR          A,Y
         BSR         APOINT          < AFFICHAGE DU POINT M.
         RSR                         < CAS : M=M1 : ON ARRETE LA
                                     < DICHOTOMIE DESCENDANTE PROVISOI-
                                     < REMENT ...
<
< CAS OU M#M1 ET M#M2 :
<
E30:     EQU         $
         FLD         FX2
         PSR         A,B
         FLD         FY2
         PSR         A,B
         FLD         FX
         FST         FX2
         FLD         FY
         FST         FY2             < M2 <-- M.
         BSR         ADICO           < DICHOTOMIE DU NOUVEAU SEGMENT
                                     < (M1,M2).
         FLD         FX2
         FAD         F05
         FIX
         LR          A,X
         FLD         FY2
         FAD         F05
         FIX
         LR          A,Y
         BSR         APOINT          < AFFICHAGE DE M2 AU RETOUR.
                                     < D'UNE DICHOTOMIE.
         FLD         FX2
         FST         FX1             < PUIS :
         FLD         FY2
         FST         FY1             < M1 <-- M2.
         PLR         A,B
         FST         FY2             < RESTAURATION
         PLR         A,B
         FST         FX2             < DU POINT M2.
         JMP         DICO            < ET ON REPREND LA DICHOTOMIE...



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.