5 CLEAR:DIM A$(10) 10 CLS 20 PRINT "GIGATOPO v1.3, (C) Caminos 1993"; 30 GOSUB 90:C=1:MAX=9 40 LOCATE 1,1:PRINT A$(C); 45 T$=INKEY$:IF T$="" THEN 45 50 IF T$="+" THEN C=C+1:IF C>MAX THEN C=1 55 IF T$="-" THEN C=C-1:IF C<1 THEN C=MAX 60 IF T$=CHR$(13) THEN CLS:ON C GOTO 100,660,1010,1370,2210,2370,2530,2930,4000 65 GOTO 40 90 A$(1)=". Diferencias tabulares ." 91 A$(2)=".. Interseccion inversa ." 92 A$(3)="... Minimos cuadrados ..." 93 A$(4)="....... Poligonal ......." 94 A$(5)="....... Replanteo ......." 95 A$(6)="Variacion de coordenadas." 96 A$(7)=".Varianzas - covarianzas." 97 A$(8)="..... Triangulacion ....." 98 A$(9)="....... Clotoide ........" 99 RETURN 100 'DIFTAB 105 INPUT "*DIFERENCIAS TABULARES(1),VARIANZAS-COVARIANZAS(2)";R$ 110 IF R$="1" GOTO 120 115 IF R$="2" GOTO 260 120 PRINT "*DIFERENCIAS TABULARES*":CLEAR 125 CLS: PRINT "SEX. O CEN.(S/C)";A$ 130 A$=INKEY$:IF A$="" THEN 130 135 IF A$="C" THEN GR=1 ELSE IF A$<>"S" THEN 130 140 G=180*(1-GR)+200*GR:P=PI/180 145 CLS :PRINT "LOG.DEC. O NEP.(D/N)";:BB=1 150 A$=INKEY$:IF A$="" THEN 150 155 IF A$="N" THEN 165 160 BB=1/LN(10) 165 CLS:PRINT "INCR. DE RAD/GRD/MIN/SEG.?"; 170 B$=INKEY$:IF B$="" THEN 170 175 IF B$="R" THEN A=1: RO=1:GOTO 205 180 IF B$="G" THEN A=2:GOTO 195 185 IF B$="M" THEN A=3:GOTO 195 190 IF B$="S" THEN A=4 ELSE 170 195 X=10^((2-A)*2):GOSUB 250 200 RO=P*HR 205 CLS:INPUT "ANGULO";AN 210 X=AN:GOSUB 250 215 CLS:PRINT "LOG(SIN(";AN;"))=";LN(SIN(HR))*BB 220 PRINT "DIF. TAB.=";RO*BB/TAN(HR) 225 PRINT "REP.NEW.END.(R/N/E)?" 230 C$=INPUT$(1):IF C$="" THEN 230 235 IF C$="N" THEN CLEAR :GOTO 125 240 IF C$="R" THEN 215 245 IF C$="E" THEN CLEAR :END 250 HR=GR*.9*X+(1-GR)*(INTX+INT(100*FRACX)/60+FRAC(100*FRACX)/36) 255 RETURN 260 'VARIANZAS-COVARIANZAS 265 CLEAR 270 CLS:PRINT "CALCULO DE LAS VARIANZAS Y COVARIANZAS" 275 CLS:INPUT "NUMERO DE VISUALES";N 280 CLS:INPUT "NUMERO DE OBSERVACIONES";M 285 DIM A(M,4*N),C(N),D(N),E(N) 290 DIM B$(N+1):CLS 295 FOR I=1 TO N 300 PRINT "NOMBRE DE"I"VISUAL";:INPUT B$(I) 305 CLS:NEXT :B$(N+1)=B$(1) 310 CLS:PRINT "INTRODUCE OBSERVACIONES" 315 CLS:FOR J=1 TO N 320 FOR I=1 TO M 325 PRINT "INTRODUCE LA OBSERVACION"I"DE LA VISUAL "B$(J);:INPUT A(I,J):NEXT I:NEXT J 330 INPUT "CORREGIR DATOS (S/N)";F$ 335 IF F$="N" THEN 355 340 INPUT "I";I:INPUT "J";J 345 PRINT "A("I","J")=";:INPUT A(I,J) 350 GOTO 330 355 INPUT "VER DATOS (S/N)";W$ 360 IF W$="N" THEN 380 365 FOR J=1 TO N:FOR I=1 TO M 370 PRINT "A("I","J")="A(I,J):NEXT I:NEXT J 375 INPUT "ALGUNA EQUIVOCACION (S/N)";F$:GOTO 335 380 CLS:PRINT "CALCULO DE LOS RESIDUOS" 385 S=0:FOR J=1 TO N 390 FOR I=1 TO M 395 S=S+A(I,J):NEXT I 400 C(J)=S:S=0:NEXT J 405 FOR J=1 TO N 410 C(J)=C(J)/M 415 PRINT "MEDIA DE "B$(J)"="C(J) 420 NEXT J 425 FOR J=1 TO N:FOR I=1 TO M 430 A(I,N+J)=C(J)-A(I,J) 435 NEXT I:NEXT J 440 INPUT "QUIERES LOS RESIDUOS EN UNIDADES DIFERENTES (S/N)";P$ 445 IF P$="N" THEN 470 450 INPUT "(A)=NUMERO DE CAMBIO;EJEMPLO 1E4 DE GR A DMGR";R 455 FOR J=1 TO N:FOR I=1 TO M 460 A(I,N+J)=A(I,N+J)*R 465 NEXT I:NEXT J 470 FOR J=1 TO N 475 FOR I=1 TO M 480 PRINT "RESIDUO "B$(J)"("I")="A(I,N+J) 485 NEXT I:NEXT J 490 CLS:PRINT "RESIDUOS AL CUADRADO" 495 CLS:FOR J=1 TO N:FOR I=1 TO M 500 A(I,J+2*N)=A(I,J+N)^2 505 NEXT I:NEXT J 510 FOR J=1 TO N:FOR I=1 TO M 515 PRINT "RESIDUO^2 DE "B$(J)" DE LA OBSEVACION"I"="A(I,2*N+J) 520 NEXT I:NEXT J 525 S=0:FOR J=1 TO N:FOR I=1 TO M 530 S=S+A(I,J+2*N):NEXT I 535 D(J)=S:S=0:NEXT J 540 FOR J=1 TO N 545 D(J)=(D(J)/(M-1)):NEXT 550 CLS:PRINT "VARIANZAS (ERROR STANDAR=RAIZ VARIANZAS)" 555 FOR J=1 TO N 560 PRINT "VARIANZA "B$(J) "="D(J):NEXT 565 CLS:PRINT "CALCULO DE LAS COVARIANZAS" 570 FOR J=1 TO N-1:FOR I=1 TO M 575 A(I,3*N+J)=A(I,J+N)*A(I,J+N+1) 580 NEXT I,J 585 FOR I=1 TO M 590 A(I,4*N)=A(I,N+1)*A(I,2*N):NEXT 595 FOR J=1 TO N:FOR I=1 TO M 600 PRINT "RESIDUO DE "B$(J)"*"B$(J+1)" FILA"I"="A(I,J+3*N) 605 NEXT I,J 610 S=0:FOR J=1 TO N:FOR I=1 TO M 615 S=S+A(I,3*N+J):NEXT I 620 E(J)=S:S=0:NEXT J 625 FOR J=1 TO N 630 E(J)=E(J)/(M-1):NEXT 635 FOR J=1 TO N 640 PRINT "LA COVARIANZA "B$(J)"-"B$(J+1) "="E(J) 645 NEXT 650 CLS:PRINT "FIN" 660 CLS:PRINT "INT. INVERSA" 665 CLEAR 670 PRINT "ENTRADA","*Sexag","*Cent";:INPUT W$ 675 IF W$="C" THEN Y=1 ELSE IF W$<>"S" THEN 670 680 CLS:PRINT "SALIDA","*Sexag","*Cent";:INPUT W$ 685 IF W$="C" THEN F=1 ELSE IF W$<>"S" THEN 680 690 G=180*(1-Y)+200*Y:P=PI/180:DIM N$(3),X(3),Y(3),L(3) 695 REM 700 FOR I=1 TO 3:CLS:PRINT "DATOS PTOS CONOCIDOS" 705 INPUT "Nombre pto";N$(I) 710 PRINT "Coor X pto ";N$(I);:INPUT X(I):PRINT "Coor Y pto ";N$(I);:INPUT Y(I) 715 NEXT I 720 CLS:PRINT "DATOS PTO ESTACION":INPUT "Nombre pto";N$ 725 CLS:PRINT "Lec azim de ";N$;" al:":FOR I=1 TO 3 730 PRINT "-";N$(I);:INPUT M:NN=100*FRACM 735 L(I)=Y*.9*M+(1-Y)*(M-FRACM+(NN-FRACNN)/60+FRAC(100*FRACM)/36):NEXT I 740 A=ABS(L(1)-L(2)):B=ABS(L(2)-L(3)):C=ABS(L(3)-L(1)) 745 IF A>360-A THEN A1=360-A ELSEA1=A 750 IF B>360-B THEN B1=360-B ELSEB1=B 755 IF C>360-C THEN C1=360-C ELSE C1=C 760 C=3 765 IF B1>A1 THEN C=1 770 IF C1>B1 THEN IF C1>A1 THEN C=2 775 FOR H=1 TO 3 780 X=L(H)-L(C):IF ABS(X)<180 THEN 790 785 IF X<0 THEN L(H)=L(H)+360 ELSE L(H)=L(H)-360 790 IF L(H)>L(C) THEN D=H 795 IF L(H)C THEN FOR J=1 TO C:FOR I=1 TO F:U(J)=U(J)+M(I,J)*K(I):NEXT I:PRINT "K''(";J;")=";U(J):NEXT J 1105 FOR I=1 TO P:FOR J=1 TO P:PRINT "N(";I;",";J;")=";A(I,J):NEXT J:NEXT I 1110 N=P:FOR I=1 TO N:B(I,I)=1:NEXT I:FOR I=1 TO N:IF A(I,I)<>0 THEN 1130 ELSE J=1 1115 J=J+1:IF J<=N THEN 1120 ELSECLS:PRINT "MATRIZ SINGULAR":END 1120 IF A(I,J)<>0 THEN 1125 ELSE 1115 1125 FOR K=1 TO N:A(I,K)=A(I,K)+A(K,J):B(I,K)=B(I,K)+B(J,K):NEXT K 1130 FOR J=1 TO N 1135 IF I=J THEN 1150 1140 B=-A(J,I)/A(I,I) 1145 FOR K=1 TO N:A(J,K)=A(J,K)+B*A(I,K):B(J,K)=B(J,K)+B*B(I,K):NEXT K 1150 NEXT J 1155 C0=A(I,I):FOR J=1 TO N:B(I,J)=B(I,J)/C0:A(I,J)=A(I,J)/C0:NEXT J 1160 NEXT I 1165 IF P=F THEN PRINT "MULTIPLICADORES";CHR$(178) 1170 FOR I=1 TO P:FOR J=1 TO F 1175 IF P=F THEN P(I)=P(I)+B(I,J)*K(J) ELSE P(I)=P(I)+M(J,I)*K(J) 1180 NEXT J:NEXT I 1185 IF P=F THEN FOR I=1 TO F:PRINT "MULT";I;"=";P(I):NEXT I 1190 CLS:PRINT "ERRORES" 1195 FOR I=1 TO C:FOR J=1 TO P 1200 IF F=Q THEN F(I)=F(I)+B(I,J)*P(J) ELSE F(I)=F(I)+M(J,I)*P(J) 1205 NEXT J 1210 NEXT I 1215 IF F>C THEN FOR I=1 TO C:PRINT "D";I;"=";F(I):NEXT I:GOTO 1280 1220 FOR I=1 TO C 1225 X(I)=F(I)/L(I) 1230 PRINT "CORRECCION";I;"=";X(I) 1235 NEXT I 1240 FOR I=1 TO F 1245 S=S+P(I)*K(I) 1250 NEXT I:S=SQR(S/F) 1255 PRINT "ERROR STANDAR DE LA OBS. DE PESO 1=";S 1260 FOR I=1 TO C 1265 S=S/L(I) 1270 PRINT "ERROR STANDAR DE LA MEDIA";I;"=";S 1275 NEXT I 1280 PRINT "ERROR STAND/UNID PESO(OJO DIM)" 1285 S=0:FOR I=1 TO C:S=S-U(I)*F(I):NEXT I 1290 S1=0:FOR I=1 TO F:S1=S1+K(I)*K(I):NEXT I:PRINT "KK=";S1: W=SQR (ABS((S1+S)/(F-C))) 1295 PRINT "M(U.PESO)=";W 1300 PRINT "COEF. DE (N)-1=(At*P*A)-1":FOR I=1 TO P:FOR J=1 TO P:PRINT "N-1("I","J")="B(I,J) 1305 NEXT J:NEXT I 1310 DIM V(P,P):FOR I=1 TO P:FOR J=1 TO P:V(I,J)=W^2*B(I,J):PRINT "E1.(";I;",";J;") DE LA MATRIZ VAR-COV="V(I,J):NEXT J:NEXT I 1315 INPUT "MAX-MIN ERROR STANDAR(S/N)";A$:IF A$="S" THEN IF C=2 THEN SX=SQR V(1,1):SY=SQR V(2,2):SXY=V(2,1) ELSE INPUT "ERROR STANDAR EN X=";SX,"ERROR STANDAR EN Y=";SY,"COVARIANZA XY=";SXY ELSE IF A$<>"N" GOTO 1315 1320 A=SX^2+SY^2:B=SQR((SX^2-SY^2)^2+4*SXY^2) 1325 SMAX=SQR(.5*(A+B)):SMIN=SQR(.5*(A-B)) 1330 PRINT "VALOR MAX DEL ERROR STANDAR="SMAX,"VALOR MIN DEL ERROR STANDAR=";SMIN 1335 END 1340 INPUT "ALGUNA EQUIVOCACION(S/N)";A$ 1345 IF A$="N" THEN RETURN ELSE IF A$<>"S" THEN 1340 1350 INPUT "EN MATRIZ COEF.,EN TERM. IND. O EN PESOS (C,I,P)";A$ 1355 IF A$="C" THEN INPUT "I=";I,"J=";J:PRINT "M(";I;",";J;")=";:INPUT Z:M(I,J)=Z:GOTO 1340 1360 INPUT "I=";I:IF A$="I" THEN PRINT "K(";I;")=";:INPUT Z:K(I)=Z ELSE PRINT "RAIZ PESO";I;"=";:INPUT Z:L(I)=Z 1365 GOTO 1340 1370 CLS :CLEAR :DC=0:X2=0:S1=0:Y2=0:XY=0:GR=0:TT$="Sexagesimal" 1375 PRINT "POLIGONAL:" 1380 INPUT "Sexag o Cent (S/C)";AN$:IF AN$="" THEN 1380 1385 ANGLE 0:IF AN$="C" THEN GR=1:TT$="CENTESIMAL" 1390 G=180*(1-GR)+200*GR:P=PI/180 1395 INPUT "Brujula o taquimetro (B/T)";B$: IF B$="" THEN 1395 1400 PRINT "N";CHR$(223);"Lados";:INPUT N 1405 DIM X(N),Y(N),D(N),V(N),W(N),Z(N) 1410 CLS :PRINT TAB(3);"Primer punto",:INPUT "Coord X(0)";X(0),"Cood Y(0)";Y(0) 1415 IF B$="T" THEN INPUT "Or. visual";Z(0) ELSE 1435 1420 Z(0)=GR*.9*Z(0)+(1-GR)*(INTZ(0)+INT(100*FRACZ(0))/60+FRAC(100*FRACZ(0))/36) 1425 Z(0)=Z(0)+180 1430 Z(0)=Z(0)-360*INT(Z(0)/360) 1435 INPUT "Bessel (S/N)";BS$:IF BS$="" THEN 1435 1440 FOR I=1 TO N 1445 GOSUB 1950 1450 GOSUB 2040 1455 NEXT I 1460 PRINT 1465 FOR I=1 TO N 1470 X(I)=X(I-1)+D(I)*SINZ(I) 1475 Y(I)=Y(I-1)+D(I)*COSZ(I) 1480 PRINT 1485 PRINT "Pto No";I;":","X=";X(I),"Y=";Y(I):GOSUB 2185 1490 NEXT I 1495 PRINT 1500 INPUT "X ultimo pto X=";XC 1505 INPUT "Y ultimo pto Y=";YC 1510 EX=XC-X(N) 1515 EY=YC-Y(N) 1520 PRINT "Errores:","en X=";EX,"en Y=";EY:GOSUB 2185 1525 PRINT 1530 INPUT "Repasar dato (S/N)";C$:IF C$="" THEN 1530 1535 IF C$="S" THEN 1545 1540 IF C$="N" THEN 1605 ELSE 1530 1545 CLS :PRINT "X(0)=";X(0),"Y(0)=";Y(0),"Or. ref.";TT$;"=";:H=Z(0):GOSUB 2195 1550 PRINT H:GOSUB 2185 1555 CLS :FOR I=1 TO N 1560 PRINT "D(";I;")=";D(I),"Vad(";I;")=";:H=V(I):GOSUB 2195:PRINT H,"Vat(";I;")="; 1565 H=W(I):GOSUB 2195:PRINT H,:H=Z(I):GOSUB 2195:PRINT "Ang(";I;")=";H;:GOSUB 2185 1570 CLS :NEXT I 1575 PRINT "Modificaciones (S/N)",:PRINT 1580 QW$=INKEY$:IF QW$="S" THEN 1585 ELSE IF QW$="N" THEN 1460 ELSE 1580 1585 PRINT "N";CHR$(223);"estacion a cambiar";:INPUT I 1590 IF I<>0 THEN GOSUB 1950 ELSE 1460 1595 FOR I=1 TO N:GOSUB 2040:NEXT I 1600 GOTO 1555 1605 CLS 1610 PRINT "Tipo compens.,Expedita o Rigurosa (E/R)";:INPUT C$:IF C$="" THEN 1610 1615 IF C$="E" THEN 1665 1620 IF C$="R" THEN 1625 ELSE 1605 1625 FOR I=1 TO N 1630 PRINT 1635 PRINT "** LADO";I;": **" 1640 PRINT "Ax=";X(I)-X(I-1),"Ay=";Y(I)-Y(I-1):GOSUB 2185 1645 PRINT "Sx=";X(N)-X(I-1),"Sy=";Y(N)-Y(I-1):GOSUB 2185 1650 PRINT "Sen=";SINZ(I),"COS=";COSZ(I):GOSUB 2185 1655 NEXT I 1660 GOTO 1905 1665 XD=X(0):YD=Y(0) 1670 INPUT "Puntos radiados (S/N)";D$:IF D$="" THEN 1670 1675 PRINT "Tipo comp.(R/G/C) :", 1680 PRINT "Reparto proporc. R,", 1685 PRINT "Giro y homotecia G,", 1690 PRINT "CRANDALL. C,";:INPUT C$:IF C$="" THEN 1675 1695 PRINT 1700 IF C$="G" THEN 1715 1705 IF C$="R" THEN 1760 1710 IF C$="C" THEN 1825 ELSE 1675 1715 IF X(0)=XC THEN IF Y(0)=YC THEN PRINT "NO comp cerrada por GIRO.":GOSUB 2185:GOTO 1675 1720 D1=SQR((X(N)-X(0))^2+(Y(N)-Y(0))^2 1725 ED=((X(N)-X(0))*(XC-X(0))+(Y(N)-Y(0))*(YC-Y(0)))/(D1^2) 1730 EO=((Y(N)-Y(0))*(XC-X(0))-(X(N)-X(0))*(YC-Y(0)))/(D1^2) 1735 FOR I=1 TO N 1740 XT=XD:YT=YD 1745 XD=X(0)+(X(I)-X(0))*ED+(Y(I)-Y(0))*EO 1750 YD=Y(0)-(X(I)-X(0))*EO+(Y(I)-Y(0))*ED 1755 GOSUB 2055:NEXT I:GOTO 1895 1760 DT=0 1765 FOR I=1 TO N 1770 DT=DT+D(I) 1775 NEXT I 1780 FX=EX/DT 1785 FY=EY/DT 1790 FOR I=1 TO N 1795 DC=DC+D(I) 1800 XT=XD:YT=YD 1805 XD=X(I)+FX*DC 1810 YD=Y(I)+FY*DC 1815 GOSUB 2055 1820 NEXT I:GOTO 1895 1825 FOR I=1 TO N 1830 GOSUB 1920 1835 NEXT I 1840 A=(EX*XY-EY*X2)/(X2*Y2-XY^2) 1845 B=(EY*XY-EX*Y2)/(X2*Y2-XY^2) 1850 X2=0:Y2=0:XY=0 1855 FOR I=1 TO N 1860 GOSUB 1920 1865 XT=XD:YT=YD 1870 YD=Y(I)-A*Y2-B*XY 1875 XD=X(I)-A*XY-B*X2 1880 GOSUB 2055 1885 NEXT I 1890 PRINT 1895 PRINT "Area int. poligonal=";ABS(S1/2):S1=0:GOSUB 2185 1900 PRINT 1905 INPUT "Nueva comp.(S/N)";C$:IF C$="" THEN 1905 1910 IF C$="S" THEN 1610 ELSE IF C$<>"N" THEN 1900 1915 END 1920 DX=X(I)-X(I-1) 1925 DY=Y(I)-Y(I-1) 1930 X2=X2+DX^2/D(I) 1935 Y2=Y2+DY^2/D(I) 1940 XY=XY+DX*DY/D(I) 1945 RETURN 1950 PRINT 1955 PRINT "Distanc. pto";I-1;"al";I,:INPUT D(I) 1960 PRINT "Visual directa punto";I-1;"al";I;:INPUT V(I) 1965 V=V(I)-G*(SGN(V(I)-G+.000001)):IF BS$="N" THEN 1975 1970 PRINT "Visual inversa punto";I-1;"al";I;:INPUT V 1975 V(I)=GR*.9*V(I)+(1-GR)*(INTV(I)+INT(100*FRACV(I))/60+FRAC(100*FRACV(I))/36) 1980 V(I)=V(I)+GR*.9*V+(1-GR)*(INTV+INT(100*FRACV)/60+FRAC(100*FRACV)/36) 1985 V(I)=V(I)-180*SGN(V-G+.000001) 1990 V(I)=V(I)/2 1995 W(I)=Z(I-1)+180:IF B$="B" THEN 2040 ELSE PRINT "Visual directa punto";I-1; 2000 PRINT "al";I-2;:INPUT W(I) 2005 V=W(I)-G*SGN(W(I)-G+.000001):IF BS$="N" THEN 2015 2010 PRINT "Vis. inversa pto";I-1;"al";I-2;:INPUT V 2015 W(I)=GR*.9*W(I)+(1-GR)*(INTW(I)+INT(100*FRACW(I))/60+FRAC(100*FRACW(I))/36 2020 W(I)=W(I)+GR*.9*V+(1-GR)*(INTV+INT(100*FRACV)/60+FRAC(100*FRACV)/36) 2025 W(I)=W(I)-180*SGN(V-G+.000001) 2030 W(I)=W(I)/2 2035 RETURN 2040 Z(I)=Z(I-1)+180+V(I)-W(I) 2045 Z(I)=Z(I)-360*INT(Z(I)/360) 2050 RETURN 2055 O=ATN((XT-XD)/(YT-YD))+90*(1-SGN(YT-YD)) 2060 PRINT 2065 PRINT "Pto comp";I;":","X(";I;")=";XD,"Y(";I;")=";YD:GOSUB 2185 2070 IF I<>1 THEN S1=S1+X(0)*YT+XT*YD+XD*Y(0)-XD*YT-XT*Y(0)-X(0)*YD 2075 IF D$="S" THEN GOSUB 2085 2080 RETURN 2085 PRINT 2090 PRINT "Cuando no desee mas rsdiados desde";I;"pulse RET a *NOMBRE PTO*"; 2095 GOSUB 2185 2100 PRINT 2105 INPUT "Nombre pto radiado";N1$ 2110 IF N1$="" THEN RETURN 2115 INPUT "Lect. horiz.directa al pto radiado";LR 2120 V=LR-G*SGN(LR-G+.000001):IF BS$="N" THEN 2130 2125 INPUT "Lect. horiz. inversa al pto radiado";V 2130 LR=GR*.9*LR+(1-GR)*(INTLR+INT(100*FRACLR)/60+FRAC(100*FRACLR)/36) 2135 LR=LR+GR*.9*V+(1-GR)*(INTV+INT(100*FRACV)/60+FRAC(100*FRACV)/36) 2140 LR=LR-180*SGN(V-G+.000001) 2145 LR=LR/2 2150 INPUT "Dist. al pto radiado";DR 2155 O1=O+LR-W(I) 2160 X=XD+DR*SIN(O1) 2165 Y=YD+DR*COS(O1) 2170 PRINT 2175 PRINT "Pto";N1$,"X=";X,"Y=";Y:GOSUB 2185 2180 GOTO 2100 2185 IF INKEY$="" THEN 2185 2190 RETURN 2195 HH=60*FRACH-FRAC(60*FRACH) 2200 H=GR*H/.9+(1-GR)*(H-FRACH+HH/100+.006*FRAC(60*FRACH)):RETURN 2205 R-W(I) 2210 PRINT "REPLANTEO PTOS. POR COORDENADAS", 2215 ANGLE 0:CLEAR :PRINT "ENTRADA":INPUT"Sexag o Cent (S/C)";A$ 2220 IF A$="C"THEN H=1 ELSE IF A$<>"S" THEN 2215 2225 CLS: PRINT "SALIDA":INPUT "Sexag o Cent (S/C)";A$ 2230 IF A$="C"THEN J=1 ELSE IF A$<>"S"THEN 2225 2235 G=180*(1-H)+200*H:P=PI/180 2240 CLS: PRINT "N";CHR$(223);:INPUT "de ptos. por coord.=";N:DIM X(N),Y(N),Z(N),N$(N) 2245 FOR I=1 TO N 2250 CLS:INPUT "Nombre pto=";N$(I),"Coor X=";X(I),"Coor Y=";Y(I),"Coor Z=";Z(I) 2255 NEXT I 2260 CLS:INPUT "Nombre pto estacion (ENTER para final)=";B$ 2265 IF B$="" THEN CLS:CLEAR:END 2270 GOSUB 2350 2275 IF I<=N THEN E=I ELSE 2260 2280 INPUT "Alt inst=";I,"Descen=";C 2285 CLS:INPUT "Nombre pto visado (ENTER para fin)=";B$ 2290 IF B$=""THEN 2260 2295 GOSUB 2350 2300 IF I<=N THEN A=I ELSE 2285 2305 INPUT "Alt mira=";M:X=X(A)-X(E):Y=Y(A)-Y(E) 2310 K=ATN(X/Y)+90*(1-SGN Y)+C 2315 IF K>360 THEN K=K-360 ELSE IF K<0 THEN K=K+360 2320 D=SQR(X*X+Y*Y):O=90-ATN(Z(A)-Z(E)-I+M-D^2*6.6E-08)/D 2325 Q=D/SIN(O) 2330 W=J*O/.9+(1-J)*(O-FRAC O+(100*FRAC O-FRAC(100*FRAC O))/60+FRAC(100*FRAC O))/36 2335 V=J*K/.9+(1-J)*(K-FRAC K+(100*FRAC K-FRAC(100*FRAC K))/60+FRAC(100*FRAC K))/36 2340 PRINT "Ang H=HORIZ, V=VERT","*H=";V,"*V=";W,"DIST=";Q; 2345 IF INKEY$="" THEN 2345 ELSE 2285 2350 FOR I=1 TO N 2355 IF N$(I)<>B$ THEN NEXT I ELSE RETURN 2360 PRINT " **pto NO existe**";:FOR ESP=0 TO300:NEXT ESP:RETURN 2370 'VARCOORD 2375 CLS:PRINT "VAR. COORDENADAS" 2380 CLEAR :ANGLE 0:INPUT "Sexag o Cent (S/C)";R$ 2385 IF R$="C" THEN H=1 ELSE IF R$<>"S" THEN 2375 2390 G=180*(1-H)+H*200:P=PI/180 2395 CLS:INPUT "NUM. PTOS DE LA RED:";N 2400 DIM N$(N),X(N),Y(N),M(N,N),K(N) 2405 FOR I=1 TO N 2410 INPUT "NOMBRE PTO:";N$(I),"COOR X=";X(I),"COOR Y=";Y(I):NEXT I:CLS:R=0 2415 INPUT "NOM PTO ESTACION:";S$:GOSUB 2515 2420 V=X:W=Y 2425 INPUT "NOM PTO VISADO:";S$ 2430 GOSUB 2515 2435 T=X:U=Y:CLS:R=R+1 2440 PRINT "Si no hay dist EXE en dist med. Si no hay ang EXE en ang med" 2445 INPUT "Dist medida=";DD$,"Lec ang=";LL$:D=VAL(DD$):M=VAL(LL$) 2450 L=H*.9*M+(1-H)*(M-FRACM+(100*FRACM-FRAC(100*FRACM))/60+FRAC(100*FRACM)/36 2455 IF LL$<>" " THEN INPUT "DESC DEL LIMBO=";K 2460 E=H*.9*K+(1-H)*(K-FRACK+(100*FRACK-FRAC(100*FRACK))/60+FRAC(100*FRACK)/36) 2465 A=T-V:B=U-W:C=SQR(A^2+B^2):F=ATN(A/B)+180*(1-SGNB)/2:CLS 2470 Z=H*F/.9+(1-H)*(F-FRACF+(60*FRACF-FRAC(60*FRACF))/100+.006*FRAC(60*FRACF)) 2475 PRINT "AX=";A,"AY=";B,"DC=";C,"AZIM=";Z 2480 IF DD$=" " THEN 2490 2485 CLS:PRINT "SIN=";SINF,"COS=";COSF,"KD=";D-C 2490 IF LL$=" " THEN 2510 2495 CLS:PRINT "p*AX/D2=";636620*A/C^2,"p*AY/D2=";636620*B/C^2:O=L+E-F 2500 Q=H*O/.9+(1-H)*(O-FRACO+(60*FRACO-FRAC(60*FRACO))/100+.006*FRAC(60*FRACO)) 2505 PRINT "KO=";Q;"en grados min y seg","KO=";O*P;"en radianes" 2510 INPUT "Seguir calculando(S/N)";T$:IF T$="S" THEN 2415 ELSE IF T$="N" THEN END ELSE 2510 2515 FOR I=1 TO N 2520 IF S$=N$(I) THEN X=X(I):Y=Y(I):I=N 2525 NEXT I:RETURN 2530 'VARIANZAS-COVARIANZAS 2535 CLEAR 2540 CLS:PRINT "CALCULO DE LAS VARIANZAS Y COVARIANZAS" 2545 CLS:INPUT "NUMERO DE VISUALES";N 2550 CLS:INPUT "NUMERO DE OBSERVACIONES";M 2555 DIM A(M,4*N),C(N),D(N),E(N) 2560 DIM B$(N+1):CLS 2565 FOR I=1 TO N 2570 PRINT "NOMBRE DE "I"VISUAL";:INPUT B$(I) 2575 CLS:NEXT:B$(N+1)=B$(1) 2580 CLS:PRINT "INTRODUCE OBSERVACIONES" 2585 CLS:FOR J=1 TO N 2590 FOR I=1 TO M 2595 PRINT "INTRODUCE LA OBSERVACION "I"DE LA VISUAL "B$(J);:INPUT A(I,J):NEXT I:NEXT J 2600 INPUT "CORREGIR DATOS(S/N)";F$ 2605 IF F$="N" THEN 2625 2610 INPUT "I";I:INPUT "J";J 2615 PRINT "A("I","J")=";:INPUT A(I,J) 2620 GOTO 2600 2625 INPUT "VER DATOS (S/N)";W$ 2630 IF W$="N" THEN 2650 2635 FOR J=1 TO N:FOR I=1 TO M 2640 PRINT "A("I","J")="A(I,J):NEXT I:NEXT J 2645 INPUT "ALGUNA EQUIVOCACION (S/N)";F$:GOTO 2605 2650 CLS:PRINT "CALCULO DE LOS RESIDUOS" 2655 S=0: FOR J=1 TO N 2660 FOR I=1 TO M 2665 S=S+A(I,J):NEXT I 2670 C(J)=S:S=0:NEXT J 2675 FOR J=1 TO N 2680 C(J)=C(J)/M 2685 PRINT "MEDIA DE "B$(J)"="C(J) 2690 NEXT J 2695 FOR J=1 TO N:FOR I=1 TO M 2700 A(I,N+J)=C(J)-A(I,J) 2705 NEXT I:NEXT J 2710 INPUT "QUIERES LOS RESIDUOS EN UNIDADES DIFERENTES (S/N)";P$ 2715 IF P$="N" THEN 2740 2720 INPUT "(A)=NUMERO DE CAMBIO;ejemplo 1E4 de gr a dmgr";R 2725 FOR J=1 TO N:FOR I=1 TO M 2730 A(I,N+J)=A(I,N+J)*R 2735 NEXT I:NEXT J 2740 FOR J=1 TO N 2745 FOR I=1 TO M 2750 PRINT "RESIDUO "B$(J)"("I")="A(I,N+J) 2755 NEXT I:NEXT J 2760 CLS:PRINT "RESIDUOS AL CUADRADO" 2765 CLS:FOR J=1 TO N:FOR I=1 TO M 2770 A(I,J+2*N)=A(I,J+N)^2 2775 NEXT I:NEXT J 2780 FOR J=1 TO N:FOR I=1 TO M 2785 PRINT "RESIDUO^2 DE "B$(J)" DE LA OBSERV "I" ="A(I,2*N+J) 2790 NEXT I:NEXT J 2795 S=0:FOR J=1 TO N:FOR I=1 TO M 2800 S=S+A(I,J+2*N):NEXT I 2805 D(J)=S:S=0:NEXT J 2810 FOR J=1 TO N 2815 D(J)=SQR(D(J)/(M-1)):NEXT 2820 CLS:PRINT "VARIANZAS" 2825 FOR J=1 TO N 2830 PRINT "VARIANZA "B$(J)"="D(J):NEXT 2835 CLS:PRINT "CALCULO DE LAS COVARIANZAS" 2840 FOR J=1 TO N-1 :FOR I=1 TO M 2845 A(I,3*N+J)=A(I,J+N)*A(I,J+N+1) 2850 NEXT I,J 2855 FOR I=1 TO M 2860 A(I,4*N)=A(I,N+1)*A(I,2*N):NEXT 2865 FOR J=1 TO N:FOR I=1 TO M 2870 PRINT "RESIDUO DE "B$(J)"*"B$(J+1)" FILA"I"="A(I,J+3*N) 2875 NEXT I,J 2880 S=0:FOR J=1 TO N:FOR I=1 TO M 2885 S=S+A(I,3*N+J):NEXT I 2890 E(J)=S:S=0:NEXT J 2895 FOR J=1 TO N 2900 E(J)=E(J)/(M-1):NEXT 2905 FOR J=1 TO N 2910 PRINT "LA COVARIANZA "B$(J)"-"B$(J+1)"="E(J) 2915 NEXT 2920 CLS:PRINT "FIN" 2930 CLS:PRINT "TRIANGULACION" 2935 PRINT "-ENTRADA","*Sexag (S)","*Cent (C)";:INPUT B$ 2940 ANGLE 0:IF B$="C" THEN Q=1 ELSE IF B$<>"S" THEN 2935 2945 CLS:PRINT "-SALIDA","*Sexag (S)","*Cent (C)";:INPUT B$ 2950 IF B$="C" THEN S=1 ELSE IF B$<>"S"THEN 2945 2955 G=180*(1-Q)+200*Q:P=PI/180 2960 DIM N$(3),N(3) 2965 REM 2970 CLS :PRINT "-NORMAS PROGRAMA-" 2975 PRINT "El pto. a calcular es el VISADO y su nombre es V";:GOSUB 3160 2980 CLS:PRINT "Mirando desde el pto. V","Pto. I Izquierda de V" 2985 PRINT "Pto. D Derecha de V";:GOSUB 3160 2990 CLS:PRINT "Coordenadas":INPUT "X punto D";V,"Y punto D";W 2995 CLS:PRINT "Coordenadas":INPUT "X punto I";X,"Y punto I";Y 3000 E=SQR((X-V)^2+(Y-W)^2):D=ATN((X-V)/(Y-W))+90*(1-SGN(Y-W)) 3005 CLS:PRINT "*Interseccion","*triAngulacion","*triLateracion",TAB(6);"(I/A/L)"; 3010 INPUT A$:IF A$="I" THEN 3040 3015 IF A$="L" THEN 3070 ELSE IF A$="A" THEN 3025 ELSE 3005 3020 REM 3025 CLS:PRINT "TRIANGULACION":INPUT "*Angulo D";H,"*Angulo I";I:N=H:GOSUB 3165 3030 H=N:N=I:GOSUB 3165:I=N:K=D-H:C=E*SINI/SIN(H+I) 3035 CLS:PRINT "TRIANGULACION":GOTO 3090 3040 CLS:PRINT "INTERSECCION" 3045 INPUT "Orientacion del lado DV";K,"Orientacion del lado IV";L:N=K:GOSUB 3165:K=N:N=L:GOSUB 3165 3050 L=N:I=L-(D+180):I=I-360*INT(I/360) 3055 H=D-K:H=H-360*INT(H/360) 3060 C=E*SINI/SIN(H+I):CLS:PRINT "INTERSECCION":GOTO 3090 3065 REM 3070 CLS:PRINT "TRILATERACION" 3075 INPUT "*Lado DV";C,"*Lado IV";O 3080 H=ACS((C*C+E*E-O*O)/(2*C*E)):I=ACS((E*E+O*O-C*C)/(2*E*O)):K=D-H 3085 PRINT "TRILATERACION" 3090 REM 3095 T=V+C*SINK:U=W+C*COSK 3100 PRINT "Coor X";T,"Coor Y";U 3105 PRINT "Ver todos los datos",TAB(8);"(S/N)"; 3110 INPUT A$:IF A$="N" THEN 3150 ELSE IF A$<>"S" THEN 3105 3115 O=C*C+E*E-2*C*E*COSH:SU=C*E*SINH/2 3120 N=K:GOSUB 3175:K=N:L=D+180+I:L=L-360*INT(L/360):Z=SINH/SINI:N=D:GOSUB 3175:D=N 3125 N=180-H-I:GOSUB 3175:R=N:N=L:GOSUB 3175:L=N:N=H:GOSUB 3175:H=N:N=I:GOSUB 3175:I=N 3130 PRINT "-Orientacion lado DV";K,"-Orientacion lado DI";D;:GOSUB 3160:CLS 3135 PRINT "-Orientacion lado IV";L:GOSUB 3160:CLS:PRINT "Ang D";H,"Ang I";I 3140 PRINT "Ang V";R;:GOSUB 3160:CLS:PRINT "Lado DI";E,"Lado DV";C,"Lado IV";C*Z 3145 PRINT "SUPERFICIE";SU;:GOSUB 3160 3150 CLS:LOCATE 4,1:PRINT "OTRO PROBLEMA",TAB(8);"(S/N)"; 3155 A$=INKEY$:IF A$="N" THEN CLS:END ELSE IF A$<>"S" THEN 3155 ELSE 2965 3160 IF INKEY$="" THEN 3160 ELSE RETURN 3165 F=100*FRACN:N=Q*.9*N+(1-Q)*(N-FRACN+(F-FRACF)/60+FRAC(100*FRACN)/36) 3170 RETURN 3175 F=60*FRACN:N=S*N/.9+(1-S)*(N-FRACN+(F-FRACF)/100+.006*FRAC(60*FRACN)) 3180 RETURN 4000 PRINT "REPLANTEO DE CLOTOIDES" 4005 CLS:ANGLE 2 4010 PRINT "PARAMETROS DE ENTRADA" 4015 INPUT "1(L,R) ; 2(L,A) ; 3(R,A)";OP 4020 IF OP=1 THEN GOTO 4025 ELSE IF OP=2 THEN GOTO 4045 ELSE IF OP=3 GOTO 4065 ELSE GOTO 4015 4025 INPUT "L,R";L,R 4030 A=SQR(L*R) 4035 PRINT "A =";A 4040 GOTO 4080 4045 INPUT "L,A";L,A 4050 R=(A^2)/L 4055 PRINT "R =";R 4060 GOTO 4080 4065 INPUT "R,A";R,A 4070 L=(A^2)/R 4075 PRINT "L =";L 4080 TAUF=(L/(2*R))*63.662 4085 DEFCHR$(252)="8C92A2C282" 4090 DEFCHR$(252)="8C92A2C282" 4095 INPUT "l";L:TAUP=(L/(2*R))*63.662 4100 GOSUB 4240 4105 PRINT "X DEL PUNTO P =";XPUNTO 4110 PRINT "Y DEL PUNTO P =";YPUNTO 4115 SIGMAP=ATN(YPUNTO/XPUNTO) 4120 L=L 4125 GOSUB 4240 4130 XF=XPUNTO:YF=YPUNTO 4135 PRINT "X DEL PUNTO F =";XF 4140 PRINT "Y DEL PUNTO F =";YF 4145 SIGMAF=ATN(YF/XF) 4150 DEFCHR$(253)="7E425E4080" 4155 PRINT "ANGULO SIGMA (P) ";"(";CHR$(253);")";" = ";SIGMAP 4160 PRINT "ANGULO SIGMA (F) ";"(";CHR$(253);")";" = ";SIGMAF 4165 PRINT "ANGULO TAU (P) ";"(";CHR$(252);")";" = ";TAUP 4170 PRINT "ANGULO TAU(F) ";"(";CHR$(252);")";" = ";TAUF 4175 SL=SQR(XF^2+YF^2) 4180 PRINT "CUERDA (SL) = ";SL 4185 XO=XF-(R*SINTAUF) 4190 YO=YF+(R*COSTAUF) 4195 IR=YO-R 4200 PRINT "X CENTRO (XO) = ";XO;";";"Y CENTRO (YO) = ";YO 4205 PRINT "RETRANQUEO ";"("CHR$(238);"R)";" = ";IR 4210 TC=YF/SINTAUF:IF SINTAUF=0 THEN SINTAUF=1E-15 4215 PRINT "TANGENTE CORTA (TC) = ";TC 4220 TL=XF-(YF/ABS(TANTAUF)) 4225 PRINT "TANGENTE LARGA (TL) =";TL 4230 INPUT "CALCULAR MAS (S/N)";A$ 4235 IF A$="S" THEN GOTO 4015 ELSE IF A$="N" THEN END ELSE IF A$<>"S" AND A$<>"N" THEN GOTO 4230 4240 XP=0 4245 FOR N=2 TO 4 4250 X=((-1)^(N-1))*((L^((4*N)-3))/(((4*N)-3)*FACT(N+(N-2))*(2*R*L)^((N+(N-2))))) 4255 XP=XP+X 4260 NEXT N 4265 XPUNTO=L+XP 4270 YP=0 4275 FOR N=1 TO 4 4280 Y=(-1)^(N-1)*(L^(3*N+(N-1))/((3*N+(N-1))*FACT(3*N-(N+1))*(2*R*L)^(3*N-(N+1)))) 4285 YP=YP+Y:YPUNTO=YP 4290 NEXT N 4295 RETURN