曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序
一、程序功能
本程序由一个主程序(ZD-XY)、一个次主程序、二个子程序(正算子程序A、反算子程序B)及数据库子程序(D1~DN)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线
元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。另外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲线任意里程中边桩坐标进行正反算。本程序也可以在CASIO fx-4500P计算器及CASIO fx-4800P计算器上运行。
特别申明:(1).适用于弧长小于2倍半径的各种线元坐标正反算,精度优
于1mm;
(2).在引用该核心计算部分时,请注明来源。
二、源程序
1.主程序(XY-ZD)
LbI 0:Norm
F=1:Z[1]=90:
Prog"THB":Fix3:F=1=>Goto 1: ≠>Goto 2Δ
LbI 1:"X=":X◢
"Y=":Y◢Goto 0
LbI 2:”KM=”:Z◢
“D=”:D◢Goto 0
2.次程序(THB)
Defm 2:{Z}:Z"KM":Prog“D”:
C=1÷P:S=(P-R)÷(2HPR):E=180÷π:F=1=>Goto 1:≠>Goto 2Δ
Lbl 1:{D}:D:W=Abs(Z-O):Prog "A":X:Y:Goto 3
LbI 2:{XY}:X”X0”:Y”Y0”:I=X:J=Y:Prog"B":Z=O+W:D=D:Goto 3
LbI 3:F=1=>X:Y:≠>Z:D
3.正算子程序(A)
A=0.1184634425:B=0.2393143352:K=0.046910077:L=0.2307653449:N=0.2844444444:M=0.5:X= U+W(Acos(G+QEKW(C+KWS))+Bcos(G+QELW(C+LWS))+Ncos(G+QEMW(C+MWS))+Bcos(G+QE(1-L)W(C+(1-L)WS))+Acos(G+QE(1-K)W(C+(1-K)WS))):
Y= V+W(Asin(G+QEKW(C+KWS))+Bsin(G+QELW(C+LWS))+Nsin(G+QEMW(C+MWS))+Bsin(G+QE(1-L)W(C+(1-L)WS))+Asin(G+QE(1-K)W(C+(1-K)WS))):
Z[2]= G+QEW(C+WS)+Z[1]:X=X+DcosZ[2]:Y=Y+DsinZ[2]
4.反算子程序(B)
T=G-90:W=Abs((Y-V)cosT-(X-U)sinT):D=0:Lbl 0:Prog "A":L=T+QEW(C+
WS):D=(J-Y)cosL-(I-X)sinL:AbsD<1E-6=>Goto1:≠>W=W+D:Goto 0Δ←┘
Lbl 1:D=0:Prog "A":D=(J-Y)÷sinZ[2]
5.数据子程序(附后示例)
①D
Z<769.257=>O=500:U=19942.837:V=28343.561:G=125°16′31″:H=269.256:P=1E45:R=1E45:Q=0Goto0: ≠>Z<806.749=>O=769.256:U=19787.340:V=28563.378:G=125°16′31″:H=37.492:P=1E45:R=221.75:Q=-1:Goto 0: ≠>Z<919.528=>O=806.748:U=19766.566:V=28594.574:G=120°25′54.07″:H=112.779:P=221.75:R=221.75:Q=-1:Goto 0:
LbI 0:Fixm O:U:V:G:H:P:R:Q:
数据字程序中字母表示说明:
O-线元起点桩号;U、V-线元起点桩号的X、Y坐标,G-线元起点桩号方位角,H-线元长度,P-线元起点曲率半径,R-线元终点曲率半径,Q-线元判别
三、使用说明
1、规定
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,D=0;当位于中线左铡时,D取负值;当位于中线中线右
侧时,D取正值。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半
径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
2、输入与显示说明
输入部分:
1.F=1:ZD=> XY
2.F=2:XY = >ZD
F? 选择计算方式,输入1表示进行由里程、边距计算坐标;输入2表示由坐标反算里程和边距。Z[1]为线元边桩与中线右夹角。
KM?正算时所求点的里程
D?正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零) S0?线元起点里程
X?反算时所求点的X坐标
Y?反算时所求点的Y坐标
显示部分:
X=××× 正算时,计算得出的所求点的X坐标
Y=××× 正算时,计算得出的所求点的Y坐标
KM=××× 反算时,计算得出的所求点的里程
D=××× 反算时,计算得出的所求点的边距
四、算例
某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组
成,各段线元的要素(起点里程O、起点坐标UV、起点切线方位角G、线元长度H、起点曲率半径P、止点曲率半径R、线元左右偏标志Q)如下:
O U V G H P R Q
500.000 19942.837 28343.561 125 16 31.00 269.256 1E45 1E45 0
769.256 19787.340 28563.378 125 16 31.00 37.492 1E45 221.75 -1
806.748 19766.566 28594.574 120 25 54.07 112.779 221.75 221.75 -1
919.527 19736.072 28701.893 91 17 30.63 80.285 221.75 9579.228 -1
999.812 19744.038 28781.659 80 40 50.00 100.000 1E45 1E45 0
1、正算
(注意:略去主程序修改计算方式及线元要素子程序,请自行根据所求点所在的线元输入线元要素子程序)
KM=700 D=-5 计算得 X=19831.41785 Y=28509.72590
KM=700 D=0 计算得 X=19827.33592 Y=28506.83837
KM=700 D= 5 计算得 X=19823.25398 Y=28503.95084
KM=780 D=-5 计算得 X=19785.25749 Y=28575.02270
KM=780 D=0 计算得 X=19781.15561 Y=28572.16358
KM=780 D= 5 计算得 X=19777.05373 Y=28569.30446
KM=870 D=-5 计算得 X=19747.53609 Y=28654.13091
KM=870 D=0 计算得 X=19742.68648 Y=28652.91379
KM=870 D= 5 计算得 X=19737.83688 Y=28651.69668
KM=940 D=-5.123 计算得 X=19741. 59118 Y=28722.05802
KM=940 D=0 计算得 X=19736.47687 Y=28722.35642
KM=940 D= 3.009 计算得 X=19733.47298 Y=28722.53168
2、反算
X=19831.418 Y=28509.726 计算得 KM=699.9999974 D= -5 .00018164
X=19827.336 Y=28506.838 计算得 KM =699.9996493 D= 0.000145136
X=19823.25398 Y=28503.95084 计算得 KM =699.9999985 D= 5.000003137
X=19785.25749 Y=28575.02270 计算得 KM =780.0000035 D= -5 .000001663
X=19781.15561 Y=28572.16358 计算得 KM =780.0000025 D=- 0.000002979
X=19777.05373 Y=28569.30446 计算得 KM =780.0000016 D= 4.99999578
X=19747.536 Y=28654.131 计算得 KM =870.0001137 D= -4.99941049
X=19742.686 Y=28652.914 计算得 KM =870.0003175 D=- 0.00041814
X=19737.837 Y=28651.697 计算得 KM =870.0002748 D= 4.999808656
X=19741.5912 Y=28722.0580 计算得 KM =939.9999786 D= -5.123024937
X=19736.4769 Y=28722.3564 计算得 KM =939.9999862 D=- 0.000027710
X=19733.4730 Y=28722.5317 计算得 KM =940.0000238 D= 3.00898694