rocbo menu

 

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$ + ".ISO"
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 '
 
 

Retour