CLEAR '************* ajustement taille ecran *************** CLS OPEN "lignes.txt" FOR INPUT AS #1 max = 0 may = 0 DO WHILE NOT EOF(1) INPUT #1, A$, b, c, d, e, f, g, h, i$ 'c=Xdepart d=Ydepart e=Xfin f=Yfin IF c > max THEN max = c IF e > max THEN max = e IF d > may THEN may = d IF f > may THEN may = f LOOP Xmax$ = STR$(max): Xmax$ = LTRIM$(RTRIM$(Xmax$)) Ymax$ = STR$(may): Ymax$ = LTRIM$(RTRIM$(Ymax$)) xwin = CLNG(VAL(Xmax$)) ywin = CLNG(VAL(Ymax$)) CLOSE '******************************** dessin ************* SCREEN 12: WINDOW (-1, ywin + 2)-(xwin + 2, -1): CLS DEFSTR A-Z PI! = 3.141593 OPEN "lignes-2.txt" FOR INPUT AS #1 DO WHILE NOT EOF(1) INPUT #1, A$, b!, c!, d!, e!, f!, g!, h!, i$ ' (A$=A ou L )(b!=pointage) ' (c!=X depart)(d!=Y depart)(e!=X arrivee)(f!=Y arrivee) ' (g!=X centre rayon)(h!=Y centre rayon)(i$= sens du rayon) Xdepart! = c!: Ydepart! = d!: Xarrivee! = e!: Yarrivee! = f! Xcentre! = g!: Ycentre! = h! '''attribution des couleurs au pointage''' IF b! = 1 THEN 'SENS FIBRES TETE 1 coul! = 14 'couleur jaune END IF IF b! = 2 THEN 'SENS TRAVERS TETE 2 coul! = 10 'couleur vert clair END IF IF b! = 3 THEN 'SENS 120 degres TETE 3 coul! = 9 'couleur bleu clair END IF IF b! = 4 THEN 'SENS trous centrage TETE 4 coul! = 12 'couleur rouge clair END IF IF b! = 5 THEN 'SENS 160 degres TETE 5 coul! = 11 'couleur cyan clair END IF 'envoi ecran IF A$ = "L" THEN LINE (c!, d!)-(e!, f!), coul! END IF IF A$ = "A" THEN R! = SQR((Xcentre! - Xarrivee!) ^ 2 + (Ycentre! - Yarrivee!) ^ 2) 'calcul rayon X! = c! - g!: Y! = d! - h!'coord depart moins coord centre GOSUB GS01.ANALYSE X! = e! - g!: Y! = f! - h!'coord fin moins coord centre Angledebut! = Angle! GOSUB GS01.ANALYSE Anglefin! = Angle! IF Angledebut! = Anglefin! THEN 'controle si un cercle CIRCLE (g!, h!), R!, coul! ELSE CIRCLE (g!, h!), R!, coul!, Angledebut!, Anglefin! END IF END IF LOOP CLOSE DO LOOP WHILE INKEY$ = "" END '********************** GS01.ANALYSE: 'Calcul de l'angle trigo SELECT CASE X! ' ATN(expression numerique) CASE IS < 0: ' Calcul direct impossible SELECT CASE Y! CASE IS < 0 'QUADRANT 3 X1! = ABS(X!) Sinus1! = Y! / X1! Cosinus1! = X1! / Y! Tangente1! = Sinus! / Cosinus1! Angle1! = ATN(Tangente1!) Angle! = PI! + ABS(Angle1!) CASE IS = 0 ' Ligne des abscisses, a gauche Angle! = PI! CASE IS > 0 ' QUADRANT 2 X1! = ABS(X!) Y1! = ABS(Y!) Sinus1! = Y1! / X1! Cosinus1! = X1! / Y1! Tangente1! = Sinus1! / Cosinus1! Angle1! = ATN(Tangente1!) Angle! = PI! - ABS(Angle1!) END SELECT CASE 0 SELECT CASE Y! CASE IS < 0 ' Ligne des ordonnees en bas Angle! = PI! * 6 / 4 CASE IS = 0 ' A l'intersection lignes abscisses et ordonnees ' IMPOSSIBLE CASE IS > 0 ' Ligne des ordonnees, en haut Angle! = PI! / 2 END SELECT CASE IS > 0 SELECT CASE Y! CASE IS < 0 ' QUADRANT 4 Sinus! = Y! / X! Cosinus! = X! / Y! Tangente! = Sinus! / Cosinus! Angle! = ATN(Tangente!) Angle! = 2 * PI! - Angle! CASE IS = 0 ' Ligne des abscisses, a droite Angle! = 0 CASE IS > 0 ' QUADRANT 1 Sinus! = Y! / X! Cosinus! = X! / Y! Tangente! = Sinus! / Cosinus! Angle! = ATN(Tangente!) END SELECT END SELECT RETURN