FHXPSzhu(主程序)
“1.ZS,2.FS” ?→Q 输入1正算,输入2反算
“NEW=0,OLD ≠0”?Z:If Z=0:Then “X0=”?A:“Y0=”?B:“C0=”?C:“1/R0=”?D:“1/RI=”?E:“SP=”?F:“EP=”?G:Ifend:Q=2=>Goto 2
Lbl 1 :“KM=,<0 STOP”?H:H<0=>STOP:“PJ=”?O:“PY=”?L
Lbl Z:Z=1=> Prog“01”:Z=2=> Prog“02” :Fix 3
H- F→M:(E-D)/( G-F)*M→N:C+(N+2 D)M*90/π→P:P<0=>P+360→P
A+M(cos(C)+4∑cos(C+7.5*(2K+1)M((2K+1)N/12 +2D)/π),K,0,5)+2∑(cos(C+15KM(KN/6+2D)/π),K,1,5)+cos(P))/36+Lcos(P+O)→X
B+M(sin(C)+4∑sin(C+7.5*(2K+1)M((2K+1)N/12 +2D)/π),K,0,5)+2∑(sin(C+15KM(KN/6+2D)/π),K,1,5)+sin(P))/36+Lsin(P+O)→Y
Q=2=>Goto 4
“X=”:X◢
“Y=”:Y◢
“FWJ=”:P▶DMS◢
Norm 2:Goto 1
Lbl 2:“XD=,<0,STOP”?R:R<0=>STOP:“YD=”?S
“KMDG=”?H :90→O:0→L:Goto Z (H线路范围内的任意桩号)
Lbl 4:Pol(R-X,S-Y):J<0 => J+360→J
While abs(Icos(J-P))≤0.001:P-J>180=> J+360→J: P-J<-180=> P+360→P:IF P-J>0:then -I→L:else I→L ifend
Goto 3: Whileend:H+Icos(J-P)→H:Goto Z
Lbl 3:Fix 3
“ZHUANGHAO”:H◢
“JULI”:L◢
Norm 2:Goto 2
01(数据库子程序)
If H<=第一曲线终点桩号:then 第一曲线起点X→A:第一曲线起点Y→B:第一曲线起点方位角→C:起点曲率→D:终点曲率→E:起点桩号→F:终点桩号→G:return:ifend
……………
程序说明:
1、该程序可以计算任意线形(直线、圆曲线、缓和曲线、不完整曲线)任意桩号的坐标(正算,输入1),也可根据坐标计算该点到线路的距离及垂足桩号(反算,输入2);
2、(NEW=0,OLD≠0)?如果要计算的点为数据库线路中的点,则输入数据库编号(以整数1、2、3…代替输入);如果在数据库中没有要计算线路的数据,则输入0,并按提示输入曲线要素(X0:曲线起点X坐标,Y0:曲线起点Y坐标,C0:曲线起点方位角,1/R0:曲线起点曲率,直线为0, 1/RI:曲线终点曲率,直线为0,曲率左偏输入负值,右偏输入正值,SP:曲线起点桩号,EP:曲线终点桩号),KM为待求点桩号,PJ为待求点与线路的偏角(正交输入90,斜交输入实际角度),“PY”为偏中距离,线路上的点输入0,右偏输入+值,左偏输入–值;
3、 正算显示坐标及切线方位角;反算输入线路的任意桩号(此桩号越接近真实值计算速度越快)、待求点坐标,显示待求点桩号及偏中距离;
正算子程序为复化辛普森公式编写而成,此时线元段数N取6,已经可以满足精度要求;反算子程序为角度趋近的方法编写,计算速度有点慢。