一、程序内容
程序:Mc
W“1.js 2.SZ”:W=1=>Goto 1 ΔW=2=> O“KOU LING”:O≠123456=>O=0“OUT” ◢Goto 4 ΔO=0:
Defm 83:Z[81]=1:Goto 0←┘
Lbi 0←┘
{ABCDEFGU}:A“X0”:B“Y0”:C“F0’:D“R0”:E“RN’:F“D0”:G“LS”:U“G” ←┘
Z[Z[81]]=A:Z[Z[81]+10]=B:Z[Z[81]+20]=C:Z[Z[81]+30]=1÷D:Z[Z[81]+40]=1÷E:Z[Z[81]+50]=F: Z[Z[81]+60]=F+G: Z[Z[81]+70]=U←┘
A=0=> Dsz Z[81]:Goto 1ΔIsz Z[81]:Goto 0←┘
Lbi 1←┘
{HS}:H“D’:S“Z”:Z[82]=1:Goto 2←┘
Lbi 2←┘
Z[81]>Z[82] =>”OUT” ◢:Goto5←┘
H≤Z[Z[82]+60]=>A=Z[Z[82]]:B=Z[Z[82]+10]:Z[Z[82]+20]=C:D=Z[Z[82]+30]: E=Z[Z[82]+40]: F=Z[Z[81]+50]: G=Z[Z[81]+60]: U=Z[Z[81]+70]: Goto3:ΔIsz Z[82]:Goto 2
Lbi 3←┘
P=U(E-D)÷Abs(G-F):Q=Abs(H-F):I=PQ:J=C+90 Q(I+2UD)/π: J<0=>J=J+360ΔM=C+45 Q(I÷4+2UD)÷2π:N=C+135Q(3I÷4+2UD)÷2π:K=C+45Q(I÷2+ 2UD)÷π ←┘
S=0=>Z=0:Goto4ΔS<0=>Z=-1:Goto4ΔZ=1:Goto4←┘
Lbi 4
X=A+Q(Cos C+4(Cos M+Cos N)+2Cos K+Cos J) ÷12 +ZSCos(J+90Z) ←┘
Y=B+Q(Sin C+4(Sin M+Sin N)+2Sin K+Sin J) ÷12 +ZSSin(J+90Z) ←┘
S=0=>“X”:X:Pause 0: “Y” :Y◢ Goto 1Δ
S<0=>“XL”:X:Pause 0: “YL”:Y◢ Goto 1Δ
S>0=>“XR”:X:Pause 0: “YR”:Y ◢ Goto 1 ←┘
Lbi5←┘
二、 变量及说明
X0:Y0:F0――――曲线元起点X、Y坐标及起点正切线方位角
R0:RN――――――曲线元起点及终点半径
D0:LS:Q―――曲线元起点桩号、路线长度及线路左右偏标志(左=-1,直线=0,右=1)
D――――――――曲线元中待求点桩号
Z―――――――――计算边桩距中线平距,左边输入负值,右边输入正值,中桩输入0
X:Y
XL:YL
XR:YR ―――――――待求点中边桩桩号的X,Y坐标
扩充变量:Z[Z[81]]: Z[Z[81]+10]: Z[Z[81]+20]: Z[Z[81]+30]: Z[Z[81]+40]: Z[Z[81]+50]: Z[Z[81]+60]: Z[Z[81]+70]: 分别为各线元X0:Y0:F0;R0:RN:D0:LS:Q
(1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2) 当所求点位于中线时,Z=0,坐标显示X Y;当位于中线左侧时,Z取负值,坐标显示XL YL,;当位于中线右侧时,Z取正值,坐标显示XR YR。
(3) 当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半
径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
本程序可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距,对该曲线段范围内任意里程中边桩坐标进行正算。
本程序是对扩充变量的应用,实现了真正意义上的的全线贯通。程序分为两部分:1为计算2为设置。首先对内存变量进行扩充,增加了83个扩充变量,为Z[1]~Z[83],为防止误操作在输入正确口令123456时方可进行设置。本程序设计为十段线元要素,如有需要可以根据内存容量进行增加。在执行程序中将各个线元要素按规律输入到扩充内存变量中,在坐标计算时首先判断其在哪一线元内,并把其线元要素调出进行计算。在进行计算时直接输入桩号、宽度就可以进行全线坐标计算。
本程序也可在4800上运行,只需将输出部分进行修改。
四、 示例
郑石高速路面9标主线线元要素及相关数据如下:
X0 Y0 F0 R0 RN D0 LS Q
744450.244 510454.431 220º41 º31.8 º 7000 7000 116075.889 3386.293 1
742505.351 507722.676 248º24 º33.6 º 1045 1045 119462.182 1980.825 0
741776.461 505880.832 248º24 º33.6 º 8500 8500 121443.007 1517.999 1
741346.546 504427.086 258º38 º30.1 º 1045 1045 122961.007 1985.977 0
桩号 宽度 X Y
117000 0 743791.308 509807.481
118000 -20 743164.306 509027.467
119000 20 742707.550 508137.933
119462.182 0 742505.349 507722.673
120000 -15.253 742293.266 507228.206
121000 15.260 741953.665 506287.142
121443.007 0 741776.461 505880.833
122000 -10.20 741578.902 505359.701
122961.007 50.355 741395.915 504417.169 |