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-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.