一、程序功能及原理
1.功能说明:本程序由一个主程序(TYQXjs)和四个子程——正算子程序(SUB1)、反算子程序(SUB2)等构成,直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标UV、起点里程0、起点切线方位角G、线元长度H、起点曲率半径P、止点曲率半径R、曲元偏向Q)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。本修改版程序既可实现正算全线贯通,亦可实现反算全线贯通。
2.计算原理:利用Gauss-Legendre 5点通用公式正算线路中边桩坐标、线外测点至曲线元起点和终点的垂距的符号是否相异(即Dca×Dcb<=0=>该测点在其线元内)进行判断并利用该线元要素反算中桩里程、支距,最后计算出放样数据。
二、源程序
1.主程序(TYQXjs)
Lbl 0:"N=1.SZ => XY":"N≠1.XY =>SZ":A:N:N=1=>Goto 1:≠>Goto 2Δ←┘
Lbl 1:{SZ}:SZ:N=0:A=1=>Z[3]=26ΔA=2=>Z[3]=546ΔA=3=>Z[3]=706ΔA=4=>Z[3]=762ΔA=5=>Z[3]=786ΔA=6=>Z[3]=850ΔA=7=>Z[3]=906ΔA=8=>Z[3]=954:Goto 3Δ
Lbl 3:Isz N:S≤Z[8(N+1)+Z[3]]=>Prog “DAT1”:Goto 4:≠>Goto 3:Lbl 4:W=Abs(S-Z[8N+Z[5]+2]):Prog "SUB1":"XS=":X=X◢
"YS=":Y=Y◢
F=F-M :Goto 8←┘
Lbl 2:{XY}:XY:Z[8]=X:Z[9] =Y:N=0:A=1=>Z[3]=27ΔA=2=>Z[3]=547ΔA=3=>Z[3]=707ΔA=4=>Z[3]=763ΔA=5=>Z[3]=787ΔA=6=>Z[3]=851ΔA=7=>Z[3]=907ΔA=8=>Z[3]=955:Goto 5Δ←┘
Lbl 5:Isz N:Z[10]=Z[8N+Z[3]]-M:Z[11]=Z[8(N+1)+Z[3]]-M:Prog "ZX1" :Z[13]×Z[14]<=0=>Prog DAT1" :Goto 7ΔZ[10]=Z[8N+Z[3]]+M:Z[11]=Z[8(N+1)+Z[3]]+M:Prog "ZX1" :Z[13]×Z[14]<=0=>Prog DAT1" :Goto 7:≠> Goto 5Δ
Lbl 7:Prog "SUB2":"S=":S=O+W◢
"Z=":Z=Z◢
Goto 2
Lbl 8:J=0:I=Pol(X-Z[1],Y-Z[2]):F=J:F<0=>F=F+360Δ ”DIST=”: I◢”FW=”:F→DMS◢ Goto 1←┘
2. 正算子程序(SUB1)
Z[4]=0.1184634425:B=0.2393143352:Z[15]=0.2844444444:K=0.0469100770:L=0.2307653449:Z[3]=0.5:X=U+W(Z[4]cos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Z[15]cos(G+QEZ[3]W(C+Z[3]WD))+Bcos(G+QE(1-L)W(C+(1-L)WD))+Z[4]cos(G+QE(1-K)W(C+(1-K)WD))): Y=V+W(Z[4]sin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Z[15]sin(G+QEZ[3]W(C+Z[3]WD))+Bsin (G+QE(1-L)W(C+(1-L)WD))+Z[4]sin (G+QE(1-K)W(C+(1-K)WD))):M”ANG=”: F=G+QEW(C+WD)+M:X=X+ZcosF:Y=Y+ZsinF
3. 反算子程序(SUB2)
M”ANG=”:T=G-M:W=Abs((Y-V)cosT-(X-U)sinT):Z=0:Lbl 0:Prog "SUB1":L=T+QEW(C+
WD):Z=(Z[9]-Y)cosL-(Z[8]-X)sinL:AbsZ<1E-6=>Goto1:≠>W=W+Z:Goto 0Δ←┘
Lbl 1:Z=0:Prog "SUB1":Z=(Z[9]-Y)÷sinF
4. 垂距计算子程序(ZX1)
A=1=>Z[12]=25ΔA=2=>Z[12]=545ΔA=3=>Z[12]=705ΔA=4=>Z[12]=761ΔA=5=>Z[12]=785ΔA=6=>Z[12]=849ΔA=7=>Z[12]=905ΔA=8=>Z[12]=953:Goto 1Δ←┘
Lbl 1:Z[13]=(Z[9]-Z[8N+Z[12]])COS Z[10]-(Z[8]-Z[8N+Z[12]-1])SIN Z[10]:
Z[14]=(Z[9]-Z[8(N+1)+Z[12]])COS Z[11]-(Z[8]-Z[8(N+1)+Z[12]-1])SIN Z[11]
5.曲线元要素数据库:DAT1
A=1=>Z[5]=24ΔA=2=>Z[5]=544ΔA=3=>Z[5]=704ΔA=4=>Z[5]=760ΔA=5=>Z[5]=784ΔA=6=>Z[5]=848ΔA=7=>Z[5]=904ΔA=8=>Z[5]=952Δ
U=Z[8N+Z[5]]:v=Z[8N+Z[5]+1]:O=Z[8N+Z[5]+2]:G=Z[8N+Z[5]+3]:H=Z[8N+Z[5]+4]:P=Z[8N+Z[5]+5]:R=Z[8N+Z[5]+6]:Q=Z[8N+Z[5]+7]:C=1÷P:D=(P-R)÷(2HPR):E=180÷π
三、使用说明
1、规定
(1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2) 当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右
侧时,Z取正值。
(3) 当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半
径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
(7)曲线元要素数据库(DAT1)可根据线型不同分为各个线元段输入到DAT1中,即分为直线段、缓和曲线、圆曲线等。
(8)正算时可仅输入里程Lp和边距Dp及右交角ANG全线计算,反算时通过输入测点的X、Y坐标和右交角ANG后计算器自动判断该点所属曲线元并利用该线元的曲线要素执行反算中桩里程Lp及支距Dp。
2、输入与显示说明
(一)、 输入部分:
1. SZ => XY
2. XY = > SZ
1、 N ? 选择计算方式,输入1表示进行由里程、边距计算坐标 ;输入2表示由坐标反算
里程和边距。
2、X0 ?线元起点的X坐标
3、Y0 ?线元起点的Y坐标
4、S0 ?线元起点里程
5、F0 ?线元起点切线方位角
6、LS ?线元长度
7、R0 ?线元起点曲率半径
8、RN ?线元止点曲率半径
9、Q ? 线 元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
10、S ? 正算时所求点的里程
11、Z ?正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)
12、ANG?正算边桩时左右边桩连线与线路中线的右交角
13、J?曲线元数据库曲线段判断系数(J=1、2…..n)