CASIO fx-5800P编程计算器公路与铁路施工测量程序

本程序由一个主程序JD和三个子程序(JDA、JDB、JDC)构成,运行时只需运行主程序即可!

本程序适用于单交点对称型、不对称型、无缓和曲线单圆曲线型一个交点范围内(含交点前后有直线段时)的曲线要素核对和坐标计算,手工输入要素,对设计图纸的“直线、曲线转角表”中交点数据进行复核验证,并为线元法程序提供起点坐标起点切线方位角等数据!当然本程序也可单独逐交点输入进行放样计算用!鉴于5800计算器的空间和以上所述本程序的主要目的,故此程序不修改为数据库版本!需要的自行修改结合XY框架自己修改为数据库反算程序等!



主程序名:5.JD

24→Dimz↙

Cls :"XC"?U :"YC"?V :"K(JD)"?K :"X(JD)"?X :

"Y(JD)"?Y :"LS1"?B :"LS2"?C : ?R :

"(ZH)FWJ°"?M : "α(Z-,Y+)°"?O : M+O→N :

Prog "JDA"↙

Cls :"T1=":"T2=":"L=":"LY=": Locate 4,1,S : Locate 4,2,T : Locate 4,3,L : Locate 4,4,Q◢

Cls :"E=":"K(ZH)=": Locate 7,1,E : Locate 7,2,Z[1]◢

Cls : "K(HY)=":"K(QZ)=":"K(YH)=":"K(HZ)=": Locate 7,1, Z[2] : Locate 7,2, Z[3] : Locate 7,3, Z[4] : Locate 7,4, Z[5]◢

LbI 0 : "K×+×××"?P : "Z"?D : If D≠0 :Then "RJ"?H : IfEnd : Prog "JDB"↙

If D<0 :Then Cls : "X(L)=":"Y(L)=": Locate 6,1,F : Locate 6,2,G◢

