CLS : SCREEN 12: WINDOW (1, 120)-(160, 1): CLS DEFSTR A-Z PI! = 3.141593 'c! = 25.78: d! = 17.1: e! = 25.78: f! = 17.1: g! = 25: h! = 20 'c! = 33.9: d! = 26.41: e! = 34.99: f! = 22.31: g! = 36.49: h! = 24.91 c! = 22: d! = 29.81: e! = 26.1: f! = 30.91: g! = 23.5: h! = 32.41 'c! = 16.1: d! = 13.59: e! = 15: f! = 17.69: g! = 13.5: h! = 15.09 'c! = 28: d! = 10.18: e! = 23.9: f! = 9.09: g! = 26.49: h! = 7.59 'c! = 50: d! = 5: e! = 45: f! = 0: g! = 50: h! = 0 'c! = 45: d! = 40: e! = 50: f! = 35: g! = 50: h! = 40 'c! = 0: d! = 35: e! = 5: f! = 40: g! = 0: h! = 40 'c! = 5: d! = 0: e! = 0: f! = 5: g! = 0: h! = 0 Xdepart! = c!: Ydepart! = d!: Xarrivee! = e!: Yarrivee! = f! Xcentre! = g!: Ycentre! = h! R! = SQR((Xcentre! - Xarrivee!) ^ 2 + (Ycentre! - Yarrivee!) ^ 2) 'calcul rayon coul! = 17 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 PRINT "angle debut "; Angledebut!, "angle fin "; Anglefin! PRINT "R "; R! SLEEP 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