文件名:ZD
10:INPUT”Please select the line:ZX=1,YQX=2,HHX1=3,HHX2=4”;R$
20:IF R$=”1” GOSUB 100
30:IF R$=”2” GOSUB 200
40:IF R$=”3” GOSUB 400
50:IF R$=”4” GOSUB 600
60:END
100:REM SUBROUTINE FOR ZX
110:INPUT”F0=?”;F:F=DEG F
120:INPUT”qi dian =?”;S0
130:INPUT”X0=?”;X0,”Y0=?”;Y0
140:INPUT”zhuang hao=?”;S
150:X=X0+(S-S0)*COS F
160:Y=Y0+(S-S0)*SIN F
170:GOSUB 500
171:GOSUB 900
180:INPUT:Next point or Change line?”;R$
182:IF R$=”N” THEN GOTO 140
184:IF R$=”C” THEN GOTO 10
190:RETURN
200:REM SUBROUTINE FOR YQX
202:INPUT”lu xian zhuan xiang:”;P
210:INPUT”R=?”;R,”F0=?”;F0:F0=DEG F0
220:INPUT”qd=?”;S0
230:INPUT”X0=?”;X0,”Y0=?”;Y0
240:INPUT”zhuang hao=?”;S
250:F=F0+P*(S-S0)*180/(PI*R)
260:X=X0+P*R*(SIN F-SIN F0)
270:Y=Y0-P*R*(COS F-COS F0)
280:GOSUB 500
281:GOSUB 900
290: INPUT:Next point or Change line?”;R$: IF R$=”N” THEN GOTO 240 ELSE IF R$=”C” THEN GOTO 10
300:RETURN
400:REM SUBROUTINE FOR HXX1
402:INPUT”lu xian zhuan xiang:”;P
404:INPUT”qd=?”;S0,”T0=?”;T0:T0=DEG T0
412:INPUT”X0=?”;X0,”Y0=?”;Y0
414:INPUT”The radio change:”;K
416:INPUT”R=”;R
418:INPUT”C=?”;C
420:INPUT”L0=?”;L0
421:INPUT”zhuang hao=?”;S
424:IF K>0 THEN LET L=L0+(S-S0)
426:IF K<0 THEN LET L=L0-(S-S0)
427:T=T0-P*K*L0^2/(2*C)*180/PI
428:A=(L-L0)-(L^5-L0^5)/(40*C^2)+(L^9-L0^9)/(3456*C^4)
430:B=(L^3-L0^3)/(6*C)-(L^7-L0^7)/(336*C^3)
432:X=X0+K*A*COS T-P*B*SIN T
434:Y=Y0+K*A*SIN T+P*B*COS T
435:F=T+P*K*90*(L0-(S-S0))^2/(PI*C)
436:GOSUB 500
437:GOSUB 900
450: INPUT:Next point or Change line?”;R$: IF R$=”N” THEN GOTO 421 ELSE IF R$=”C” THEN GOTO 10
460:RETURN
500:REM SUBROUTINE FOR ZSC
512:USING “########.###”
520:PRINT”zhuang hao=”;S
530:PRINT”X=”;MDF X
540:PRINT”Y=”;MDF Y
550: USING “####.####”
560:PRINT”F=”;MDF (DMS F)
570:RETURN
600:REM SUBROUTINE FOR HHX2
610:INPUT”lu xian zhuan xiang:”;P
630:INPUT”qd=?”;S0,”T0=?”;T0:T0=DEG T0
640:INPUT”X0=?”;X0,”Y0=?”;Y0
650:INPUT”zd=?”;S1
660:INPUT”The radio change:”;K
670:INPUT”R1=?”;R1,”R2=?”;R2
680:C=ABS((S1-S0)R1*R2/(R1-R2))
690:RE=R1*R2/(R1+R2)
692:L0=C/R1
700:INPUT”zhuang hao=?”;S
710:IF K>0 THEN LET L=L0+(S-S0)
720:IF K<0 THEN LET L=L0-(S-S0)
730:T=T0-P*K*L0^2/(2*C)*180/PI
740:A=(L-L0)-(L^5-L0^5)/(40*C^2)+(L^9-L0^9)/(3456*C^4)
750:B=(L^3-L0^3)/(6*C)-(L^7-L0^7)/(336*C^3)
760:X=X0+K*A*COS T-P*B*SIN T
770:Y=Y0+K*A*SIN T+P*B*COS T
780:F=T0+P*(S-S0)*180/(2*PI*RE)
790:GOSUB 500
791:GOSUB 900
800:INPUT:Next point or Change line?”;R$: IF R$=”N”THEN GOTO 700 ELSE IF R$=”C” THEN GOTO 10
810:RETURN
900:REM SUBROUTINE FOR BSC
910:IF F>=360 THEN LET F=F-360 ELSE IF F<0 THEN LET F=F-360
940:INPUT”width=?”;W
950:LET J=1
960:IF W=0 THEN 1040
970:IF W<0 THEN LET J=-J
980:XW=X+J*W*COS (F+J*90):YW=Y+J*W*SIN (F+J*90)
990:USING”#######.###”
1000:PRINT”width=”;W
1010:PRINT”XW=”;MDF XW
1020:PRINT”YW=”;MDF YW
1030:GOTO 940
1040:RETURN
本程序采用线元法计算匝道中桩坐标,然后根据需要计算边桩坐标
ZX指直线段
YQX指圆曲线
HHX1指回旋线,如ZH-HY,起点-HY,YH-终点,GQ-HY,YH-GQ等
HHX2指YH-HY间的回旋线,也就是连接两个不同半径间的回旋线
本程序的难点在于L0的输入和C的输入及K(曲率变化率)的判断
T0:起点方位角
X0;Y0计算起点坐标