You are on page 1of 3

10 CLEAR:ANGLE2:CLS:PRINTREV"* Replanteos * "NORM"[1] Ptos por coor[2]

Circulos y Clotoides [3] CLOTOIDE -Exclusivamente- [4] Trans


Clotoide entre Circ.";
20 GOSUB "K$"
30 ON VAL(K$) GOTO 50,290,700,900
40 GOTO 20
50 CLS:INPUT "Nø PTOS POR COORD>",N
60 ERASEX,Y,Z,N$:CLS:DIM X(N),Y(N),Z(N),N$(N)
70 FOR I=1 TO N:INPUT "NOMBRE DEL PTO|",N$(I),"COORD X
PTO>",X(I),"COORD Y PTO>",Y(I),"COORD Z PTO>",Z(I):NEXT I
80 CLS:PRINT "Nombre pto estacion EXE->*FIN*"
90 INPUT " >",NE$:IF NE$="" THEN "REPLANT"
100 GOSUB 270
110 IF I<=N THEN NEST=I ELSE 80
120 INPUT "Altura Instr>",I,"Descentrado>",DESC
130 CLS:PRINT "Nombre pto Visado EXE->*FIN*"
140 INPUT " >",NE$:IF NE$="" THEN 80
150 GOSUB 270
160 IF I<=N THEN NVIS=I ELSE 130
170 INPUT "Altura mira>",M
180 X=X(NVIS)-X(NEST)
190 Y=Y(NVIS)-Y(NEST)
200 IF Y=0 THEN Y=1E-80
210 GOSUB 1650
220 HORIZ=O+DESC+25.6066667:HORIZ=HORIZ-400*FIX(HORIZ/400):VERT=100-
ATN(Z(NVIS)-Z(NEST)-I+M-D^2*.000000066)/D:DINC=D/SINVERT
230 PRINT "ANGULO HORIZONTAL>"HORIZ
240 PRINT "ANGULO VERTICAL>"VERT
250 PRINT "DISTANCIA >"DINC
260 GOSUB "K$":GOTO 130
270 FOR I=1 TO N:IF LEFT$(N$(I),1)=NE$ THEN RETURN ELSE NEXT
280 CLS:PRINT"NO EXISTE ESE PTO":GOSUB "K$":RETURN
290 ' REPLANTEOS: CIRCULOS Y CLOTOIDES
300 P=.9*PI/180:CLS:INPUT "Radio Circulo>",R," é Alineac
Entrada>",OTI:PRINT"CENTRO (S)uperior o (I)nferior"
310 K$=INPUT$(1):IFK$="i" OR K$="I" THEN A=-1:GOTO 340
320 IFK$="s" OR K$="S" THEN A=1:GOTO 340
330 GOTO 310
340 PRINT "Ci(R)culo o (C)lotoide"
350 GOSUB "K$":A$=K$
360 IFA$="R" OR A$="r" THENINPUT "Angulo entre Tangs ò >",ANG
370 INPUT "Coord X Pto 1ø>",X0,"Coord Y Pto 1ø>",Y0,"Long Intervalo
>",LINT
380 IF A$="C" OR A$="c" THEN INPUT "Long Trans Espirica>",L:GOTO 400
390 CLS:L=ANG*R*P:PRINT"DESARROLLO >"L,"CUERDA >"2*R*SIN(ANG/2),"Dist
Inters-Alin >"R*TAN(ANG/2):GOSUB "K$":CLS:PRINT"BISECTRIZ
>"R*(1/COS(ANG/2)-1),"FLECHA >"R*(1-COS(ANG/2));:GOSUB "K$"
400 FOR I=1 TO (L/LINT):LONG=LINT*I:GOSUB 430:NEXT I:LONG=L:GOSUB 430
410 CLS:ii=0:INPUT "Long para el calculo de un Pto nuevo (EXE)->FIN
>",ii:IF ii=0 THEN "REPLANT"
420 LONG=ii:GOSUB 430:GOTO 410
430 '** SALIDA DE RESULTADOS **
440 IFA$="C" ORA$="c"THEN GOSUB 500 ELSE GOSUB 480
450 CLS:XX=X:YY=Y:X=YY:Y=XX:GOSUB 1650:DIST=D:AZIM=O:PRINTREV
"ARCO>"LONG,NORM" X Replanteo>"Y," Y Replanteo>"X," Ang
Replant>"AZIM;CHR$(11)
460 GOSUB "K$":CLS:PRINT "Dist Replant>"DIST," Coord
X="X0+DIST*SIN(OTI-AZIM*A)
470 PRINT " Coord Y="Y0+DIST*COS(OTI-AZIM*A):GOSUB "K$":RETURN
480 ' ** CALCOORD CIRCULO **
490 X=R*SIN(LONG/(P*R)):Y=R*(1-COS(LONG/(P*R))):RETURN
500 ' ** CALCOORD CLOTOIDE **
510 J=1:X=0:Y=0:A2=SQR(R*L):AX=1:AY=1
520 IF ABS(AX)+ABS(AY)<0.001 THEN RETURN
530 AX=A2*(-1)^(J+1):FOR J1=1 TO 2*J-2:AX=AX/(J1*2):NEXT
J1:AX=AX*(LONG/A2)^(4*J-3)/(4*J-3):X=X+AX
540 AY=A2*(-1)^(J+1):FOR J1=1 TO 2*J-1:AY=AY/(J1*2):NEXT
J1:AY=AY*(LONG/A2)^(4*J-1)/(4*J-1):Y=Y+AY:J=J+1
550 GOTO 520
700 ' ** TRANSICION VERTICAL **
705 GOTO "CLOTOIDE"
710 CLS:PRINTREV" Pto inicial,Pte Inicial y Final"NORM"(1) Longitud
Total (2) Cota maxima de la Transicion(3) Coord Pto de la
Transicion";
711 GOSUB "K$"
712 ON VAL(K$) GOTO 730,790,810
720 GOTO 711
730 '
790 '
810 '
899 CLS:PRINT "NO HAY NADA...";:GOSUB "K$":GOTO 10
900 '*** TRANSICION CLOTOIDE *** ** ENTRE DOS CIRCULOS **
910 P=PI/180*.9:ANGLE2
920 ERASEX,Y,R:DIMX(2),Y(2),R(2):FOR S=1TO2:CLS:PRINTTAB(6);REV " ***
CIRCULO"S;CHR$(8)"ø *** "NORM
930 INPUT "Coord X Circulo >",X(S)
935 INPUT "Coord Y Circulo >",Y(S)
940 INPUT "Radio curvatura >",R(S)
950 NEXT
960 X=X(2)-X(1):Y=Y(2)-Y(1):IF Y=0 THEN Y=1E-80 ELSE GOSUB
1650:CLS:PRINT "Dist entre Circ.>"D,"Az linea de centros>"O;:AZIM=O
970 A=1:B=-1:GOSUB "K$"
980 IF R(1)>R(2) THEN MAX=R(1):MIN=R(2)
990 IF R(2)>R(1) THEN MAX=R(2):MIN=R(1)
1000 IF MAX>(MIN+D) THEN PRINT "Entre los dos circulos hay uno
interior al otro";:A=-1:GOSUB "K$"
1010 IF A=1 THEN CLS:PRINT "Inflexion (1) u Ovoide(2)";:A$=INPUT$(1)
ELSE 1050
1020 IF A$="1" GOTO 1040
1025 IF A$="2" GOTO 1050
1030 GOTO 1010
1040 B=1
1050 A2=1E5:CLS:E=0
1060 IF ABS(D-SQR(AX^2+AY^2))<.001 GOTO 1170
1070 L=A2/R(1):R=R(1):GOSUB1700:AX=XC
1080 L=A2/R(2):R=R(2):GOSUB1700:AX=AX+A*XC
1090 L=A2/R(1):R=R(1):GOSUB1710:AY=YC
1100 L=A2/R(2):R=R(2):GOSUB1710:AY=AY+B*YC
1110 DAPROX=SQR(AX^2+AY^2)
1120 L=(A2+1)/R(1):R=R(1):GOSUB 1700:AX1=XC
1121 L=(A2+1)/R(2):R=R(2):GOSUB 1700:AX1=AX1+A*XC
1130 L=(A2+1)/R(1):R=R(1):GOSUB 1710:AY1=YC
1131 L=(A2+1)/R(2):R=R(2):GOSUB 1710:AY1=AY1+B*YC
1140 DAPROX1=SQR(AX1^2+AY1^2):E=E+1
1150 A2=A2+(D-DAPROX)/(DAPROX1-DAPROX):PRINT "D
aprox("E")="DAPROX,"A2("E")="A2
1160 GOTO 1060
1170 CLS:PRINT "Parametro de la clotoide="A2:GOSUB
"K$"
1180 L=A2/R(1):R=R(1):GOSUB 1700:XC1=XC
1190 L=A2/R(1):R=R(1):GOSUB 1710:YC1=YC
1200 CLS:PRINT "Centro circulo 1ø","X="XC1"Y="YC1:GOSUB "K$"
1210 L=A2/R(2):R=R(2):GOSUB 1700:XC2=-A*XC
1220 L=A2/R(2):R=R(2):GOSUB 1710:YC2=-B*YC
1230 CLS:PRINT "Centro circulo 2ø","X>"XC2"Y>"YC2
1250 GOSUB "K$":GOTO 10
1649 END
1650 O=ATN(X/Y)+100*(1-SGN(Y)):D=SQR(X^2+Y^2):O=O-
400*INT(O/400):RETURN
1700 XC=L/2-L^3/(240*R^2)+L^5/(34560*R^4)-L^7/(8386560*R^6)
1710 YC=R+L^2/(24*R)-L^4/(2688*R^3)+L^6/(506880*R^5):RETURN

You might also like