0=>AbsAZ=-1:≠=>Z=1⊿⊿W=C-D:T=Rtan(AbsW÷2)E=TcosAbsC:G=RsinAbsCK=Q-U+EM=√(R2-(" />
当前位置:文档之家› 公路竖曲线高程的精确计算函数【修正版】

公路竖曲线高程的精确计算函数【修正版】

公路竖曲线高程的精确计算函数【修正版】

CASIO 可编程计算器4850版【已修正】:

Lbl0
Norm:Deg
{Q}:Q"CHAINAGE"
A"i1":B"i2"RU"VPI STATION"F"VPI ELEVATION"
C=tan-1(A÷100):D=tan-1 (B÷100)

AB>0=>AbsAZ=-1:≠=>Z=1⊿⊿

W=C-D:T=Rtan(AbsW÷2)
E=TcosAbsC:G=RsinAbsC
K=Q-U+E
M=√(R2-(K-ZG)2)
L=√(R2-G2)-AbsW(F-EA÷100)÷W

Fix3

QH=F+A(Q-U)÷100:≠=>H=AbsW(M-L)÷W⊿

"H=":H◢

Goto0

i1和i2按%为单位输入


CASIO 可编程计算器5800带串列功能版【已修正】:

Lbl0
Norm 2:Cls:ClrStat:0→N
“--MODE SELECT--1.BATCH-TREAT 2.One BY One”?Z
Z=1=>Goto2
Lbl1
Cls:”CHAINAGE=”?Q
If Q=-1000:Then Goto5:Else Goto4:IfEnd
Lbl2
“BEGIN CH=”?O
“END CH=”?Y
“STEPS=”?S
Lbl3
If Y≥O+NS:Then O+NS→Q:Else Goto5:IfEnd
Lbl4
If N=0:Then “i1”?A:”i2”?B:?R:”VPI STATION”?U:”VPI ELEVATION”?F:IfEnd
tan-1(A÷100)→C:tan-1 (B÷100)→D

If AB>0 And Abs(A)C-D→W:Rtan(Abs(W)÷2)→T
Tcos(Abs(C))→E:Rsin(Abs(C))→G
Q-U+E→K
√(R2-(K-IG)2) →M
√(R2-G2)-Abs(W)(F-EA÷100)÷W→L
If QFix3
N+1→N
Q→List X[N]
H→List Y[N]
If Z=1:Then Cls:“K”:Locate2,1,Int(Q÷1000):Locate7,1,"+”:Locate8,1,Q-1000Int(Q÷1000):Locate1,2,”ELEV=”:Locate6,2,H:locate1,3,”PROGRAM IS RUNN-“: Locate1,4,”ING,PLEASE WAIT!”:Goto3 :Else“ELEVATION=”:H◢Goto1:IfEnd
Lbl5
Cls
“PROGRAM-END”

版本有两种计算模式——批量计算显示结果保存到串列和逐个计算显示结果并保存到串列的功能。i1和i2的值还是按%为单位。
在批量计算中,BEGIN CH=输入起始桩号,END CH=输入结束桩号,STEPS=输入桩号间隔步距值。
在逐个计算中,桩号输入-1000程序自动结束退出。

5800全线任意点设计高程计算,可计算竖曲线范围内外任意点的设计高程:

“BPDZH=”?Z:“GC=”?H:“R=”?R:“I1=”? I:“I2=”?L :“T=”:0.005RAbs(I -L) →T◢
“E=”: T2÷2÷R◢
Lbl 0:“JZZH=”?→K:Z-T→A:Z+T→B:K-A→C:B-K→D:K-Z→E←┘
If L >I:Then 1→J:Else -1→J:IfEnd←┘
If KB =>0→D: IfEnd←┘
If K≦Z:Then I→Y:C→G:Else K >Z=>L→Y:D→G: IfEnd←┘
Lbl 1:Fix 3:“H=”:H+EY÷100+JG2÷2÷R◢
Goto 0←┘


说明:BPDZH:前变坡点桩号 用变量Z表示
H:前变坡点高程
R:半径
I L:前后纵坡值 输入格式:6.1%输入6.1,有负号的要输入负号
T:切线长 E:竖距
JZZH:待求点设计高程的桩号 用变量K表示
Fix 3:计算结果保留3位小数


天涯明月刀FX5800P高程计算之垃圾版
NFH[KZ](高程计算主程序)
Lbl 1(数据初始化)
Prog”SEL[HDT]”
Prog”NH[JSYS]”
Cls:”W0=”?X:Cls
“[+ -]t0=”?Y
Lbl 2(循环调用纵横数据计算高程)
Do
Cls:“KP=”?S:If S=-1:Then Goto 1:Else
If S>maxX Or S

:Then Cls:”---- KP OVER!----“
Locate 3,3,”[EXE]=>INPUT”?
Goto 2:IfEnd: IfEnd
Cls
" ZP="?Z
Prog”NH[ZHYS]”
Prog”S[SQX]”
Prog”SEL[IDT]”
Prog”TIM[YS]”
Prog”S[I]”
Cls
“HC=”?→E
Prog”H[JS]”
Prog”DISP.HITW”?
LpWhile S≥0

SEL[HDT](竖曲线数据库选择子程序)
Lbl 0(选择线路代码)
Cls:“[ZHUHAI.JICHANG]--------------- ”
”THE ROAD NO.XX”?→M
If M<1 Or M>31:Then Goto 0:IfEnd
If M=1:Then Prog”NDH[KX]”:Return: IfEnd
If M=2:Then Prog”NDH[ZX]”:Return: IfEnd
......
If M=31:Then Prog”NDH[XXX]”:Return: IfEnd

NDH[XXX](竖曲线数据库子程序)
变坡点数目→N:N+1→DimZ
{起点桩号,变坡点1桩号。。。变坡点N桩号,终点桩号}→List X
{起点高程,变坡点1高程。。。变坡点N高程,终点高程}→List Y
{变坡点1竖曲线半径。。。变坡点N竖曲线半径,10^30,10^30}→List Freq
Return

NH[JSYS](循环计算纵坡子程序)
For 1→I To N+1
(List Y[I+1]- List Y[I])÷(List X[I+1]- List X[I])→Z[I]
Next
Return

NH[ZHYS](循环判断、转换竖曲线参数子程序)
For 1→I To N
If S≤List X[I+1]+0.5 List Freq[I]Abs(Z[I+1]-Z[I]):Then
List X[I+1]→A
List Y[I+1]→B
List Freq[I]→R
Z[I]→C:Z[I+1]→D
Return
IfEnd
Next
Return

S[SQX](竖曲线计算子程序)
Lbl 0
D-C→W:0.5RAbs(W)→T: A-T→E: A+T→F
Lbl 1
If S≤E:Then B+(S-A)C→H: Return:IfEnd
If S≤F:Then B+(S-A)C+W(S-A+T)2÷(2RAbs(W))→H: Return:IfEnd
If S>F:Then B+(S-A)D→H:IfEnd
Return

SEL[IDT](横坡数据库引导子程序)
If M=1:Then Prog”NDI[KX]”:Return: IfEnd
If M=2:Then Prog”NDI[ZX]”:Return: IfEnd
......
If M=31:Then Prog”NDH[XXX]”:Return: IfEnd

NDI[XXX](横坡数据库子程序)
If Z≤0:Then Goto L:Else Goto R:IfEnd
Lbl L(设计高程线左侧横坡)
If S≤横坡变化区间终点桩号:Then [[起点桩号,终点桩号,起点横坡,终点横坡]]→MatF: Return: IfEnd
......
Lbl R(设计高程线右侧横坡)
If S≤横坡变化区间终点桩号:Then [[起点桩号,终点桩号,起点横坡,终点横坡]]→MatF: Return: IfEnd
......


TIM[YS](矩阵横坡数据传递给标准变量)
Mat F[1,1]→A
Mat F[1,2]→B
Mat F[1,3]→C
Mat F[1,4]→D
Return


S[I](横坡计算子程序,按图纸确定)
Lbl 1(线性过渡)
C+(D-C)(S-A)÷(B-A)→I:I÷100→I
Return
Lbl 2(三次抛物线过渡,其中一种)
C+(D-C)(3((S-A)÷(B-A))^2-2((S-A)÷(B-A))^3)→I: I÷100→I
Return

H[JS](高程计算子程序)
H:H+(Abs(Z)-X)+Y→G
Return


DISP.HITW(高程相关显示子程序)
Cls
"HS=":Locate 5,1,H
"Ht=":Locate 5,2,G
"I%=":Locate 5,3,100I
"TW=":Locate 5,4,G-E
Return

关于程序的几点说明:
1.本程序由1个主调程序+12个相关子程序组成,实现线路任意点高程计算。之所以“庞大”,一方面仍然是从程序标准化和智能化方面来考虑,另一方面,我面对

的大小线路总共31条,不得不考虑数据的处理方式。如果说有什么优势的话,那么竖曲线数据处理将会给你带来预想不到的效果。



相关主题
文本预览
相关文档 最新文档