1 '------------- conchoide --------- 2 ' ecrit en GwBasic 3 '......... par Rocanin-Borraz ........ 4 ' 10 SCREEN 9: CLS 99 ' 100 'Saisie des parametres 110 INPUT ; "rp:"; RP: INPUT ; " e:"; E: INPUT " pas"; PAS 120 ECH = 200 / (RP * 2): LIGNES = 360 / PAS 130 DIM CRB(LIGNES, 3) 199 ' 200 'Calcul des points de la courbe 210 FOR I = 0 TO 360 STEP PAS 220 J = I / PAS 230 R = E * COS(I * 3.14159 / 180) + RP 240 X = R * COS(I * 3.14159 / 180) - E 250 Y = R * SIN(I * 3.14159 / 180) 260 CRB(J, 1) = X: CRB(J, 2) = Y: CRB(J, 3) = 0 290 NEXT I 299 ' 300 'Rotation de la courbe ? 310 INPUT "rotation (non=0 90=1 180=2 270=3)"; AXE$ 320 REP = INSTR("0123", AXE$) 340 ON REP GOSUB 1000, 2000, 3000, 4000 399 ' 600 'Dessin de la courbe 610 FOR I = 0 TO 360 STEP PAS 620 J = I / PAS 630 X = CRB(J, 1): Y = CRB(J, 2) 640 IF I THEN LINE -(X * ECH + 300, Y * ECH + 150) ELSE PSET (X * ECH + 300, Y * ECH + 150) 690 NEXT I 699 ' 700 'Sauvegarde des points pour import DAO 710 INPUT "nom de fichier:"; REP$: NOM$ = REP$ + ".TXT" 720 OPEN "o", #1, NOM$ 730 FOR I = 0 TO 360 STEP PAS 740 J = I / PAS 750 PRINT #1, USING "#####.###"; CRB(J, 1); 760 PRINT #1, USING "#####.###"; CRB(J, 2); 770 PRINT #1, CRB(J, 3) 780 NEXT I 790 CLOSE #1 799 ' 800 'generer de l'ISO 805 NOM$ = REP$ + ".cn" 810 INPUT "ligne de depart (valeur):", LIGNE 820 ENTETE$ = "(rp=" + STR$(RP) + " e=" + STR$(E) + " pas=" + STR$(PAS) + " " + AXE$ + ")" 825 OPEN "o", #1, NOM$ 830 PRINT #1, ENTETE$ 835 FOR I = 0 TO 360 STEP PAS 840 J = I / PAS: LIGNE = LIGNE + 2: LIGNE$ = "N" + MID$(STR$(LIGNE), 2) 845 X = INT(CRB(J, 1) * 1000): X = X / 1000: X$ = STR$(X) 850 IF INSTR(X$, " ") THEN X$ = MID$(X$, 2) 855 Y = INT(CRB(J, 2) * 1000): Y = Y / 1000: Y$ = STR$(Y) 860 IF INSTR(Y$, " ") THEN Y$ = MID$(Y$, 2) 865 PRINT #1, LIGNE$; TAB(7); "G01 X" + X$; TAB(22); "Y" + Y$ 870 NEXT I 875 CLOSE #1 899 ' 900 'Affichage des valeurs calculees 910 INPUT REP$ 920 FOR I = 0 TO 360 STEP PAS 930 J = I / PAS 940 PRINT CRB(J, 1), CRB(J, 2) 950 NEXT I 960 INPUT REP$ 970 SCREEN 0 990 ' 999 END 1000 'Rotation=0 1010 LINE (200, 150)-(400, 150), 4: LINE (300, 100)-(300, 200), 4 1020 AXE$ = "rotation=0" 1990 RETURN 1999 ' 2000 'Rotation de 90 2010 FOR I = 0 TO 360 STEP PAS 2020 J = I / PAS 2030 TEMP = CRB(J, 1): CRB(J, 1) = CRB(J, 2) * -1: CRB(J, 2) = TEMP 2040 NEXT I 2050 LINE (200, 150)-(400, 150), 4: LINE (300, 100)-(300, 200), 4 2060 AXE$ = "rotation=90" 2990 RETURN 2999 ' 3000 'Rotation de 180 3010 FOR I = 0 TO 360 STEP PAS 3020 J = I / PAS 3030 CRB(J, 1) = CRB(J, 1) * -1: CRB(J, 2) = CRB(J, 2) * -1 3040 NEXT I 3050 LINE (200, 150)-(400, 150), 4: LINE (300, 100)-(300, 200), 4 3060 AXE$ = "rotation=180" 3990 RETURN 3999 ' 4000 'Rotation de 270 4010 FOR I = 0 TO 360 STEP PAS 4020 J = I / PAS 4030 TEMP = CRB(J, 1): CRB(J, 1) = CRB(J, 2): CRB(J, 2) = TEMP * -1 4040 NEXT I 4050 LINE (200, 150)-(400, 150), 4: LINE (300, 100)-(300, 200), 4 4060 AXE$ = "rotation=270" 4990 RETURN 4999 '