ZHUCHENGXU 主程序
"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”选择数据库文件,可增加没有就别管!
H- F→X:0.5(E-D)÷(G-F)→N
C+(XD+NX2)*180÷π→P:P<0=>P+360→P:P>360=>P-360→P
A+∫(cos(C+(XD+NX2)*180÷π),0,X)+Lcos(P+O)→U
B+∫(sin(C+(XD+NX2)*180÷π),0,X)+Lsin(P+O)→V
Q=2=>Goto 4:Cls:Fix 3
"Xn=":Locate 4,1,U:"Yn=": Locate 5,2,V:“FWJ=”:P▶DMS◢
Norm 2:Cls: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-U,S-V):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:Cls:Fix 3
“KM=”: Locate 4,1,H:“PY=”: Locate 4,2,L◢
Norm 2:Cls: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…代替输入);如果在数据库中没有要计算线路的数据,则输入曲线要素
X0:曲线起点X坐标;
Y0:曲线起点Y坐标;
C0:曲线起点方位角;
R0、 RI:曲线起点曲率(1÷R0)、终点曲率(1÷RI),直线为0,曲线曲率左偏输入负值,右偏输入正值;
SP、 EP:曲线起点桩号,终点桩号;
KM:待求点桩号;
PJ:正斜交角度的设定;
PY:偏中桩距离,中线上的点输入0,右偏输入+值,左偏输入-值;
3、正算显示坐标及切线方位角;反算输入线路待求点XD、YD,待求点大致桩号KMDG(此桩号越接近真实值计算速度越快),而显示结果是待求点桩号及偏中距离;
4、正算子程序为积分公式编写而成;反算子程序为角度趋近的方法编写,计算速度有点慢。

5、此程序显示较直观,结果在同一屏幕显示。注* :程序中乘号用*标示,其余为X。