|
摘 要:公路的线形由路线的中桩坐标决定并体现,针对这一特点编写该中桩坐标计算程序,从而方便施工放样工作。
关键词:公路,程序,BASIC语言
一:说明
该程序运行前先建立数据库文件,运行时只需输入曲线交点号和桩号即可,程序自动判断所求桩号所在曲线类型并计算出其中桩坐标,之后询问是否需要计算其边桩坐标,如是输入宽度即可得边桩坐标,为方便还显示中桩的切线方位角。该程序在PC-E500袖珍电脑PRO状态下写入,在RUN状态下运行。如有条件还可与全站仪直接交换数据。
二:程序流程图
三:程序清单
JN-交点序号
JD—交点桩号
A —转角
R —交点半径
S1—第一缓和曲线长度
S2—第二缓和曲线长度
T1 —第一切线长度
T2 —第二切线长度
L —曲线总长度
P —转角符号,右转P=1,左转P= -1
F —交点方位角
,按顺序方向
XJ—交点X坐标值
YJ—交点Y坐标值
主程序:
10:DEGREE
20:INPUT ″PN=?″;PN
21:OPEN″E:SJK″FOR INPUT AS#1
30:INPUT#1,JN,JD,A,R,S1,S2,T1,T2,L,P,F,XJ,YJ
40:IF PN=JN THEN 50 ELSE 30
50:CLOSE#1
60:ZH=JD-T1
70:HY=ZH+S1
80:QZ=HY+(L-S1-S2)/2
90:YH=ZH+(L-S2)
100:HZ=ZH+L
110:USING″######•###″
120:PRINT″ZH=″;MDF ZH,″HY=″;MDF HY,″QZ=″;MDF QZ,″YH=″;
MDF YH,″HZ=″;MDF HZ
130:INPUT ″zhuang hao=?″;Z:IF Z<0 INPUT″do you want to exit? ″;A$:IF A$=
″1″ THEN 190 ELSE IF A$=″0″ THEN 20
140:IF Z<=ZH GOSUB 200
150:IF Z>ZH AND Z<=HY GOSUB 400
160:IF Z>HY AND Z170:IF Z>=YH AND Z180:IF Z>=HZ GOSUB 300
190:END
前直线中桩坐标子程序
200:REM SUBROUTINE FOR CALCULATING QZXZB
210:X=XJ+(T1+ZH-Z)*COS(F+180)
220:Y=YJ+(T1+ZH-Z)*SIN(F+180)
230:GOSUB 1500
240:INPUT″calculating border coordinates?″;R$:IF R$=″0″THEN 130 ELSE IF R$=″1″GOSUB 700
250:RETURN
后直线中桩坐标子程序
300:REM SUBROUTINE FOR CALCULATING HZXZB
310:X=XJ+(T2+Z-HZ)*COS(F+P*A)
320:Y=YJ+(T2+Z-HZ)*SIN(F+P*A)
330:GOSUB 1500
340:INPUT″calculating border coordinates?″;R$:IF R$=″0″THEN 130 ELSE IF R$=″1″GOSUB 800
350:RETURN
第一缓和曲线中桩坐标子程序
400:REM SUBROUTINE FOR CALCULATING ZH-HY
410:N=Z-ZH
420:K=N-N^5/(40*R^2*S1^2)+N^9/(3456*R^4*S1^4)
430:XZH=AER1
440:YZH=AER2
450:X=XZH+K/COS(30*N^2/(PI*R*S1))*COS(F+P*30*N^2/(PI*R*S1))
460:Y=YZH+K/COS(30*N^2/(PI*R*S1))*SIN(F+P*30*N^2/(PI*R*S1))
470:GOSUB1500
480:INPUT″calculating border coordinates?″;R$:IF R$=″0
″THEN 130 ELSE IF R$=″1″GOSUB 1100
490:RETURN
第二缓和曲线中桩坐标子程序
500:REM SUBROUTINE FOR CALCULATING YH-HZ
510:N=HZ-Z
520:K=N-N^5/(40*R^2*S2^2)+N^9/(3456*R^4*S2^4)
530:XHZ=AER3
540:YHZ=AER4
550:X=XHZ+K/COS(30*N^2/(PI*R*S2))*COS(F+P*A+180-P*30*N^2/(PI*R*S2))
560:Y=YHZ+K/COS(30*N^2/(PI*R*S2))*SIN(F+P*A+180-P*30*N^2/(PI*R*S2))
570:GOSUB1500
580:INPUT″calculating border coordinates?″;R$:IF R$=″0″THEN 130 ELSE IF R$=″1″GOSUB 1300
590:RETURN
圆曲线中桩坐标子程序
600:REM SUBROUTINE FOR CALCULATING HY-YH
610:K=LH-S1^3/(40*R^2)+S1^5/(3456*R^4)
620:XHY=AER1+K/COS(30*S1/(PI*R))*COS(F+P*30*S1/(PI*R))
630:YHY=AER2+K/COS(30*S1/(PI*R))*SIN(F+P*30*S1/(PI*R))
640:N=Z-HY
650:X=XHY+2*R*SIN(90*N/(PI*R))*COS(F+P*90*(N+S1)/(PI*R))
660:Y=YHY+2*R*SIN(90*N/(PI*R))*SIN(F+P*90*(N+S1)/(PI*R))
670:GOSUB 1500
680:INPUT″calculating border coordinates?″;R$:IF R$=″0″THEN 130 ELSE IF R$=″1″GOSUB 900
690:RETURN
前直线边桩坐标子程序
700:REM SUBROUTINE FOR CALCULATING QZXBZZB
710:INPUT ″width=?″;W
720:LET J=1
730:IF W=0 THEN 130
740:IF W<0 LET J= -J
750:XW=X+J*W*COS(F+J*90):YW=Y+J*W*SIN(F+J*90)
760:GOSUB 1600
770:GOTO 710
780:RETURN
后直线边桩坐标子程序
800:REM SUBROUTINE FOR CALCULATING HZXBZZB
810:INPUT ″width=?″;W
820:LET J=1
830:IF W=0 THEN 130
840:IF W<0 LET J= -J
850:XW=X+J*W*COS(F+P*A+J*90):YW=Y+J*W*SIN(F+P*A+J*90)
860:GOSUB 1600
870:GOTO 810
880:RETURN
圆曲线边桩坐标子程序
900:REM SUBROUTINE FOR CALCULATING YQXBZZB
910:N=Z-HY
920:G=F+P*S1*180/(2*PI*R)
930:Q=G+N*P*180/(PI*R)
940:USING″####•####″
950:PRINT″qi xian fwj=″;
MDF(DMS Q)
960:INPUT″width=?″;W
970:LET J=1
980:IF W<0 LET J= -J
990:IF W=0 THEN 130
1000:XW=X+J*W*COS(Q+J*90):YW=Y+J*W*SIN(Q+J*90)
1010:GOSUB 1600
1020:GOTO 960
1030:RETUTN
第一缓和曲线边桩坐标子程序
1100 :REM SUBROUTINE FOR CALCULATING ZH-HY BZZB
1110:N=Z-ZH
1120:Q=N^2*90*P/(PI*R*S1)+F
1130:USING″####•####″
1140:PRINT″qi xian fwj=″;MDF(DMS Q)
1150:INPUT″width=?″;W
1160:LET J=1
1170:IF W<0 LET J= -J
1180:IF W=0 THEN 130
1190:XW=X+J*W*COS(Q+J*90):YW=Y+J*W*SIN(Q+J*90)
1200:GOSUB 1600
1210:GOTO 1150
1220:RETURN
第二缓和曲线边桩坐标子程序
1300:REM SUBROUTINE FOR CALCULATING HZ-YH BZZB
1310:N=HZ-Z
1320:Q=N^2*90*(-P)/(PI*R*S2)+(F+P*A)
1330:USING″####•####″
1340:PRINT″qi xian fwj=″;MDF(DMS Q)
1350:INPUT″width=?″;W
1360:LET J=1
1370:IF W<0 LET J= -J
1380:IF W=0 THEN 130
1390:XW=X+J*W*COS(Q+J*90):YW=Y+J*W*SIN(Q+J*90)
1400:GOSUB 1600
1410:GOTO 1350
1420:RETURN
中桩坐标输出子程序
1500:REM SUBROUTINE FOR CALCULATING ZSC
1510:PRINT″zhuang hao:″;Z
1520:USING″#######•###″
1530:PRINT″X=″;MDF X
1540:PRINT″Y=″;MDF Y
1550:RETURN
边桩坐标输出子程序
1600:REM SUBROUTINE FOR CALCULATING BSC
1610:PRINT″width=″;W
1620: USING″#######•###″
1630:PRINT″XW=″;MDF XW
1640:PRINT″YW=″;MDF YW
1650:RETURN
在
AER状态下输入以下:
AER1:XJ+T1*COS(F+180)
AER2:YJ+T1*SIN(F+180)
AER3:XJ+T2*COS(F+P*A)
AER4:YJ+T2*SIN(F+P*A)
数据库文件没有给出,了解PC-E500的人都知道怎样编写数据库文件 |
|