* ZIGZAG PROCEDUR JEANV 96/12/03 21:16:42 2411 IN1 = FAUX; IDEINI = FAUX; IDEFIN = FAUX; SI IDIM3; SINON; FINSI; TACT = TABLE; PI180 = PI / 180.; SI (EXISTE N1); IN1 = VRAI; FINSI; * ---------------------------------------------- Lecture des arguments TACT.I = TABLE; TACT.I.'SC' = 0.; REPETER B1; SI ((EXISTE M1) ET (EXISTE M2)); SI (('NEG' M1 'DINI') ET ('NEG' M1 'DFIN') ET ('NEG' M1 'D') ET ('NEG' M1 'S') ET ('NEG' M1 'R') ET ('NEG' M1 'A')); FINSI; SI ('EGA' M1 'DINI'); IDEINI = VRAI; DEINI = M2; FINSI; SI ('EGA' M1 'DFIN'); IDEFIN = VRAI; DEFIN = M2; FINSI; * -------------------------------------------------- Partie rectiligne SI ('EGA' M1 'D'); I=I+1; M2 = ABS M2; TACT.I = TABLE; TACT.I.'L' = M2; LGTOT = LGTOT + M2; TACT.I.'SC' = LGTOT; FINSI; * ------------------------------------------------ Partie courbe : S,R SI ('EGA' M1 'S'); SI ('EGA' M3 'R'); I=I+1; M4 = ABS M4; TACT.I = TABLE; TACT.I.'ANGLE' = (M2 / M4) / PI180; TACT.I.'RAYON' = M4; LGTOT = LGTOT + (ABS M2); TACT.I.'SC' = LGTOT; SI ((ABS (TACT.I.'ANGLE')) > 179.999); FINSI; SINON; MESS 'ERREUR : S FLOT1 doit etre accompagne de R FLOT2'; FINSI; FINSI; * ------------------------------------------------ Partie courbe : A,R SI ('EGA' M1 'A'); SI ('EGA' M3 'R'); I=I+1; M4 = ABS M4; TACT.I = TABLE; TACT.I.'ANGLE' = M2; TACT.I.'RAYON' = M4; LGTOT = LGTOT + ((ABS M2)*PI180*M4); TACT.I.'SC' = LGTOT; SI ((ABS (TACT.I.'ANGLE')) > 179.999); FINSI; SINON; MESS 'ERREUR : A FLOT1 doit etre accompagne de R FLOT2'; FINSI; FINSI; * ----------------------------------------- Partie courbe : S,R ou A,R SI ('EGA' M1 'R'); SI ('EGA' M3 'S'); I=I+1; M2 = ABS M2; TACT.I = TABLE; TACT.I.'ANGLE' = (M4 / M2) / PI180; TACT.I.'RAYON' = M2; LGTOT = LGTOT + (ABS M4); TACT.I.'SC' = LGTOT; SI ((ABS (TACT.I.'ANGLE')) > 179.999); FINSI; SINON; SI ('EGA' M3 'A'); I=I+1; M2 = ABS M2; TACT.I = TABLE; TACT.I.'ANGLE' = M4; TACT.I.'RAYON' = M2; LGTOT = LGTOT + ((ABS M4)*PI180*M2); TACT.I.'SC' = LGTOT; SI ((ABS (TACT.I.'ANGLE')) > 179.999); FINSI; SINON; FINSI; FINSI; FINSI; FINSI; SINON; QUITTER B1; FINSI; FIN B1; SI ((NON IN1) ET (NON IDEINI) ET (NON IDEFIN)); FINSI; SI (IDEINI ET (NON IDEFIN)); IDEFIN = VRAI; DEFIN = DEINI; FINSI; SI ((NON IDEINI) ET IDEFIN); IDEINI = VRAI; DEINI = DEFIN; FINSI; * -------------------------- Choix arbitraire entre N1 et (DINI, DFIN) SI (IN1 et IDEINI); IDEINI = FAUX; IDEFIN = FAUX; FINSI; * ------------------------------------------- Repartition des elements SI IN1; SI (N1 < I); MESS 'ERREUR : Il faut au moins autant d elements que de lignes' ' elementaires.'; FINSI; D0 = (TACT.I.'SC') / N1; DF = D0; SINON; D0 = DEINI; DF = DEFIN; FINSI; PTE = (DF - D0) / TACT.I.'SC'; * ---------------------------------------- Creation du maillage ZIGZAG PC = POIN0; REPETER B2 I; 'DFIN' (D0+(PTE*TACT.&B2.'SC')); PC = PN; TACT.&B2.'PF' = PN; FINSI; SI IDIM3; SINON; FINSI; 'DFIN' (D0+(PTE*TACT.&B2.'SC')); PC = PN; TACT.&B2.'PF' = PN; FINSI; SI ('EGA' &B2 1); SINON; FINSI; FIN B2; 'FINP' GEO1; * --------------------------------------------------------------------
© Cast3M 2003 - Tous droits réservés.
Mentions légales