计算机正方算程序.docx
《计算机正方算程序.docx》由会员分享,可在线阅读,更多相关《计算机正方算程序.docx(20页珍藏版)》请在冰豆网上搜索。
计算机正方算程序
线路中边桩任意里程坐标正、反算改编程序(CASIOfx-4800)
含数据库、测站放样计算
(第二次修改)
1.加编数据库作为主程序,计算中不必逐项输入"线元要素",提高运算速度,避免现场忙中出错
2.将原来的主程序并入数据库
3.计算直观,人性化
4.正算直接输入里程和边距,反算输入近似里程便可
5.增加了“计算点与测站点”的距离和方位角计算语句,方便直接放样
6.愿收获与大家共享
7.核心计算程序摘自“yshf”
一.改动后的程序清单:
1. 正算子程序(SUB1) A=0.1739274226:
B=0.3260725774:
K=0.0694318442:
L=0.3300094782:
F=1-L:
M=1-K:
X=U+W(Acos(G+57.2958QKW(1/P+KWD))+Bcos(G+57.2958QLW(1/P+LWD))+Bcos(G+57.2958QFW
(1/P+FWD))+Acos(G+57.2958QMW(1/P+MWD))):
Y=V+W(Asin(G+57.2958QKW(1/P+KWD))+Bsin(G+
57.2958QLW(1/P+LWD))+Bsin(G+57.2958QFW(1/P+FWD))+Asin(G+57.2958QMW(1/P+MWD))):
F=G+57.2958QW(1/P+
WD)+90:
X=X+ZcosF:
Y=Y+ZsinF
2. 反算子程序(SUB2)
T=G-90:
W=Abs((Y-V)cosT-(X-U)sinT):
Z=0:
Lbl 0:
Prog "SUB1":
L=T+57.2958QW(1/P+
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
二.增设数据库程序(SJK主程序)
Lb1 4:
"1.SZ => XY":
"2.XY => SZ":
{NS}:
S∠下一线元起点里程=>O=本线元起点里程:
U=本线元起点X:
V=本线元起点Y:
G=本线元起算方位角:
H=本线元长度:
P=起点曲率半径:
R=终点曲率半径:
Q=0或1、-1:
Goto0Δ←┘(第一线元数据要素)
S∠下一线元起点里程=>O=本线元起点里程:
U=本线元起点X:
V=本线元起点Y:
G=本线元起算方位角:
H=本线元长度:
P=起点曲率半径:
R=终点曲率半径:
Q=0或1、-1:
Goto0Δ←┘(第二线元数据要素)
S∠下一线元起点里程=>O=本线元起点里程:
U=本线元起点X:
V=本线元起点Y:
G=本线元起算方位角:
H=本线元长度:
P=起点曲率半径:
R=终点曲率半径:
Q=0或1、-1:
Goto0Δ←┘(第三线元数据要素)
。
。
。
。
。
。
。
。
。
。
Goto0Δ←┘(第N-1线元数据要素)
。
。
。
。
。
。
。
。
。
。
Goto0Δ←┘(第N线元数据要素)
LB1 0:
D=(P-R)÷(2HPR):
N=1=>Goto 1:
≠>Goto 2Δ←┘
Lbl 1:
{Z}:
Z:
W=Abs(S-O):
Prog "SUB1":
X"XS"=X◢
Y"YS"=Y◢
F"FS"=F-90◢
C“XC”:
E“YC”:
I=0:
J=0:
Pol(X-C,Y-E):
I“I=” ◢
J∠0=>J“J=”+360◢
≠>J“J=” ◢
ΔGoto4←┘
Lbl 2:
{XY}:
XY:
I=X:
J=Y:
Prog "SUB2":
S"S"=O+W◢
Z"Z"=Z◢
Goto4
三. 使用说明:
1.把所有相关的”线元要素“依次输入”SJK“
2.运算时直接调用“SJK”运行,程序提示输入里程“S”?
时,正算直接输入待求点里程,反算输入所求点“近似“里程
3.如果在正算中途想进行反算,重新给”N“?
赋值"2"便可
4.程序中“XC、YC、”为测站坐标,“I=”、“J=”为放样距离和方位角
5.其它输入与"yshf"原程序一致(程序中1/P表示1÷P)
附件:
(原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
卡西欧5800P计算器曲线任意里程中边桩坐标正反算
时间:
2010-03-1115:
30:
38 来源:
本站 作者:
李强善 我要投稿 我要收藏 投稿指南
一、程序功能
本程序由一个主程序(ZHUCHENXU)和几个子程序——正算子程序(SUB1)、反算子程序(SUB2)、数据库(SUB3)、算方位角程序(FA)、使用方位角算坐标(NE)、边坡放样程序(BIANPO)、隧道圆心放样程序(SDYX)构成,可以根据直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
二、源程序
增加变量16→DimZ
1.主程序(ZHUCHENXU)
"1.SZ→XY,2.XY→SZ,3.SDYX,4.BIANPO"?
N:
Lbl1:
”ZHUANGHAO=”?
S:
Prog"SUB3":
N≥2=>Goto2:
Abs(S-O)→W:
”BIANZHU=”?
→Z:
Prog"SUB1":
"XS=”:
X→X◢"YS=”:
Y→Y◢"FS=”:
(F-90)→F:
F▷DMS◢Prog"FA":
Goto1:
Lbl2:
”CX=”?
X:
X→I:
”CY=”?
Y:
Y→J:
”DMG=”?
→Z[7]:
Prog"SUB2":
"S=":
(O+W)→S◢"Z="Z→Z◢IfN=3:
ThenProg”SDYX”:
IfEnd:
IfN=4:
ThenProg”BIANPO”:
IfEnd:
Goto2
2.正算子程序(SUB1)
0.1739274226→Z[1]:
0.3260725774→B:
0.0694318442→K:
0.3300094782→L:
(1-L)→F:
(1-K)→M:
U+W(Z[1]cos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Z[1]cos(G+QEMW(C+MWD)))→X:
V+W(Z[1]sin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))
+Bsin(G+QEFW(C+FWD))+Z[1]sin(G+QEMW(C+MWD)))→Y:
G+QEW(C+WD)+90→F:
X+ZcosF→X:
Y+ZsinF→Y
3.反算子程序(SUB2)
G-90→Z[2]:
Abs((Y-V)cosZ[2]-(X-U)sinZ[2])→W:
0→Z:
Lbl0:
Prog"SUB1":
Z[2]+QEW(C+WD)→L:
(J-Y)cosL-(I-X)sinL→Z:
IfAbs(Z)<1E-6:
ThenGoto1:
ElseW+Z→W:
Goto0:
IfEnd
Lbl1:
0→Z:
Prog"SUB1":
(J-Y)÷sinF→Z
4.数据库(SUB3)
IfS<226100:
ThenCls:
Stop:
IfEnd
IfS<226255.833:
Then226100→O:
99037.9736→U:
4282.3590→V:
201.3266304→G:
1045→P:
1045→R:
253.543→H:
0→Q:
Goto1:
IfEnd
……
……
IfS>236005.651:
ThenCls:
Stop:
IfEnd
Lbl1:
1÷P→C:
(P-R)÷(2HPR)→D:
180÷π→E:
5.算方位角程序(FA)
LbI0:
“XC=”?
A:
“YC=”?
T:
X:
Y
0→J:
POI(X-A,Y-T)→I:
“BC=”:
I◢IfJ<0Then360+J→J:
ElseJ→J:
IfEnd
“FW=”:
J►DMS◢ Goto0
6.使用方位角算坐标(NE)
LbI0:
“X=”?
X:
“Y=”?
Y:
“L=”?
L:
“F0”?
F:
L×Cos(F)+X→N:
“N=”N◢L×Sin(F)+Y→E:
“E=”E◢
Goto0
7.边坡放样程序(BIANPO)
“QPDJL=”?
→Z[3]:
“QPDGD=”?
→Z[4]:
“PG=”?
→Z[5]:
2→Z[6]:
“P1=”?
→Z[8]:
“P2=”?
→Z[9]:
“P3=”?
→Z[10](没有的话就删):
Z[7]-Z[4]→Z[11]:
IfZ[11]〈0Then AbsZ[11]→Z[11]:
“T=”:
Z[11]◢Else“W=”:
Z[11]◢IfEnd
Z[11]÷Z[5]→Z[12]:
IfZ[12]〈1ThenZ[8]×Z[11]→Z[13]:
ElseZ[8]×Z[5]+Z[9]×Z[5]×(Z[12]-1)→Z[13]:
IfEnd:
AbsZ-(Z[13]+Z[6]×IntZ[12]+Z[3])→Z[14]:
“BP+C-J=”:
Z[14]◢
说明:
Z[3]=QPDJL……………… 起坡点离中桩距离
Z[4]=“QPDGD”……………起坡点设计标高
Z[5]=“PG”……………… 坡高
Z[6]=“PTK”………………平台宽度
Z[7]=“DMG”………………实测地面高度
Z[8]=“P1”……………… 一级边坡坡度
Z[9]=“P2”……………… 二级边坡坡度
Z[10]=“P3”………………三级边坡坡度(没有的话就删)
Z[14]=“BP+C-J=”………………边坡超欠挖宽度(+表超,-表欠)
8.隧道圆心放样程序(SDYX)
IFS<229000:
THEN243.997+0.0205×(S-226520)-(S-227318)^2/2/16000+1.503→Z[10]:
“NGC=”:
Z[10]◢ELSE286.385-0.023×(S-230500)-(S-230593.753)^2/2/165000+1.503→Z[10]:
“YLJ=”:
Z[10]◢IfEnd
Z[10]-Z[7]→Z[15]:
“+SG,-JD”:
Z[15]◢√(Z[15]^2+(ABS(Z)-6.8)^2)→Z[16]:
“R=”:
Z[16]◢
三、使用说明
1、规定
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右侧时,Z取正值。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
2、输入与显示说明
SZ→XY,2.XY→SZ,3.SDYX,4.BIANPO
N?
选择计算方式,输入1表示进行