平曲线坐标、反算桩号计算程序
prog "PQX"
{mn}:M"X0":N"Y0":Defm 1:Z[1]=0
Lbl 1:{ABGHVWK}:K"JL":G"JX":H"JY":V"I0":W"J0":A"R":B"LS":Fixm
P=B^2/24/A:Q=B/2-B^3/240/A^2:T=(A+P)tan(Abs W/2)+Q:C=K-T:D=C+B:F=D+π*A*AbsW/180:E=F-B
w<0=>s=-1:≠=>s=1△
Lbl 2:{L}:L:L=0=>GOTO 1△
Lbl 6:L≤C=>O=K-L:R=G-OcosV:U=H-OsinV:Z=V:GOTO 3△
L≥F=>O=L-F+T:Z=V+W:R=G+OcosZ:U=H+OsinZ:GOTO 3△
L<D=>O=L-C:prog "XY":Z=V+SR:R=G+(I-T)cosV-SJsinV:U=H+(I-T)sinV+JScosV:GOTO 3△
L>E=>O=F-L:prog "XY":O=V+W:Z=O-SR:R=G+(T-I)cosO-SJsinO:U=H+(T-I)sinO+SJcosO:GOTO 3△
O=180(L-D+B/2)/π/A:I=AsinO+Q:J=P+A(1-cosO):Z=V+SO:R=G-(T-I)cosV-SJsinV:U=H-(T-I)sinV+SJcosV
Lbl 3:Z[1]=0.002=>GOTO 5:≠=>O=0△R"XL"◢U"YL"◢Z"ZL"◢
Lbl 4:{O}:O"YC":O=0=>GOTO 2△
O=-1=>GOTO 5△
X=R-OsinZ:Y=U+OcosZ:pol(X-M,Y-N:J<0=>J=J+360△
X"XZ"◢Y"YZ"◢J"A0"◢I"DD"◢GOTO 4
Lbl 5:{XY}:X"XF":X=-1=>Z[1]=0:GOTO 4△Y"YF":pol(X-R,Y-U:O=Icos(J-Z):AbsO≤0.001=>O"DL"◢L+O◢O=Isin(J-Z):O"YC"◢GOTO 5:≠=>Z[1]=0.002:L=L+O:GOTO 6△
prog "XY"
U=AB:I=O-O^5/40/U^2:J=O^3/6/U-O^7/336/U^3:R=90O^2/π/U
变量名称说明:
M"X0":N"Y0"为测站点坐标
K"JL":G"JX":H"JY":V"I0":W"J0":A"R":B"LS"分别为交点桩号、坐标、起始方位角、转角(左-右+)、半径、缓长
L、R"XL"、U"YL"、Z"ZL" 分别为输入桩号、求出中桩坐标、即时方位角
O"YC":X"XZ"◢Y"YZ"◢J"A0"◢I"DD" 分别为输入边桩距离(左-右+)、求出边桩坐标、边桩点到测站点的方位角和平距
O"YC"=0返回计算中桩坐标
O"YC"=-1进入计算桩号过程(输入坐标X"XF" 、Y"YF"分别为求出桩号L+O,及至中桩边距O"YC",O"DL"为桩号计算的误差距)
O"YC"=约0.00001可求中桩点到测站点方位角和平距
X"XF"=-1返回计算坐标过程
计算桩号过程时,需多次确认输入的坐标X"XF"、Y"YF"直到出现O"DL"桩号误差距较小时即可得出准确的桩号
=>前不用冒号
≠=>前有冒号
△前后不用冒号