Pol(F-U,G-V : Cls : "S(L)=": Locate 6,1,I : "F(L)=":

360Frac((J+360)÷360▼DMS◢

Goto 0 : IfEnd↙

If D=0 :Then Cls : "X(Z)=":"Y(Z)=": Locate 6,1,F : Locate 6,2,G : "QXFWJ(Z)=": Z▼DMS◢

Pol(F-U,G-V : Cls : "S(Z)=": Locate 6,1,I : "F(Z)=":

360Frac((J+360)÷360▼DMS◢

Goto 0 : IfEnd↙

If D>0 :Then Cls : "X(R)=":"Y(R)=": Locate 6,1,F : Locate 6,2,G◢

Pol(F-U,G-V : Cls : "S(R)=": Locate 6,1,I : "F(R)=":

360Frac((J+360)÷360▼DMS◢

Goto 0 : IfEnd↙

子程序1名: JDA

If O<0 :Then -1→W : Else 1→W : IfEnd : WO→A ↙

B2 ÷24÷R-B^(4)÷2688÷R ^(3) →Z[6] ↙

C2 ÷24÷R-C^(4)÷2688÷R ^(3) →Z[7] ↙

B÷2-B^(3)÷240÷R2 →Z[8] ↙

C÷2-C^(3)÷240÷R2 →Z[9] ↙

Z[8]+((R+Z[7]-(R+Z[6])cos(A))÷sin(A))→S↙

Z[9]+((R+Z[6]-(R+Z[7])cos(A))÷sin(A))→T↙

RAπ÷180+(B+C) ÷2→L↙

RAπ÷180-(B+C) ÷2→Q↙

(R+(Z[6]+Z[7])÷2)÷cos(A÷2)-R→E↙

K-S→Z[1] ↙↙

Z[1]+B→Z[2] ↙↙

Z[2]+Q÷2→Z[3]↙

Z[1]+L-C→Z[4]↙

Z[4]+C→Z[5]↙

子程序2名: JDB

X-Scos(M)→Z[19]:

Y-Ssin(M)→Z[20]↙

X+Tcos(N)→Z[21]:

Y+Tsin(N)→Z[22]↙

If P>Z[1]:Then Goto 1 :IfEnd↙

Z[1]-P→L↙

X-(S+L)cos(M)+Dcos(Z+H)→F↙

Y-(S+L)sin(M)+Dsin(Z+H)→G↙

M→Z : Goto 5↙

LbI 1 : If P>Z[2]:Then Goto 2 :IfEnd↙

P-Z[1]→L:L→Z[12]:B→Z[13]:Prog"JDC"↙

Z[19]+Z[14]cos(M)-WZ[15]sin(M)+Dcos(Z+H)→F



Z[20]+Z[14]sin(M)+WZ[15]cos(M)+Dsin(Z+H)→G↙

M+90WL2 ÷(BRπ)→Z↙

Goto 5↙

LbI 2 : If P>Z[4]:Then Goto 3 :IfEnd↙

P-Z[1]→L:90(2L-B)÷R÷π→Z[11]↙

Rsin(Z[11])+Z[8]→Z[14]:R(1-cos(Z[11]))+Z[6]→Z[15]↙

Z[19]+Z[14]cos(M)-WZ[15]sin(M)+Dcos(Z+H)→F↙

Z[20]+Z[14]sin(M)+WZ[15]cos(M)+Dsin(Z+H)→G↙

M+WZ[11]→Z↙

Goto 5↙

LbI 3 : If P>Z[5]:Then Goto 4 :IfEnd↙

Z[5]-P→L:L→Z[12]:C→Z[13]:Prog"JDC"↙

Z[21]-Z[14]cos(N)-WZ[15]sin(N)+Dcos(Z+H)→F↙

Z[22]-Z[14]sin(N)+WZ[15]cos(N)+Dsin(Z+H)→G↙

N-90WL2 ÷(CRπ)→Z↙

Goto 5↙

LbI 4 : P-Z[5]→L↙

X+(T+L)cos(N)+Dcos(Z+H)→F↙

Y+(T+L)sin(N)+Dsin(Z+H)→G↙

N→Z↙

Goto 5↙

LbI 5 : 360Frac((Z+360)÷360→Z↙

子程序3名: JDC

If Z[12]=0 :Then 0→Z[14]: 0→Z[15]:Else↙

Z[12]- Z[12]^(5)÷40÷(RZ[13])2+ Z[12]^(9)÷3456÷(RZ[13])^(4) →Z[14]↙

Z[12]^(3)÷6÷(RZ[13])-Z[12]^(7)÷336÷(RZ[13])^(3)+ Z[12]^(11) ÷42240÷(RZ[13])^(5)→Z[15] ↙

IfEnd↙



程序说明:

已知数据输入:

XC ? 测站X坐标

YC ? 测站Y坐标

K(JD)?交点桩号

X(JD)?交点X坐标

Y(JD)?交点Y坐标

LS1 ?第一缓和曲线长度

LS2 ?第二缓和曲线长度

R ? 圆曲线半径

(ZH)FWJ°?交点前(即前交点至本交点也即ZH点)的正切线方位角

α(Z-,Y+)?本交点处线路转角(左转为负,右转为正,度分秒输入)

K×+×××? 待求桩号

Z ?待求桩号距中距离(左负值,右正值,中为0)

RJ ?斜交右角(线路切线前进方向与边桩右侧夹角)

计算结果显示:

T1=第一切线长

T2=第二切线长

L=曲线总长

LY=圆曲线长

E=曲线外距

K(ZH)=直缓点桩号

K(HY)=缓圆点桩号

K(QZ)=曲中点桩号

K(YH)=圆缓点桩号

K(HZ)=缓直点桩号

X= Y=待求点的坐标(其中:L-左 Z-中 R-右)

QXFWJ(Z)=待求点的中桩切线方位角(当求中桩坐标时显示)

S= F=测站至待求点的水平距离、方位角(其中L-左 Z-中 R-右)

(歪哥哥郑重声明:代码无误,输入注意!使用者使用不当所造成的一切损失概不负责!!)
首先声明这个程序我不是原创只不过我做了一下修改以后,以后就一直用这个程序呢,发出来大家分享一下!

↙符号为回车键

Fx-5800计算机程序
QXJS-000 主程序
Lbl 4:“1.SZ=>NE”:“2.NE=>SZ”:?Q:?S:?G:Prog“QXJS-SUB0”↙
Lbl 0:Q=1 => Goto1:Q=2 => Goto2:↙
Lbl 1:?Z:Prog“QXJS-SUB1”:“N=”:N◢
“E=”:E◢
“F=”:F◢
Goto4↙
Lbl 2: “N=”:?B: “E=”:?C:B→N: C→E:Prog“QXJS-SUB2”: “S=”:S◢
“Z=”:Z◢
Goto4↙

QXJS-SUB0 数据库子程序
Goto1↙ 同时保存多个曲线时的指针
Lbl 1
IF S<***(线元终点里程):Then***→A(线元起点方位角):***→O(线元起点里程):

***→U(线元起点X):***→V(线元起点Y):
***→P(线元起点曲率半径(右偏为正、左偏为负)):***→R(线元终点曲率半径(右偏为正、左偏为负)): ***→L(线元起点至终点长度)
: Return:IfEnd↙
为了便于解读,每增加一个线元增加一行语句,每增加一条曲线增加一个Lbl,每增加一个工程增加一个文件。


QXJS-SUB1 正算子程序
0.5(1÷R-1÷P)÷L→D:S-O→X↙
U+∫(cos(A+(X÷P+DX2)×180÷π,0,X)→N↙
V+∫(sin(A+(X÷P+DX2)×180÷π,0,X)→E↙
A+(X÷P+DX2)×180÷π→F↙
N+Zcos(F+G) →N:E+Zsin(F+G) →E

QXJS-SUB2 反算子程序
Lbl 1:0→Z:1→Q:Prog“QXJS-SUB0”: Prog“QXJS-SUB1”↙
Pol(N-B+10^(-46), E-C+10^(-46)):Isin(F-90-J) →W:S+W→S↙
Abs(W)>0.0001 => Goto1↙
Lbl 2: 0→Z:Prog“QXJS-SUB1”:(C-E) ÷sin(F+90) →Z
三、使用说明
1、规定
(1) 以道路中线的前进方向(即里程增大的方向)区分左右;当曲线半径在左时,P、R取负值,当曲线半径在右时,P、R取正值,当曲线半径为无穷大(即直线)时,P、R以10的45次代替。
(2) 当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右
侧时,Z取正值。
(3) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次方代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。

2、输入与显示说明
输入部分:

1. SZ => XY
2. XY = > SZ
Q ? 选择计算方式,输入1表示进行由里程、边距计算坐标;输入2表示由坐标反算里程和边距。
TYQXJS(主程序名)
LbI 0:4→Dimz:Cls
"1.SZ→XY"
"2.XY→SZ"?→N:Cls
"XO"?U: "YO"?V: "SO"?O:"FO"?G: "LS"?H: "RO"?P:"RN"?R:?Q
1÷P→C:(P-R)÷(2HPR) →D:180÷π→E
N=2=>Goto 2
LbI 1:Cls:?S
S=0=>Goto 0 (注:當S輸入0時,程序會由LbI 0開始重新運行)
?Z:Abs(S-O)→W
Prog"SUB1":Cls
"XS=":X◢
"YS=":Y◢
"FS=":F-90 ?DMS◢
Goto 1
LbI 2:Cls:?X
X=0=>Goto 0 (注:當X輸入0時,程序由會LbI 0開始重新運行)
?Y:X→I:Y→J
Prog"SUB2":O+W→S:Cls
"S=":S◢
"Z=":Z◢
Goto 2
注:紅色部可以不要,亦可以要,它的作用是將S或X輸入0時,程序會重新由頭開始運行,(即是可以計算下段線元)

SUB1(子程序名)


0.1739274226→A:0.3260725774→B
0.0694318442→K:0.330009482→L
1-L→F:1-K→M
G+QEKW(C+KWD)→Z[1]
G+QELW(C+LWD)→Z[2]
G+QEFW(C+FWD)→Z[3]
G+QEMW(C+MWD)→Z[4]
A×cos(Z[1])→X (剩號可省略)
X+Bcos(Z[2])→X
X+Bcos(Z[3])→X
X+Acos(Z[4])→X
U+WX→X
Asin(Z[1])→Y
Y+Bsin(Z[2])→Y
Y+Bsin(Z[3])→Y
Y+Asin(Z[4])→Y
V+WY→Y
G+QEW(C+WD)+90→F
X+Zcos(F)→X
Y+Zsin(F)→Y

SUB2(子程序名)
G-90→T
(Y-V)cos(T)-(X-U)sin(T)→W
Abs(W)→W:0→Z
LbI 4:Prog"SUB1"
T+QEW(C+WD)→L
(J-Y)cos(L)-(I-X)sin(L)→Z
If Abs(Z)<1E-6:Then 0→Z Prog"SUB1"
(J-Y)÷sin(F)→Z
Else W+Z→W:Goto 4:IfEnd

注:1E-6即是10的負6次方,亦即是等於0.000001
輸入時按SHIFT---log---(-)---6
亦可直接將If Abs(Z)<1E-6寫成If Abs(Z)<0.000001

注意:本程序是根據yhhf編寫的4800P改寫而成,以下是源程序及算例
大家有問題亦可在以下網址查看及向yshf發問
https://www.360docs.net/doc/c05629619.html,/celiang/article_view.asp?id=380&author=yshf



曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序
一、程序功能
本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(
SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线
元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲
率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。另
外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲
线任意里程中边桩坐标进行正反算。本程序也可以在CASIO fx-4500P计算器及 CASIO fx-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=>Goto 1:≠>Goto 2Δ←┘
Lbl 1:{SZ}:SZ:W=Abs(S-O):Prog "SUB1":X"XS"=X◢
Y"YS"=Y◢
F"FS"=F-90◢
Goto 1←┘
Lbl 2:{XY}:XY:I=X:J=Y:Prog "SUB2":S"S"=O+W◢
Z"Z"=Z◢
Goto 2

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:Lbl 0:Prog "SUB1":L=T+QEW(C+
WD):Z=(J-Y)cosL-(I-X)sinL:AbsZ<1E-6=>Goto1:≠>W=W+Z:Goto 0Δ←┘
Lbl 1: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坐标
FS=××× 正算时,所求点对应的中线点的切线方位角
S=××× 反算时,计算得出的所求点的里程
Z=××× 反算时,计算得出的所求点的边距

四、算例
某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组
成,各段线元的要素(起点里程S0、起点坐标X0 Y0、起点切线方位角F0、线元长度
LS、起点曲率半径R0、止点曲率半径RN、线 元左右偏标志Q)如下:
S0 X0 Y0 F0 LS R0 RN 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、正算
(注意:略去计算方式及线元要素输入,请自行根据所求点所在的线元输入线元
要素)
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



相关文档
最新文档