4800正反算程序.docx
《4800正反算程序.docx》由会员分享,可在线阅读,更多相关《4800正反算程序.docx(4页珍藏版)》请在冰豆网上搜索。
![4800正反算程序.docx](https://file1.bdocx.com/fileroot1/2022-12/12/435758ce-cd2a-4d5a-a0ea-a096800046ed/435758ce-cd2a-4d5a-a0ea-a096800046ed1.gif)
4800正反算程序
曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序
发布时间:
作者:
未知来源:
lq52搜集
字体:
小中大|上一篇下一篇|打印
一、程序功能
本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(
SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线
元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲
率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
另
外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲
线任意里程中边桩坐标进行正反算。
本程序也可以在CASIOfx-4500P计算器及CASIOfx-4850P计算器上运行。
特别申明:
(1).适用于弧长小于2倍半径的各种线元坐标正反算,精度优
于1mm;
(2).在引用该核心计算部分时,请注明来源。
二、源程序
1.主程序(TYQXJS)
"1.SZ=>XY":
"2.XY=>SZ":
N:
U"X0":
V"Y0":
O"S0":
G"F0":
H"LS":
P"R0":
R"
RN":
Q:
C=1÷P:
D=(P-R)÷(2HPR):
E=180÷π:
N=1=>Goto1:
≠>Goto2Δ←┘
Lbl1:
{SZ}:
SZ:
W=Abs(S-O):
Prog"SUB1":
X"XS"=X◢
Y"YS"=Y◢
F"FS"=F-90◢
Goto1←┘
Lbl2:
{XY}:
XY:
I=X:
J=Y:
Prog"SUB2":
S"S"=O+W◢
Z"Z"=Z◢
Goto2
2.正算子程序(SUB1)
A=0.1739274226:
B=0.3260725774:
K=0.0694318442:
L=0.3300094782:
F=1-L:
M=1-K:
X=U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW
(C+FWD))+Acos(G+QEMW(C+MWD))):
Y=V+W(Asin(G+QEKW(C+KWD))+Bsin(G+
QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD))):
F=G+QEW(C+
WD)+90:
X=X+ZcosF:
Y=Y+ZsinF
3.反算子程序(SUB2)
T=G-90:
W=Abs((Y-V)cosT-(X-U)sinT):
Z=0:
Lbl0:
Prog"SUB1":
L=T+QEW(C+
WD):
Z=(J-Y)cosL-(I-X)sinL:
AbsZ<1E-6=>Goto1:
≠>W=W+Z:
Goto0Δ←┘
Lbl1:
Z=0:
Prog"SUB1":
Z=(J-Y)÷sinF
三、使用说明
1、规定
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右
侧时,Z取正值。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半
径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
2、输入与显示说明
输入部分:
1.SZ=>XY
2.XY=>SZ
N?
选择计算方式,输入1表示进行由里程、边距计算坐标;输入2表示由坐标反算
里程和边距。
X0?
线元起点的X坐标
Y0?
线元起点的Y坐标
S0?
线元起点里程
F0?
线元起点切线方位角
LS?
线元长度
R0?
线元起点曲率半径
RN?
线元止点曲率半径
Q?
线元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
S?
正算时所求点的里程
Z?
正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)
X?
反算时所求点的X坐标
Y?
反算时所求点的Y坐标
显示部分:
XS=××× 正算时,计算得出的所求点的X坐标
YS=××× 正算时,计算得出的所求点的Y坐标
S=××× 反算时,计算得出的所求点的里程
Z=××× 反算时,计算得出的所求点的边距
四、算例
某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组
成,各段线元的要素(起点里程S0、起点坐标X0Y0、起点切线方位角F0、线元长度
LS、起点曲率半径R0、止点曲率半径RN、线元左右偏标志Q)如下:
S0 X0 Y0 F0 LS R0 RN Q
500.000 19942.837 28343.561 1251631.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 1202554.07 112.779 221.75 221.75 -1
919.527 19736.072 28701.893 911730.63 80.285 221.75 9579.228 -1
999.812 19744.038 28781.659 804050.00 100.000 1E45 1E45 0
1、正算
(注意:
略去计算方式及线元要素输入,请自行根据所求点所在的线元输入线元
要素)
S=700 Z=-5 计算得 XS=19831.41785 YS=28509.72590
S=700 Z=0 计算得 XS=19827.33592 YS=28506.83837
S=700 Z=5 计算得 XS=19823.25398 YS=28503.95084
S=780 Z=-5 计算得 XS=19785.25749 YS=28575.02270
S=780 Z=0 计算得 XS=19781.15561 YS=28572.16358
S=780 Z=5 计算得 XS=19777.05373 YS=28569.30446
S=870 Z=-5 计算得 XS=19747.53609 YS=28654.13091
S=870 Z=0 计算得 XS=19742.68648 YS=28652.91379
S=870 Z=5 计算得 XS=19737.83688 YS=28651.69668
S=940 Z=-5.123 计算得 XS=19741.59118 YS=28722.05802
S=940 Z=0 计算得 XS=19736.47687 YS=28722.35642
S=940 Z=3.009 计算得 XS=19733.47298 YS=28722.53168
2、反算
X=19831.418 Y=28509.726 计算得 S=699.9999974 Z=-5.00018164
X=19827.336 Y=28506.838 计算得 S=699.9996493 Z=0.000145136
X=19823.25398 Y=28503.95084 计算得 S=699.9999985 Z=5.000003137
X=19785.25749 Y=28575.02270 计算得 S=780.0000035 Z=-5.000001663
X=19781.15561 Y=28572.16358 计算得 S=780.0000025 Z=-0.000002979
X=19777.05373 Y=28569.30446 计算得 S=780.0000016 Z=4.99999578
X=19747.536 Y=28654.131 计算得 S=870.0001137 Z=-4.99941049
X=19742.686 Y=28652.914 计算得 S=870.0003175 Z=-0.00041814
X=19737.837 Y=28651.697 计算得 S=870.0002748 Z=4.999808656
X=19741.5912 Y=28722.0580 计算得 S=939.9999786 Z=-5.123024937
X=19736.4769 Y=28722.3564 计算得 S=939.9999862 Z=-0.000027710
X=19733.4730 Y=28722.5317 计算得 S=940.0000238 Z=3.00898694
特别说明:
π=3.14151926......
在算例中:
1、K0+500.000~K0+769.256为直线部分;
2、K0+769.256~K0+806.748为完整缓和曲线部分;
3、K0+806.748~K0+919.527为圆曲线部分;
4、K0+919.527~K0+999.812为非完整缓和曲线部分;
A、B是Gauss-Legendre求积公式中的插值系数,K、L是Gauss-Legendre求积公式中的求积节点,请参看天津大学出版社出版的《数值分析》[翟瑞彩谢伟松2000年11月第1版]P.206表6.5中n=3的一行,一看你就清楚明白。
无论是直线、圆曲线,还是完整缓和曲线、非完整缓和曲线,该程序计算结果都完全正确,精度符合要求,编码简洁,比起网上那些遮遮掩掩、转弯抹角、收费或者编码繁杂的程序好上千倍,值得推荐,应给予奖励!
如果将“Lbl1:
{SZ}:
SZ:
W=Abs(S-O):
Prog"SUB1":
X"XS"=X◢
Y"YS"=Y◢”改为:
“Lbl1:
{SZ}:
SZ:
W=Abs(S-O):
Prog"SUB1":
X"XS"=X◢
Y"YS"=Y◢F"FS"=F-90◢"
则显示的FS为相应中线点的切线方位角。
说明:
缓止点地切线方位角=直缓点方位角+90L÷∏R
L是缓和曲线长。
。
R是半径
2010.6.18