DECLARE FUNCTION AngleHorizontal! (X!, Y!, CX!, CY!) DIM xscale AS SINGLE DIM yscale AS SINGLE 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 xscale = 640 / xwin yscale = 480 / ywin '******************************** dessin ************* SCREEN 12: 'WINDOW (-1, ywin + 2)-(xwin + 2, -1): CLS DEFSTR A-Z PI! = 3.141593 OPEN "lignes.txt" FOR INPUT AS #1 DO WHILE NOT EOF(1) INPUT #1, A$, b!, c!, d!, e!, f!, g!, h!, i$ c! = c! * xscale d! = d! * yscale e! = e! * xscale f! = f! * yscale g! = g! * xscale h! = h! * yscale ' (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 Angledebut! = AngleHorizontal!(c!, d!, g!, h!) Anglefin! = AngleHorizontal!(e!, f!, g!, h!) IF Angledebut! = Anglefin! THEN 'controle si un cercle CIRCLE (g!, h!), R!, coul! ELSE CIRCLE (g!, h!), R!, coul!, Anglefin!, Angledebut! END IF END IF LOOP CLOSE DO LOOP WHILE INKEY$ = "" END DEFSNG A-Z FUNCTION AngleHorizontal! (X!, Y!, CX!, CY!) CONST PI = 3.14159 DIM DX AS SINGLE DIM DY AS SINGLE DIM Angle AS SINGLE DX = X! - CX! DY = -(Y! - CY!) ' Il y a un signe - car les coordonn‚es en Y sont invers‚es! ' Le coin sup‚rieur gauche est de coordonn‚es (0, 0) ' Tandis que le coins inf‚rieur gauche a pour coordonn‚es ' (0, 640) SELECT CASE DX CASE IS = 0 IF DY > 0 THEN Angle = PI / 2 ELSE Angle = -PI / 2 END IF CASE IS > 0 IF DY > 0 THEN Angle = ATN(DY / DX) ELSE Angle = 2 * PI + ATN(DY / DX) END IF CASE IS < 0 Angle = PI - ATN(DY / -DX) END SELECT AngleHorizontal! = Angle END FUNCTION