线元法线路坐标正反算程序
5800公路坐标正反算程序(线元法数据输入)
坐标正反算程序程序变量说明:D:选线。
E、F:置仪点坐X、Y。
K:待算点桩号。
B:待算点距离。
Q:待算点与线路交角(以顺时针方向)。
L:线元起点至待算点长度。
O:待算点方位角。
S:线元长度。
U:线元起点半径。
V:线元终点半径。
程序运行内容说明:开机运行程序后,1、进入主程序,选择正算或反算,1为正算,2为反算。
2、选择线路,1为第线。
2为第线。
3为第线等等。
3、如果上一次计算过的话提示是不更新数线路参数,十秒钟不操作更新,按EXE不更新。
如果上一次不是计算现在要计算的线路的话直接更新数据库(数据库更新会倒计时提示)。
3、正算。
提示入入置仪点坐标。
提示输入待算点桩号。
提示输入离中桩距离。
提示输入与线路方向夹角。
结果:坐标X、Y。
距置仪点距离和方位角。
再次提示输入待算点桩号。
反算。
提示输入实测点坐标X、Y。
结果:待算点桩号程距中桩距离。
再次提示输入实测点坐标X、Y。
程序特点:1、输入参数少,只要输入线路起点的桩号、半径、方位角、XY坐标以及各线元的桩号和半径(左+右-直线×1045)即可。
2、调用变量少,本程还有A、G、H、M、N、P、R、W字母变量未使用,可以用于其它程序而不会和本程序产生冲突。
3、数据库独立,更换工程时数据更换方便。
4、界面友好,尽量做到人人都容易上手,操作一学就会。
5、程序尽量运用5800计算器各种指令,使程序速度提高。
并能够起到帮助大家学习5800各指令工作原理,以便更好掌握编程。
工程测量坐标正反算通用程序(终极篇)
第五篇坐标正反算通用程序(终极篇)1. 坐标正算主程序(命名为ZBZS)第1行:Lbl 0:”K=”?K:”BIAN=”? Z:”α=”?B第2行:Prog “A”第3行:”X=”:N+Zcos(F+B)◢第4行:”Y=”:E+Zsin(F+B)◢第5行:”F=”:F►DMS◢第6行:Goto 0K——计算点的里程BIAN——计算点到中桩的距离(左负右正)α——取前右夹角为正2. 坐标反算桩号和偏距主程序(命名为ZBFS)第1行:”X1=”? C:”Y1=”?D:”K1=”?K第2行:Lbl 0:Prog “A”第3行:Pol(C-N,D-E):Icos(F-J)→S:K+S→K第4行:Abs(S)>0.0001=>Goto 0第5行:”K1=”:K◢第6行:”BIAN=”:Isin(J-F)→Z◢X1——取样点的X坐标Y1——取样点的Y坐标K1——输入时为计算起始点(在线路内即可),输出时为反算点的桩号Z——偏距(左负右正)注:在9860或9960中需将第3行替换为Pol(C-N,D-E): List Ans[1]→I :List Ans[2]→J:Icos(J-F)→S:K+S →K,正反算主程序所有输入赋值多加一赋值符号(→),其他所有除数据库外的程序均保持不变3. 计算坐标子程序(命名为XYF)为了简洁,本程序由数据库直接调用,上述中的正反算主程序不直接调用此程序第1行:K-A→S:(Q-P)÷L→I第2行:N+∫(cos(F+X(2P+XI)×90÷π),0,S)→N第3行:E+∫(sin(F+X(2P+XI)×90÷π),0,S)→E第4行:F+S(2P+S I)×90÷π→F第5行:F<0=>F+360→F: F>360=>F-360→F4. 数据库(命名为A)第1行:K≤175.191=>Stop(超出后显示Done)第2行:175.191→A:428513.730→N:557954.037→E:92°26′40″→F:0→P:1/240→Q:70.417→L:K≤A+L =>GoTo 1(第一缓和曲线)第3行:245.607→A: 428507.298→N:558024.092→E: 100°50′59.4″→F: 1/240→P:1/240→Q:72.915→L: K≤A+L =>Goto 1(圆曲线)第4行:318.522→A: 428482.988→N:558092.538→E: 118°15′25.2″→F: 1/240→P: 0→Q: 55.104→L: K≤A+L =>Goto 1(第二缓和曲线)第5行:373.627→A:428453.283→N:558138.912→E:124°50′4.5″→F:0→P:-1/180→Q:67.222→L:K≤A+L=>Goto 1:Stop(下一曲线的第一缓和曲线,示例为S型曲线,超出后显示Done)第6行:Lbl 1:Prog “XYF”A——曲线段起点的里程N——曲线段起点的x坐标E——曲线段起点的y坐标F——曲线段起点的坐标方位角P——曲线段起点的曲率(半径倒数,直线为0,左负右正)Q——曲线段终点的曲率(半径倒数,直线为0,左负右正)L——曲线段长度(尽量使用长度,为计算断链方便)说明:(1)正算主程序可以计算一般边桩的坐标,如要计算类似涵洞端墙的坐标需增加两个变量,具体方法参考本程序集中的第1篇辛普生公式的坐标计算通用程序(2)适用于任意线形:直线(0→P、0→Q)、圆曲线(圆半径倒数→P、圆半径倒数→Q)、缓和曲线(0或圆半径倒数→P、圆半径倒数或0→Q)、卵形曲线(接起点圆的半径倒数→P、接终点圆的半径倒数→Q),曲线左转多加一负号。
线元法路线计算程序
线元法路线计算程序线元法(LE法)是一种用于计算电力系统潮流分布的方法,它将电力系统抽象成节点和支路的网络,通过对节点和支路进行编号,可以建立节点电压和潮流分布之间的方程,进而求解电力系统中各节点的电压和潮流分布。
下面是一个用于计算线元法路线的程序。
1.定义节点和支路:首先,我们需要对电力系统的节点和支路进行定义。
节点可以是发电站、变电站或负荷节点;支路可以是输电线路或变压器。
每个节点和支路都需要有一个唯一的编号,以便在后续的计算中进行引用。
2.建立节点电压方程:根据电力系统的KCL(电流平衡方程),我们可以得到节点电压方程。
每个节点的电压方程可以表示为:V(i) = Σ{(V(j) - V(i)) / Z(ij)},其中V(i)表示第i个节点的电压,V(j)表示第j个节点的电压,Z(ij)表示第i个节点到第j个节点的支路阻抗。
3.建立支路潮流方程:根据每个支路的电流平衡方程,我们可以得到支路潮流方程。
每个支路的潮流方程可以表示为:I(ij) = (V(i) - V(j)) / Z(ij),其中I(ij)表示从第i个节点到第j个节点的支路电流,V(i)表示第i个节点的电压,V(j)表示第j个节点的电压,Z(ij)表示第i个节点到第j个节点的支路阻抗。
4.解线性方程组:将节点电压方程和支路潮流方程组合成一个线性方程组,我们可以通过求解线性方程组,得到电力系统中各节点的电压和潮流分布。
5.输出结果:根据求解的节点电压和支路潮流,我们可以将结果输出,以便进行分析和评估。
下面是一个基本的线元法路线计算程序的伪代码示例:```Input: 节点和支路的定义,节点电压和支路阻抗的初始值Output: 节点电压和支路潮流的计算结果1.建立节点电压方程和支路潮流方程-初始化节点电压和支路潮流的初始值-根据节点电压方程和支路潮流方程2.解线性方程组-使用数值计算方法求解线性方程组,得到节点电压和支路潮流的计算结果3.输出结果-将节点电压和支路潮流的计算结果输出,以便进行分析和评估```这是一个简化的线元法路线计算程序的框架,具体实现时需要根据具体的电力系统结构和算法细节进行调整和优化。
坐标反算程序
坐标正反算程序(5800)反算主程序:FS1.Prog"SJ"2.90U÷π÷R→H 第一回旋线所对应圆心角β013.90V÷π÷R→T 第二回旋线所对应圆心角β024.Rec((Z[3]+Z[4]÷cosK)÷tanK,F+90G):Z[5]+I→Z[11]:Z[6]+J→Z[12]ZH 、HZ点垂线交点坐标5.F-90G→Z[13]ZH点与ZH、HZ点垂线交点连线方位角6.Z[13]+GH→Z[14]HY点与圆心连线方位角7.Z[13]+G(K-T)→Z[15]YH点与圆心连线方位角8.Z[15]+GT→Z[16]HZ点与ZH、HZ点垂线交点连线方位角9.Lbl 0:?X:?Y10.Pol(X-Z[11],Y-Z[12])11.If GIsin(J-Z[13])<0:Then Pol(N-X,E-Y):Rec(I,F-J)12.Q-I→Z: J→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢13.Goto 0:IfEnd 第一直线14.If GIsin(J-Z[16])>0:Then Pol(X-N,Y-E):Rec(I,J-F-GK)15.I-Z[4]+D→Z: J→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢16.Goto 0:IfEnd 第二直线17.If GIsin(J-Z[13])>0:Then Pol(X-Z[9],Y-Z[10])18.If GIsin(J-Z[14])<0:ThenZ[13]→P:U→H:A→M:1→T:Z[5]→Z[17]:Z[6]→Z[18]:F→Z[19]:Goto 1:IfEnd 第一缓和曲线19.If GIsin(J-Z[15])<0:Then Abs(J-Z[14])→Z[20]:Z[20]>360?Z[20]-360→Z[20]20.B+πRZ[20]÷180→Z: G(R-I)→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢21.Goto 0:IfEnd 圆曲线22.If GIsin(J-Z[15])>0:Then Z[16]→P:V→H:D→M:-1→T:Z[7]→Z[17]:Z[8]→Z[18]:F+GK+180→Z[19]:Goto 1:IfEnd 第二缓和曲线23.Lbl 1:Pol(X-Z[11],Y-Z[12]): Abs(J-P)→J:J>180?J-360→J:JπR÷180→L L为以R为半径,以所求点-(Z[11],Z[12])连线与P的角度差计算得的弧长24.Lbl 2:L-L5÷(40R2H2)+L9÷(3456R4H4)-L13÷(599040R6H6)→O25.L3÷(6RH)-L7÷(336R3H3)+L11÷(42240R5H5)-L15÷(9676800R7H7)→P26.Rec(sqrt(O2+P2),Z[19]+TGtan-1(P÷O)):Z[17]+I→O:Z[18]+J→P27.Pol(X-O+0.00001,Y-P+0.00001):Rec(I,J-(Z[19]+90TGL2÷(πRH)))28.If AbsI>0.001:Then L+I→L:Goto 2:Else M+TL→Z:TJ→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢29.Goto 0:IfEnd子程序(曲线要素数据):SJ1.20→DimZ:?M2.If M=1:Then *→F:*→K:*→G:*→U:*→V:*→R:*→Q:*→N:*→E:Goto 1:IfEnd3.If M=2:Then *→F:*→K:*→G:*→U:*→V:*→R:*→Q:*→N:*→E:Goto 1:IfEnd4.………………5.Lbl 1:U2÷24÷R-U4÷2688÷R3+U6÷506880÷R5→Z[1]Z[1]第一回旋线内移值P16.V2÷24÷R-V4÷2688÷R3+V6÷506880÷R5→Z[2]Z[2]第二回旋线内移值P27.(R+Z[2]-(R+Z[1])cosK)÷sinK→M8.(R+Z[1]-(R+Z[2])cosK)÷sinK→P9.M+U÷2-U3÷240÷R2→Z[3]Z[3]第一切线长T110.P+V÷2-V3÷240÷R2→Z[4]Z[4]第二切线长T211.πRK÷180+(U+V)÷2→L 曲线长(Ls1+圆+Ls2)12.Q-Z[3]→A:A+U→B:A+L→D:D-V→C ZH,HY,HZ,YH里程桩号13.0→I:0→J:Rec(Z[3],F+180):N+I→Z[5]:E+J→Z[6]ZH点坐标14.Rec(Z[4],F+GK):N+I→Z[7]:E+J→Z[8]HZ点坐标15.Rec(sqrt(M2+(R+Z[1])2),F+G(K+tan-1((R+Z[2])÷P))):N+I→Z[9]:E+J→Z[10]Z[9],Z[10] 圆心坐标注:F-起始边方位角K-转角G-线路左转输-1,右转输1U-第一回旋线长V-第二回旋线长R-圆曲线半径Q-交点桩号N,E-交点坐标Z-待求点桩号S-偏距(左偏为-,右偏为+)sqrt为根号。
线元法曲线任意里程中边桩坐标正反算(CASIO_fx-5800P计算器)程序(附带高程)
线元法曲线任意里程中边桩坐标正反算(CASIO fx-5800P计算器)程序(附带高程)一、功能及原理说明1. 功能说明:本程序由一个主程序(1-MAIN)和七个子程序——正算子程序(1-SUB-ZS)、反算子程序(1-SUB-FS)等构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
本修改版程序既可实现正算全线贯通,亦可实现反算全线贯通。
本程序在CASIO FX-5800P计算器运行。
2.计算原理:利用Gauss-Legendre 5点通用公式正算线路中边桩坐标、线外测点至曲线元起点和终点的垂距的符号是否相异(即Dca×Dcb<=0=>该测点在其线元内)进行判断并利用该线元要素反算中桩里程、支距,最后计算出反算结果。
3. 程序输入计算器后,请根据统计串列List X,Y,freq[N]在程序中实际可能被使用的维数,将其统计矩阵串列改为包含相应维数的任意数据的矩阵,即在list列表中随机输入相应维数的数据,保证矩阵大小符合维数要求。
4. 本程序正算速度在1-2秒左右,反算比正算慢点,可根据需要调整精度加快速度。
本程序可建立曲线要素数据库及高程变坡点数据库,一次输入整条线路数据,计算时自动调用数据库,实现全线贯通,也可临时手动输入线元计算要素进行计算。
5. 本程序由小骆在前人的基础上改进而成,经个人测试可用。
学识浅薄,不足之处,在所难免,欢迎提出改进意见。
二、源程序1.主程序(1-MAIN)Deg:fix 320→DimZLbl 0:cls:“INPUT(0),ZX(1),YX(2)”?I (选择手动输入计算参数0,还是调用线路数据1,2)If I=0:Then Prog “1-DAT1”:IfEnd“SZ=>XY(1),XY=>SZ(2)”?N(正算,反算)If N=1 :Then Goto 1Else If N=2 :Then Goto 2Else Goto 3IfEnd:IfEndLbl 1:“KP=”?S(输入待求桩号)If S<0:Then Goto 0:IfEnd“JL(m)=”?Z (输入偏距)If Z≠0:Then “ANGLE→R(Deg)=”?M:IfEnd (输入斜交右角)If I≠0:Then Prog “1-DAT2”:IfEndS-O→W:If W<0:Then Goto 0:Else If W>H:Then cls:locate 6,2,"KP OUT"◢Goto 0:IfEnd:IfEnd(前半条针对“DAT”情况,后半条针对“INPUT”情况。
线路测量坐标正、反算计算原理及卡西欧5800程序说明
线路测量坐标正、反算计算原理及卡西欧fx-5800P程序说明一、计算原理在各测量书中对于坐标正算的相关计算式均有说明,故在此不做详解,仅对正算过程中需要用到的原理及公式做一汇总。
对于坐标反算,虽然都采用无限趋近原理进行计算,但计算方式各有差别,本文仅对其中一种自认为相对简单易懂并便于操作的原理进行详解。
1.1 坐标转换[1]如图1,设X P、Y P为P点在国家控制网坐标系中的坐标;x P、y P为P点在工程独立控制网坐标系中的坐标。
X O、Y O为工程独立坐标系原点o在国家坐标系中的坐标,Δα为两坐标系纵坐标轴的交角。
如果一条边在国家坐标系中的坐标方位角为A,而在工程独立坐标系中的坐标方位角为α,则:∆α=A−α(1-1)当由工程独立坐标系坐标换算至国家坐标系坐标时,换算公式为:X=x cos∆α−y sin∆α+X O(1-2)Y=x sin∆α+y cos∆α+Y O}当由国家坐标系坐标换算至工程独立坐标系坐标时,也可使用式(1-2),此时应将X、Y与x、y互换,且∆α=α−A。
1.2 坐标方位角关系计算1.2.1 正、反坐标方位角[2]一条直线的坐标方位角与直线的前进方向有关,沿直线前进方向的坐标方位角称为正坐标方位角,与其相反方向的坐标方位角称为反坐标方位角。
如图2,由于轴子午线之间是互相平行的,因此同一直线的正、反坐标方位角相差180°,即:α正=α反±180°(2-1)当α反<180°时,取“+”号;当α反>180°时,取“-”号。
1.2.2 坐标方位角的推算[3] 1.2.2.1 转折角为右角如图3(a),α12为已知边坐标方位角,α23为推算边的坐标方位角,β右为该两边所夹的右角,则:α23=α12±180°−β右=α21−β右 (2-2)1.2.2.2 转折角为左角如图3(b),α12为已知边坐标方位角,α23为推算边的坐标方位角,β左为该两边所夹的右角,则:α23=α12+β左±180°=α21+β左(2-3) 无论用右角还是左角推算,如遇出现负数的情形,应加上360°。
最新Qh2-8线元法任意路线与匝道曲线坐标正、反算程序
Q h2-8线元法任意路线与匝道曲线坐标正、反算程序5800计算器坐标计算程序(线元法任意路线与匝道曲线坐标正、反算程序)程序1:QH2-8"ROUTE Or RAMP QH2-8"◢书中多了个个双引号(这里说的书是产品配备的说明书)Deg:Fix 3:书中Freqon取消"NEW(0),OLD(≠0)DATA="?→CIf C≠0:Then "RECOMP(0),NO(≠)= "?→G书中0取消If G=0:Then Goto T:Else Goto J: IfEnd“CURVE NUM=”?N1→Q:5N+11→DimZ“START a(Deg)=”?→Z[5]For 1→I To N“n=”:I◢“START R(m)=”?→Z[5I-4]Z[5I-4]=0=>1X1030→Z[5I-4]“END R(m)=”?→Z[5I-3]Z[5I-3]= 0=>1X1030→Z[5I-3]“LENGTH(m)=”?→Z[5I-2]If Z[5I-4]<1X1030 Or Z[5I-3] <1X1030Then “DEFLEX L(-1),R(1)=”?→Z[5I-1]:IfEnd 注意-1是减1NEXT“[MODE][1] =>Stop!”◢Lb1 T:0→I:For 1→I To NList X[I]+Rep(Z[5I-2])→List X[I+1]List X[I+1]→ZIf Z[5I-4]=Z[5I-3]And Z[5I-4]= 1X1030Then 0→S:0→T:Z[5I-2]→DProg “SUBQ2-84”:Goto 0:IfEndIf Z[5I-4]=Z[5I-3] And Z[5I-4] <1X1030Then Prog “SUBQ2-83”:Goto 0:IfEnd√根号(Rep(Z[5I-2])÷Abs(Z[5I-4]-1-Z[5I-3]-1))→A Rep(Z[5I-2])+Ai→Z[5I-2]Prog “SUBQ2-82”Lb1 0:T→Z[5I+1]]Rep(U)→List Y[I+1]:Imp(U)→List Freq[I+1] Next“PEG-END(m)=”:List X[N+1] ◢“a-END(DMS)=”DMS◢“X-END(m)=”:List Y[N+1] ◢“Y-END(m)=”:List Freq[N+1] ◢“[MODE][4]=>Stop!”◢Lb1 J:”STA BACKXY,NEW(0),O LD(≠0)=”?→JJ≠0=>Goto 1“STAn,X(m),<0=>NO=“?→S0→Z[5N+6]:S<0=>Goto 1If Frac(S)=0 And S≤N+1Then List Y[S]+List Freq[S]i→Z[5N+6]Else “STA Y(m)=”?→T:S+Ti→Z[5N+6]:IfEndLb1 B:”BACKn,X(m),OLDa(0),<0=>a=”?→UU=0=>Goto 1If U<0:Then “a-BACK(Deg)=”?→Z[5N+8]:Goto 1:IfEnd If S=U And Frac(U)=0Then”STAn=BACKn,REPEAT!”Goto B:IfEndIf Frac(U)=0 AND U≤N+1Then List Y[U]+List Freq[U]i→Z[5N+7]Else”BACK Y(m)=”?→V:U+Vi→Z[5N+7]:IfEndLb1 S:Arg(Z[5N+7]-Z[5N+6])→JJ<0=>J+360→J:J→Z[5N+8]Lb1 1:”PEG→XY(1),XY→PEG(≠1)=”?→QQ≠1=>Goto 2Do:”+PEG(m),<0=>END=”?→ZZ<List X[1] Or Z>List X[N+1]=>BreakFor 1→I To NZ<List X[I] Or Z>List X[I+1]=>Goto NZ-List X[I]→LIf Z[5I-4]=Z[5I-3] And Z[5I-4]= 1X1030Then 0→S:0→T:L→DProg “SUBQ2-84”: Prog “SUBQ2-85”:Break:IfEnd If Z[5I-4]=Z[5I-3] And Z[5I-4]<1X1030Then Prog”SUBQ2-83”Prog “SUBQ2-85”: Break:IfEndProg “SUBQ2-82”: Prog “SUBQ2-85”:BreakLb1 N:NextLpWhile Z>0:Goto ELb1 2:”XJ(m), <0=>END=”?X:X<0=>Goto E“YJ(m)=”?Y“J in NUM,<0=>AUTO=”?→I:I>0=>Goto3Abs(X+Yi-List Y[1]-List Freq[1]i→CList X[1]+C→ZFor 1→S To NZ>List X[S] And Z<List X[S+1]=>Break:Next 9000→C:S→EFor E→I To N(List Y[I]+ListY[I+1])÷2→U(List Freq[I]+List Freq[I+1])÷2→VAbs(X+Yi-U-Vi)→DIf D<C:Then D→C:I→F:IfEndNext:F≥2=>F-1→ILb1 3:If Z[5I-4]=Z[5I-3] And Z[5I-4]=1X1030 Then tan(Z[5I])→T(X+T2List Y[I]-T(List Freq[I]-Y))÷(T2+1)→UU+(Y-(U+X)÷T)i→U:Z[5I]→TU-List Y[I]-List Freq[I]→FArg(F)→H:H<0=>H+360→H1→J:Abs(T-H)>150=>-1→JList X[I]+JAbs(F)→ZIf Z≥List X[I] And Z≤List X[I+1]:Then Goto Z Else I+1>N=>Goto Z:I+1→I:Goto 3:IfEnd:IfEnd If Z[5I-4]=Z[5I-3] And Z[5I-4]<1X1030Then List Y[I]+List Freq[I]i→SZ[5I]+90Z[5I-1]→AZ[5I-4]→R:S+R<A→VX+Yi→U:Arg(U-V)→F:Abs(U-V)→DV+R<F→UAbs(U-S)→C:sin-1(C÷2÷R)→EZ[5I]+2Z[5I-1]E→TList X[I]+∏ER÷90→ZIf Z≥List X[I] And Z≤List X[I+1]:Then Goto ZElse I+1>N=>Goto Z:I+1→I:Goto 3:IfEnd:IfEnd List Y[I+]+List Freq[I]i→UList Y[I+1]+List Freq[I+1]→V(U+V)÷2→FV-U→C:Abs(C)→S:Arg(C)→JJ<0=>J+360→J:J+90Z[5I-1]→GIf Z[5I-4]>Z[5I-3]:Then 2Z[5I-3]→RElse 2Z[5I-4]→R:IfEnd√(R2-S2÷4)→TF+T<G→OSin-1(S÷R÷2)→V:∏VR÷90→J(Rep(Z[5I-2])-J)÷J→PX+Yi-O→V:Arg(V)→JO+R<J→C:Abs(C-U)→SSin-1(S÷R÷2)→V:∏VR÷90→JList X[I]+J(1-P)→ZProg “SUBQ2-82”DoX+Yi-U→C:Abs(C)→SArg(C)→J:J<0=>J+360→JJ-T→J:J<0=>J+360→JIf J>220:Then J-270→J:-1→FElse 90-J→J:1→F:IfEndIf Z[5I-4]>Z[5I-3]Then πJ÷180÷(FZ[5I-1]L÷A2+S-1)→EElse πJ÷180÷(-FZ[5I-1]L÷A2+S-1)→E:IfEndZ+E→ZIf Z>List X[I+1]:Then I+1→I:Goto 3:IfEndProg “SUBQ2-82”Tan(T)(ImP(U)-Y)+ReP(U)-X→CLpWhile Abs(C)>0.001Fix 4:”f(Lp)=”:C◢Fix 3:Lb1 Z:Prog “SUBQ2-85”:Goto 2Lb1 E:”QH2-8=>END”程序2:SUBQ2-81If L<1X10-5:Then 0→U:0→J:Return:IfEndL-L∧(5)÷40÷A∧(4)+L∧(9)÷3456÷A∧(8)-L∧(13)÷599040÷A∧(12)+L∧(17)÷175472640÷A∧(16)→OL∧(3)÷6÷A2-L∧(7)÷336÷A∧(6)+L∧(11)÷42240÷A∧(10)-L∧(15)÷9676800÷A∧(14)+L∧(19)÷3530096640÷A∧(18)→UO+Ui→U:(L2÷(2A2))r→JReturn程序3:SUBQ2-82ImP(Z[5I-2])→AA2÷Z[5I-4]→LProg “SUBQ2-81”:U→V:J→EIf Z[5I-4]>Z[5I-3]:Then Z-List X[I]+L→L Prog “SUBQ2-81”:U-V→OElse A2÷Z[5I-3]→LList X[I+1]-Z+L→LProg “SUBQ2-81”:V-U→O:IfEdnAbs(O)→D:Arg(O)→TAbs(T-E)→S:Abs(J-E)→TProg “SUBQ2-84”Return程序4:SUBQ2-83Z[5I-4]→R:Z-List X[I]→L(L÷2÷R)r→S:2Rsin(s)→D2S→T:Prog”SUBQ2-84”Return程序5:SUBQ2-84Z[5I]+Z[5I-1]S→S:Z[5I]+Z[5I-1]T→TT<0=>T+360→T:T>360=>T-360→TList Y[I]+List Freq[I]i+D<S→UReturn程序6:SUBQ2-85T<0=>T+360→T:T>360=>T-360→TIf Q=1:Then “ai(DMS)=”:T◢“Xi(m)=”:Rep(U)◢“Yi(m)=”:Imp(U)◢Else Z<List X[I] Or Z>List X[I+1]=>”OUT OF The CURVE!”◢Arg(X+Yi-U)→H:H<0=>H+360→HAbs(X+Yi-U)→DIf H>180:Then “J in Left,NUM=”:I◢Else “J in Right,NUM=”:I◢IfEnd“p PEG(m)=”:z◢“ap(DMS)=”◢“Xp(m)=”:Rep(U)◢“YP(m)=”:Imp(U) ◢“J→p DIST(m)=”:D◢IfEndIf Abs(Z[5N+6])>0:Then U→Z[5N+7]:Prog “SUBQ2-87”:IfEndZ≠0=>Porg “SUBQ2-86”Return程序7:SUBQ2-86“ANGLE(0)=>NO,-L+R(Deg)=”?KK=0=>ReturnIf K<0:Then K+180→P:Else K→P:K-180→K:IfEnd “WL(m),0=>NO=”?MIf M>0:Then U+M<(T+K)→V“XL(m)=”:Rep(V) ◢“YL(m)=”:Imp(U) ◢If Abs(Z[5N+6])>0:Then V→Z[5N+7]:Prog “SUBQ2-87”:IfEnd:IfEdn“WR(m),0=>NO=”?WIf W>0:Then U+W<(T+P)→V“XR(m)=”:Rep(V) ◢“YR(m)=”:Imp(V) ◢If Abs(Z[5N+6])>0:Then V→Z[5N+7]:Prog “SUBQ2-87”:IfEndIfEdn:Return程序8:SUBQ2-87Z[5N+7]-Z[5N+6]→O:Arg(O)→JJ<0=>J+360→JJ-Arg(Z[5N+8])→J:J<0=>J+360→J(J+1X10-8)≥360=>J-360→J“HR(DMS)=”◢“HD(m)=”:Abs(O) ◢Return红色“O”表示为字母,仅对单个字母另作标记。
5800程序(线元法全线坐标正方算)
5800程序(线元法全线坐标正方算)本程序比较复杂.测量原理不是很明白的朋友慎用请大家经常关注程序B-H的更新2009,5,10日修改见超高子程序B-H黄色部分,另超高数据库增加在超高缓和段输入超高为公路外侧超高说明2009,5,8日正反算选择程序:ZS-FS 更改小错,详见紫色修改内容2009,4,30日更改如下:把原来的4个子程序分解成5个子程序,解决了一个大的竖曲线不能包含几个超高变化段,另外程序内也有两处改变请看红色区域.本程序经过综合考虑5800的设计缺陷,计算速度较慢故只使用高斯四节点法为计算内核.支持多条线路正反算,中桩,边桩高程计算,超高计算,超高缓和计算,加宽计算,加宽缓和计算,边坡开口线计算,挡土墙坡脚线计算,考虑了中间绿化带的影响,适用与国家高速公路至乡村四级公路计算和放样,路基路面工程可以直接得出中边桩的设计三维坐标,去掉加宽和超高影响的计算困难,边坡和坡脚线计算可直接在边坡上提取坐标带入程序,经过所有设计因素的综合,得出更改边距并显示修改偏差后的坐标.反算速度明显提高,只需要3秒.程序无错,可放心输入,另本程序可以增加隧道超欠挖计算子程序,非常方便,因为每个隧道的断面数据不一样,所以在此没有明确写出,有需要的可以联系我.本人QQ76805071,只为交友.计算器主程序:ZHU-CHENG-XULbi0:“1,ZS=FS,2ZS,3FS,4XY=>SG,5。
”?U:U=1=>Prog”ZS-FS”:进入公路三维程序U=2=>Porg”ZS”:进入坐标正算程序U=3=>Porg”FS”:进入坐标反算程序U=4=>Porg”XY =>SG”:进入大地坐标转施工坐标程序…………Goto0:说明:计算器总的主程序,进入选择各种分支计算程序。
1为公路三维计算,2为普通正算,3为普通反算,4为大地坐标转施工坐标。
选择错误重新选择。
此程序可以不用输入,只为给大家一个思路,可以把计算器所有程序集中到一个主程序内管理.公路三维部分正反算选择程序:ZS-FSDeg: //设置角度模式20→DimZ: //扩展变量“1LZ=>XY,2XY=>LZ,3BIANPO-FY”?U://正反算选择,正算选1,反算选2,坡口坡脚选3If U=1: ThenProg”ZS-XH”:IfEnd://进入正算循环主程序IfU=2:Then Prog”FS-XH”:IfEnd: //进入反算循环主程序IfU=3:ThenProg”BP-FY”:IfEnd://进入边坡开挖主程序正算循环主体程序ZS-XH“1PT-2SJ”?W://普通计算和设计边距计算选择“XL-XZ“?U://选择线路1~NIf W=1: Then //运行普通计算模式边踞自由输入Lbi0:”L=”?L:”Z=”?Z: //输入桩号和边距Porg”ZS-XH-1“:Goto0:IfEnd: //运行正算循环子程序If W=2:Then //运行设计计算模式边距按设计输入Lbi1:”L=”? L: //输入桩号Porg”0。
高斯五线元法casio fx5800计算器任意线路坐标正反算
高斯五线元法CASIO FX5800计算器任意线路中边桩正反算程序中国中铁十局集团第二工程有限公司作者:刘岩qq:5343564MAIN主程序、桩号、横距输入程序 1ZS 坐标正算程序 2FS坐标反算程序 3INPUT 实测坐标输入程序 4KEYLOCK锁键程序防止按错键用于指定专用键继续运行的程序 5PRINT 可独立测试能正常运行 6DA T-01曲线要素数据库文件(请改为自己路线的要素)7如正确输入以上程序,运行MAIN,按“1”进行坐标反算,按“2”进行坐标正算。
程序名:MAIN//:里程、横距输入程序://Cls:Norm 17→DimZ"ZH"?G//输入桩号"BZ"?B//输入边桩距离,左负右正"XJYJ"?C//输入斜交右角,如计算垂直线路的边桩则默认输入为90Cπ÷180→WProg"ZS"Prog"PRINT"程序名:ZS 坐标正算计算程序Prog"DAT-01"RadG-M→Q0.5(R-A)÷L→KAQ→IKQ2→J0.0469100770→P:H+IP+JP2→O0.2307653449→P:H+IP+JP2→T0.5→P:H+IP+JP2→D0.7692346551→P:H+IP+JP2→F0.9530899230→P:H+IP+JP2→P0.1184634425→I0.2393143352→J0.2844444444→YN+Q(ICos(O)+JCos(T)+YCos(D)+JCos(F)+ICos(P))→XE+Q(ISin(O)+JSin(T)+YSin(D)+JSin(F)+ISin(P))→YH+AQ+KQ2→FX+BCos(F+W)→XY+BSin(F+W)→Y文件名:FS(坐标反算)Prog"INPUT"0→B:M+L÷2→G:Prog"ZS"LbL S:RadU-X→I:V-Y→JIf I=0 And J=0 :Then Goto A:IfEndPol(I,J)LbL A:Rec(I,J-F)G+I→G:IF Abs(I)>0.0001 :Then Prog"ZS":Goto S:IfEnd:J→B//文件名:INPUT 实测坐标输入程序LbLSNorm 1:ClsX→UY→V"POT-N"?//U输入待求点N坐标"POT-E"? //V输入待求点E坐标Return文件名:KEYLOCK//本程序用于锁定键盘大部分按键,设定时间内无按键则反回默认健。
铁路线路任意里程坐标正反算程序使用说明
铁路线路任意里程坐标正反算程序(有需要程序的可联系陈工,QQ:285242895)1、程序开发背景在铁路线路测量中,在曲线要素已定的情况下,已知某点的里程及距中线的距离,计算该点的坐标,我们称之为线路坐标正算。
相反地,已知某点的坐标,确定该点在已定线路中的里程及距中线距离的过程,我们称之为线路坐标反算。
对于一条完整的曲线,它包括直线、第一缓和曲线、圆直线及第二缓和曲线。
而一条完整的铁路线路,通常都包含不止一条曲线,如果我们根据铁路线路多个曲线的曲线要素,构建一个线路模型,然后给出任意里程点,自动计算出对应的线路坐标,也可以给出任意坐标,计算出对应的线路里程和偏距,这将在测量和放样工作有着较为实际的应用。
比如用于逐桩坐标计算、隧道开挖及土石方开挖、线路征地界坐标计算、线路测量中线质量的检查、地质钻孔位置、桥梁桩基坐标计算等方面。
2、程序界面3、程序功能1、可以根据点的里程及距中线的距离,计算出该点的坐标,显示数据文件导入结果及计算结果,最后以csv格式文件保存计算的里程数据成果及曲线要素。
2、可以根据任意点的坐标,计算出点在已定线路中的里程及距中线距离,同时显示数据计算结果,最后以.zb格式文件保存计算的坐标成果。
4、程序特色3.1 本程序采用易于交互操作的对话框模板和MSFlexGrid控件,在MFC开发环境下利用VC语言进行编写,整个程序的计算过程及结果均可在图表中直接呈现,便于数据的检查,整个程序的界面简洁直观,功能清晰、易学易用。
3.2 结合铁路测量的实际情况,在导入曲线要素时,不需要输入曲线的五大桩要素以及曲线偏向,只需要曲线数据文件中包含曲线半径、缓长及曲线两侧各两个直线点坐标,就可以计算出其他曲线要素,进而构建完整的线路模型。
3.3 在线路正算时,里程数据既可以从文件中导入,也可以在程序界面上获取。
当采用从文件导入时,里程数据可以是乱序排列的。
当从界面获取时,程序可以自动计算出连续里程数据,3.4 在线路反算中,当我们给定任意点的坐标时,程序不仅可以计算出对应线路中的里程、距离及垂点坐标,还可以计算出此点是否在线路对应范围内以及位于曲线上的具体位置。
9860线元法隧道测量(坐标正反计算、高程)计算程序
CASIO 9860G SD线元法隧道三维(坐标正反计算、高程)计算程序1. A(此为主程序)Lbl 0:〝1.LC=>XY〝:〝2.XY=>LC〝:〝3.ZHZL=>GC〝:〝PB=>V=1,2,3〞?→V:If V=1:Then GOTO 1 :IfEnd :If V=2:Then GOTO 2 :IfEnd :If V=3:Then GOTO 3 :Else GOTO 0 :IfEnd:Lbl 3:〝ZH=H〝?→H :〝SDZF=Z〝?→Z:Prog〝ZGCZCX〝:GOTO 0:Lbl 1 :〝ZH=L〝?→L:If L>173000 And L<174661.96:Then GOTO 4 :Else GOTO 0 :IfEnd :Lbl 4:L→L:〝SDZF=Q〝?→Q:〝XLZJ,-Z+Y=Q〝:Q+0.125→Q:Prog 〝ZBQXYS〝:〝JSJD=J〝:90→J▲Prog 〝ZSZB〝:〝X=〝:X ▲ 〝Y=〝:Y▲〝FWJ=O〝:O▼DMS▲L→H:Q-0.125→Z:Prog 〝ZGCZCX〝:GOTO 0:Lbl 2:〝XO=M〝?→M:〝YO=R〝?→R:173300→L:If M>3845505.273 And M<3846506.099And R>499371.832 And R<500352.224 :Then GOTO 5:Else GOTO 2:IfEnd :Lbl 5:0→Q:0→J:Prog 〝ZBFS〝:〝LC=L〝:L ▲〝JL=Q〝:Q▲ 〝SDZJ,-Z+Y=Q〝:Q-0.125→Q ▲L→H:Q→Z:Prog 〝ZGCZCX〝:GOTO 02.正算坐标ZBZS( L-S ) / 4→H:90/π→F:HHF(1/T-1/I)/(K-S)→U:2HF/ I→D:C+4D+16 U→O:O+J→P :C+ D+ U→E:C+2D+4U→W:C+3D+9U→G:A+AbsH/3*(cosC+4(cosG+cosE)+2cosW+cosO)+Qcos P→X :B+AbsH/3*(sinC+4(sinG+sinE)+2sinW+sinO)+Qsin P→Y3.反算坐标:ZBFSLbl 0:Prog 〝ZBQXYS〝:Prog 〝ZBZS〝:O-90→Z:(R-Y)cosZ-(M-X) sinZ→P :L+P→L:If Abs P≥0.001:Then GOTO 0 :Else GOTO 1:IfEnd :Lbl 1: (R-Y)cosO-(M-X) sinO→Q4. 曲线元要素数据库:ZBQXYSIf L≥S And L<K :Then **→ S:**→ A:**→ B:**→ C:**→ I:**→ K:* *→ T IfEnd :If L≥S And L<K :Th en **→ S:**→ A:**→ B:**→ C:**→ I:**→ K:* *→ T IfEnd :If L≥S And L<K :Then **→ S:**→ A:**→ B:**→ C:**→ I:**→ K:* *→ T IfEnd :If L≥S And L<K :Then **→ S:**→ A:**→ B:**→ C:**→ I:**→ K:* *→ T IfEnd :If L≥S And L<K :Then **→ S:**→ A:**→ B:**→ C:**→ I:**→ K:* *→ T IfEnd :……………………………If L≥S And L<K :Then **→ S:**→ A:**→ B:**→ C:**→ I:**→ K:* *→ T IfEnd ┘(注:如有多个曲线元要素继续添加入数据库ZBQXYS中)5 高程计算主程序ZGCZCX (后有修改说明)Lbi1 :〝SCGC=X〝?→X:〝R=M〝:5.98→M:〝CS=N〝:1.603→N:Prog"GC SJK":C-D→F:Abs(RF÷2) →T:R AbsF÷F→R:If H≤B-T :Then 0→K:GOTO 2:IfEnd :If H>B-T And H<B+T :Then H-B+T→K :GOTO 2:IfEnd :If H≥B+T :Then 0→K:D→C:GOTO 2:IfEnd :Lbi 2 :〝XLZG=G〝:A-(B-H)C-K^2÷2R→G▲If Z≥0:Then If X>100 Then 〝YO1XGC=J〝:G+N→J▲〝YGCFSKD=J〝:Abs√(M^2-(X-(G+N))^2) →J▲〝YKDCQ,+C,-Q=J〝:J- Abs (Z+0.000) →J▲〝YSBSJGC=J〝:G+N+√(M^2-(Z+0.000)^2) →J▲〝YGCCQ,C+,Q-=J〝:X-J→J▲Else〝YO1XGC=J〝:G+N→J▲〝YSBSJGC=J〝:G+N+√(M^2-(Z+0.000)^2) →J▲ IfEnd :Else 〝ZO1XGC=J〝:G+N→J▲If X>100 :Then〝ZGCFSKD=J〝:Abs√(M^2-(X-(G+N))^2) →J▲〝ZKDCQ,+C,-Q=J〝:J- Abs (Z+0.000) →J▲〝ZSBSJGC=J〝:G+N+√(M^2-(Z+0.000)^2) →J▲〝ZGCCQ,C+,Q-=J〝:X-J→J▲Else〝ZSBSJGC=J〝:G+N+√(M^2-(Z+0.000)^2) →J ▲IfEnd :IfEnd6高程计算主程序子程序:GCSJKIf H>起点桩号 And H≤第一个竖曲线起点桩号Then 第一竖曲线交点高程→A:第一竖曲线交点桩号→B:第一竖曲线前坡度→C:第一竖曲线后坡度→D:第一竖曲线半径→R:IfEnd:If H>第一竖曲线止点桩号 And H≤第二竖曲线起点桩号Then 第一竖曲线交点高程→A:第一竖曲线交点桩号→B:第一竖曲线前坡度→C:第一竖曲线后坡度→D:第一竖曲线半径→R:IfEnd:If H>第一竖曲线止点桩号 And H≤第二竖曲线起点桩号Then 第一竖曲线交点高程→A:第一竖曲线交点桩号→B:第一竖曲线前坡度→C:第一竖曲线后坡度→D:第一竖曲线半径→R:IfEnd………………………(继续添加要素)说明:第一部分坐标部分(1、2、3、4)V=1进入坐标正算 V=2进入坐标反算V=3进入单独的高程计算当V不等于1、2、3时,则返回程序,要求再次输入V值。
曲线正反算程序(线元法)
曲线正反算程序(线元法)用到的变量:除E外其余25个程序中红色和蓝色部分可以删掉,不影响正反算主程序 QX ZFS XYFLbl 0Cls1→N"ZS(1),FS(2)"?NN=1=>Goto 1N=2=>Goto 2Goto 0Lbl 2Cls"X"?X:"Y"?Y 要反算的点的X、Y坐标"LC"?S 要反算的点所在的线元内任意里程,尽量避免用两个端点的里程If S=0:Then 若里程输0,则进入手动设置线元要素程序Cls"X0"?U 起点X坐标"Y0"?V 起点Y坐标"FWJ"?G 起点切线方位角"LC0"?O字母O,起点里程"LCN"?H:H-O→H 字母O,终点里程"R0"?P 起点曲率半径"RN"?R 终点曲率半径"Q"?Q 左右偏标志Goto 4:IfEndGoto 3:IfEndLbl 1***** 为方便做资料而加入该段条件语句,还有一段在程序末端If 1=2:ThenZ[109]→A:"(CE)X"?A: A→Z[109] 测站点X坐标If A=0:Then 若测站点X坐标输0,则进入控制点程序Prog"KZD"X→Z[109]:Y→Z[110]Goto 1:IfEndZ[110]→B:"(CE)Y"?B: B→Z[110] 测站点Y坐标IfEnd*****Cls"LC"?S 正算时的里程If S=0:Then 若里程输0,则进入手动设置线元要素程序Cls"X0"?U"Y0"?V"FWJ"?G"LC0"?O 字母O"LCN"?H:H-O→H 字母O"R0"?P"RN"?R"Q"?QCls"LC"?S 正算时的里程"PJ"?Z 正算时的偏距Goto 4:IfEnd"PJ"?Z 正算时的偏距****** 为方便计算涵洞而加入该段条件语句,还有一段在If 1=2:Then 程序末端,用蓝色标记Z→E:0→Z 先要求出偏距为0的点,因此将Z值保存在E中Z[134]→A:"+- ZHUAN JIAO"?A: A→Z[134] 待求点相对线IfEnd路前进方向的转角,顺时针为正,逆时针为负******Lbl 3 该段为线元要素数据库S≥9728.483=>Goto 9 三个条件语句,加快搜索线元的效率8863.416≤S And S﹤9728.483=>Goto 87755.868≤S And S﹤8863.416=>Goto 7If 5059.485≤S And S≤7002.287:Then 判断是否在第一段线元3539714.589→U 以下为第一段线元相应要素521939.4098→V273°59°27.9°→G5059.485→O 字母O,起点里程7002.287-5059.485→H 线元长度1045→P1045→R0→QGoto 4:IfEndIf 7002.287≤S And S≤7102.287:Then 判断是否在第二段线元*→U 以下为第二段线元相应要素*→V*→G*→O 字母O*→H*→P*→R*→QGoto 4:IfEnd……同理……Lbl 7If 7755.868≤S And S≤7810.162:Then*→U*→V*→G*→O 字母O*→H*→P*→R*→QGoto 4:IfEnd…………Lbl 8If 8863.416≤S And S≤9194.088:Then *→U*→V*→G*→O 字母O*→H*→P*→R*→QGoto 4:IfEnd…………Lbl 9If 9728.483≤S And S≤9917.694:Then *→U*→V*→G*→O 字母O*→H*→P*→R*→QGoto 4:IfEnd…………If 10411.371≤S And S≤10471.371:Then*→U*→V*→G*→O 字母O*→H*→P*→R*→QGoto 4:IfEnd 数据库部分到此结束Cls"LC CUO WU"◢未找到相应线元,显示里程错误N=1=>Goto 1 返回正算程序N=2=>Goto 2 返回反算程序Lbl 4(1÷P)→C:(P-R)÷(2HPR)→D:(180÷∏)→HN=2=>Goto 6Lbl 5Abs(S-O)→W 字母OProg"SUB1"执行正算子程序X+Zcos(F)→AY+Zsin(F)→BA→XB→YF-90→F*****If 1=2:Then 为方便计算涵洞而加入该段条件语句,还有一段A+Abs(E)cos(F+Z[134])→X 在程序前端,用蓝色标记B+Abs(E)sin(F+Z[134])→YE→Z 将最初输入的偏距返回Z,以便再次计算IfEnd 时显示上一次的值*****Cls"X=""""Y="Fix 3Locate 4,1,XLocate 4,3,Y◢Cls"F=":F▼DMS◢*****If 1=2:Then 为方便做资料加入该段条件语句,还Cls 有一段在程序前端,用红色标记Pol(X-Z[109],Y-Z[110])J<0=>J+360→J"FWJ=":J▼DMS 测站点至正算出的目标点的方位角"JL=":I◢测站点至正算出的目标点的平距IfEnd*****Norm 2Z[111]=123=>Return 判断Z[111]的值,以便其他程序调1→N:Goto 1 用时返回Lbl 6X→I:Y→JProg"SUB2"执行反算子程序O+W→S 字母OCls"LC=""""PJ="Fix 3Locate 4,1,SLocate 4,3,Z◢I→X:J→Y:2→NNorm 2:Goto 2正算子程序 SUB1用到的变量:ABCDFGHKLMQUVWXYZ,剩EIJNOPRST0.1739274226→A0.3260725774→B0.0694318442→K0.3300094782→L1-L→F:1-K→MU+W(Acos(G+QHKW(C+KWD))+Bcos(G+QHLW(C+LWD))+Bcos(G+QHFW (C+FWD))+Acos(G+QHMW(C+MWD)))→XV+W(Asin(G+QHKW(C+KWD))+Bsin(G+QHLW(C+LWD))+Bsin(G+QHFW (C+FWD))+Asin(G+QHMW(C+MWD)))→YG+QHW(C+WD)+90→F反算子程序 SUB2用到的变量:ABCDFGHIJKLMQTUVWXYZ,剩ENOPRSG-90→TAbs((Y-V)cos(T)-(X-U)sin(T))→W0→ZLbl 0Prog "SUB1"执行正算子程序X+Zcos(F)→XY+Zsin(F)→YT+QHW(C+WD)→L(J-Y)cos(L)-(I-X)sin(L)→ZIf Abs(Z)<10^(-3):thenGoto 1Else W+Z→WGoto 0:IfEndLbl 10→ZProg "SUB1"执行正算子程序X+Zcos(F)→XY+Zsin(F)→Y(J-Y)÷sin(F)→Z。
线元法(积木法)匝道坐标正反算放样程序
Cls :"1Z 2A 3B"?→I ↙(注:此处""内为线路名,有几条线路就加入几条!)Cls:"K Or –K To Shu"?K:If K≥0:Then↙I=1=>Prog"P. Z"↙I=2=>Prog"P. A"↙I=3=>Prog"P. B"↙………………………(注:此处必须与上述""内为线路名和下面的数据库子程序名对应,有几条线路就加入几条!)Mat B[1,1]→A: Mat B[1,2]→L: Mat B[1,3]→U: Mat B[1,4]→V: MatB[1,5]→W: Mat B[1,6]→P: Mat B[1,7]→Q: Mat B[1,8]→G↙Else Cls:"K0"?A:"KN"?L :"X0"?U :"Y0"?V :"F0"?W :"R0"?P :"RN"?Q:"ZX:-1,+1,0"?G:IfEnd :Cls↙1→O: Prog "XY-B"↙Cls:"1.ZS 2.FS"? →I: I=2=>Goto 3↙Cls:"XC"?H:"YC"?Z↙LbI 1 : Cls:"K×+×××"?K↙If K>L Or K<A : Then Cls: Locate 6,2,"K OUT !"◢Stop: IfEnd↙LbI 2: Cls:90→B: Cls:"RJ Or 0 To K"?B:B=0 =>Goto 1:"Z"?T↙Prog "XY-A"↙X+Tcos(M+B)→X↙Y+Tsin(M+B)→Y↙360Frac((M+360)÷360→M↙Pol(X-H,Y-Z : 360Frac((J+360)÷360→J↙2→O: Prog "XY-B":Goto 2↙LbI 3 : Cls: "X"?C:"Y"?D↙LbI 4 : If K>L Or K<A : Then Cls: Locate 6,2,"K OUT !"◢Stop:IfEnd↙Prog "XY-A"↙(D-Y)sin(M)+(C-X)cos(M)→H↙If Abs(H)>X10-3 :Then K+H→K:Goto 4:IfEnd↙(D-Y)÷cos(M)→T↙3→O: Prog "XY-B":Goto 3↙子程序1名: XY-A5→N: G(Q-1-P-1)÷Abs(L-A)→F: Abs(K-A)÷N→R: 90R÷π→S:W+(FNR+2GP-1)NS→M:1→E↙U+R÷6×(Cos (W)+Cos (M) +4∑(Cos (W+((E+0.5)FR+2GP-1)×(E+0.5)S),E,0,(N-1))+2∑(Cos (W+((EFR+2GP-1)ES,E,1,(N-1)))→X ↙V+R÷6×(sin (W)+sin (M) +4∑(sin (W+((E+0.5)FR+2GP-1)×(E+0.5)S),E,0,(N-1))+2∑(sin (W+((EFR+2GP-1)ES,E,1,(N-1)))→Y↙子程序2名: XY-BCls :Fix 3:If O=1:Then "XY RESULTS:": "K0=":"KN=":"F0=": Locate 5,2,A : Locate 5,3,L : Locate 5,4,W◢Cls :"X0=":"Y0=":"R0=":"RN=": Locate 5,1,U : Locate 5,2,V : Locate 5,3,GP : Locate 5,4,GQ◢IfEnd↙If O=2:Th en↙Cls :"K×××=":"Z=":"X=":"Y=": Locate 6,1, K : Locate 4, 2, T : Locate 4,3, X : Locate 4,4, Y◢If T=0 :Then Cls :"QF(Z)=": Locate 8,1, M:M▼DMS◢IfEnd↙Cls :"K×××=":"S=": Locate 6,1, K : Locate 4, 2, I :"F=":J:J▼DMS◢IfEnd↙If O=3:Then "X=":"Y=":"K×××=":"Z=": Locate 4,1,C: Locate 4, 2, D : Locate 6,3,K :Locate 4,4,T◢IfEnd:Cls↙线路线元数据库子程序格式:数据库采用给矩阵变量Mat B赋值的形式,使数据组织更加简洁,极大的减少了线路数据库子程序的输入量,节约了计算器空间程序说明:程序线元判断原则:(1) 以道路中线的前进方向(即里程增大的方向)区分左右;(2) 当所求点位于中线时,Z=0;当位于中线左侧时,Z取负值;当位于中线右侧时,Z取正值。
4线路正反算程序使用说明
线路测量通用程序常用的变量名称参照全站仪上使用。
里程变量名称用x:K+表示。
边距变量名称用y:C±表示。
Hr表示水平右角,Hd表示水平距离,Vd表示高差,Ht表示镜高,N表示纵坐标,E表示横坐标,Z 表示高程。
变量名带数字的特定点使用,变量名带p的平常计算使用。
程序中所有角度输入输出均采用小数点法,如:125°08′05.5″输入输出均为125.08055。
一线路反算程序(工程测量,坐标反算等)线路测量通用程序主界面按2键进入(工程测量,坐标反算等)。
见下图:从图中可以看到,屏幕可分为左右两部分,左部显示的是需要输入的水平右角变量名称(问号左侧)﹑名称上部显示水平右角当前值,其他显示的是此时可以执行的功能。
输入等号键执行直接输入坐标功能。
输入竖号键执行设置局部坐标系功能。
输入乘号键执行数字编号把坐标存到标准点测设点数据库功能。
输入加号键执行把测量成果存到测量数据库功能。
输入幂号键执行返回主界面功能。
变量名和问号之间的黑三角表示可以按执行键ENTER使用变量当前值功能。
右部显示的是上一轮高程计算结果及其他功能。
第一行显示的是计算的设计高程。
第二行显示的是测量的实地高程。
第三行显示的是设计高程与实地高程的差值。
第四行显示横坡及超高计算时的坡度值。
第五行显示的是测量数据库中存储的数据组数。
程序执行边坡计算时,屏幕显示见下图:右侧第四行显示边坡截面坐标原点高程。
其他同上述。
程序执行隧道超欠挖计算时,屏幕显示见下图:右侧第一行显示隧道断面纵坐标,第二行显示隧道断面横坐标,第三行显示超欠挖数值,负为超挖,正为欠挖。
第四行显示隧道截面坐标原点高程。
其他同上述。
上次输入高差的值为零时,屏幕显示见下图:当输入高差的值为零时,程序不执行高程计算,所以屏幕右侧上面三行显示的数值均为零。
设置仪器程序没有设置视线高时,程序自动赋值高差值为零,程序不执行高程的计算。
在测量模式或坐标换算模式下,不进行设计高计算,屏幕显示见下图:屏幕右侧第二行显示测量的实地高程。
CASIO fx-5800P线元法坐标正反算程序
CASIO fx-5800P线元法坐标正反算程序说明:本程序适用于卡西欧计算器 CASIO fx-5800P,可对全线贯通坐标正反算、竖曲线高程计算。
该程序可计算任意线型,包含(直线、圆曲线、缓和曲线、卵形曲线)等,还可以能通过坐标反推该点里程和距中线距离,适用测量员专用。
主程序名:ABCYT第1步Deg:Fix 3:10→DimZ第2步Lbl 3:"1.DK=>XY":"2.XY=>DK":"Q"?W:"DK"?S:Prog"ABCYTSJ":If P=0:Then 10^(45)→P:IfEnd:If R=0:Then 10^(45)→R:IfEnd第3步1÷P→C:(P-R)÷(2HPR)→D:180÷π→E:If W=1:Then Goto 1:Else Goto2:IfEnd第4步Lbl 1:"W"?Z:"α"?N:Abs(S-O)→W:Prog "ABCYTZ"第5步Cls:"F=":Locate 3,1,F°:"X=":Locate 3,2,X:"Y=":Locate 3,3,Y◢第6步Prog"ABCYTSQX":Cls:"H=":Locate 3,1,H◢第7步1→W:90→N:Goto 3第8步Lbl 2:?X:?Y:X→I:Y→J:Prog"ABCYTF":O+W→S第9步Cls:"K=":Locate 3,1,S:"S=":Locate 3,2,Z◢第10步2→W:Goto 3正算子程序名:ABCYTZ第1步0.1739274226→A:0.3260725774→B:0.0694318442→K:0.3300094782→L第2步1-L→F:1-K→M第3步U+W×(A×cos(G+Q×E×K×W×(C+K×W×D))+B×cos(G+Q×E×L×W×(C+L×W×D))+B×cos(G+Q×E×F×W×(C+F×W×D))+A×cos(G+Q×E×M×W×(C+M×W×D)))→X第4步V+W×(A×sin(G+Q×E×K×W×(C+K×W×D))+B×sin(G+Q×E×L×W×(C+L×W×D))+B×sin(G+Q×E×F×W×(C+F×W×D))+A×sin(G+Q×E×M×W×(C+M×W×D)))→Y第5步G+Q×E×W×(C+W×D)→F:F+ N→Z[1]第6步X+Z×cos(Z[1])→X:Y+Z×sin(Z[1])→Y反算子程序名:ABCYTF第1步Lbl 2:(S-O)→W:0→Z:Prog "ABCYTZ":F-90→Z[9]:(J-Y)×cos(Z[9])-(I-X)×sin(Z[9])→Z[10]第2步If Abs(Z[10])>0.001:Then S+Z[10]→S:Goto 2:Else Goto 1:IfEnd第3步Lbl 1:(Y-J)÷sin(Z[9])→Z第4步Pol(X-I,Y-J):If Z<0:Then -1×I→Z:Else 1×I→Z:IfEnd数据库名:ABCYTSJ第1步Goto1第2步Lbl 1:If S<7586.707 Or S>13346.96:Then Cls:Locate 2,2,"PQX":Locate 4,3,"CHAOXIAN":Locate 10,4,"→Stop"◢第3步Stop:IfEnd第4步Lbl 1:IF S<7946.707:Then 98°56′56″→G:7586.707→o:3378605.445→U:453648.704→V:0→P:4500→R:360→H:1→Q:Return:IfEnd第5步Lbl 1:IF S<11766.03:Then 101°14′26″→G:7946.707→o:3378544.714→U:454003.518→V:4500→P:4500→R:3819.323→H:1→Q:Return:IfEnd第6步Lbl 1:IF S<12126.03:Then 149°52′11″→G:11766.03→o:3376389.890→U:457018.324→V:4500→P:0→R:360→H:1→Q:Return:IfEnd第7步Lbl 1:IF S<13346.96:Then 152°09′41.68″→G:12126.03→o:3376073.846→U:457190.654→V:0→P:0→R:1220.93→H:0→Q:Return:IfEnd第n步……………………………………………………数据输入说明:第1步Goto1第2步Lbl 1:If S<本条线路起点里程S>本条线路止点里程Cls:Locate 2,2,"PQX":Locate 4,3,"CHAOXIAN":Locate 10,4,"→Stop"◢第3步Stop:IfEnd第4步Lbl 1:If S<本线元止点里程:Then线元起点切线方位角→G:线元起点桩号→O:线元起点坐标X→U:线元起点坐标Y→V:线元起点半径(直线为0、曲线为半径)→P:线元止点半径(直线为0、曲线为半径)→R:线元长度→H:线元转向(左转为-1、右转为1、直线为0)→Q:Return:IfEnd第n步Lbl 1:每增加一行则为增加一个线元要素。
线元法线路坐标正反算程序
线元法线路坐标正反算程序经苦心钻研,奋战多日,终于编写出了代码短,速度快,精度高,功能全的线路坐标正反算程序,欢迎试用并提出宝贵意见。
功能简介及特点:1、选用高斯-勒让德公式作计算内核,保证精度,模块化设计,便于扩充功能。
2、线元数据可自动从数据库调用,也可手工输入。
3、可管理多条线路,如里程不在线路或线元范围,将警告里程偏大、偏小。
4、边桩计算设计为导线式递推方式,可用于由一个中桩推出结构物所有角点坐标。
5、反算实现了智能化操作,只需输入线路号(或手工输线元资料)、坐标,不需近似里程,即可自动从起点向后开始试算出里程、位置,如对算出里程、位置表示怀疑,还可以让计算器从终点起再向前试算下一个可能的位置(匝道、回头曲线同一坐标可能会有一个以上结果)。
第三次及以后试算才要求输入近似里程。
6、程序代码规范简洁,便于阅读、理解。
完整程序清单:ZFS %正反算主程序B=.1739274226:C=.5-B:Lbl 1:U"0 ZS 1 FS"=0=>Prog "ZS":≠>U=1=>Prog"FS":≠>Goto 1ZS %正算子程序{K}:Prog"ZZ":I=0:{I}:I"L"≠0=>"Prog"WY":≠>Prog"ZB"FS %反算子程序{KVW}:V"XC"W"YC":Lbl 2:Prog "ZZ":I=V-S:J=W-T:Pol(I,J: J=J-F:K=K+Rec(I,J:AbsI<1m=>Prog"WZ":≠>Goto 2ΔM=0:{M}:M"0 NEXT"=0=>U=U+1:Goto 2:≠>U=1ZZ %高斯法中桩子程序(4节点)Prog"XL":M=K-L:O=(P-R)÷2PQR:D=.0694318442:E=.3300094782:F=1:G=1-E:H=1-D:I=5:Lbl 1:C[I]=A+MrC[I](1÷P+OMC[I]:Dsz I:Goto 1:S=X+M(BcosD+CcosE+CcosG+BcosH:T=Y+M(BsinD+CsinE+CsinG+BsinHWY %外移点计算子程序Lbl 1:J=90:{J}:J=F+J"<":F=J:S=S+Rec(I,J:T=T+J: Prog"ZB":I=0:{I}:I"L"≠0=>Goto 1WZ %位置显示子程序"KJ":K:Pause 1:J◢ZB %坐标显示子程序"XY":S:Pause 1:T◢YC %异常处理子程序U=1=>K=L:U=2ΔU=3=>K=M:U=4ΔU=5=>{K}:U=4ΔK"<K>M=>">>!":Z=1DL %断链处理子程序"DL":K=L:I>0=>K=L+Q-------------------------以上为程序运算部分,以下为数据库部分-------------------------------XL %线路数据库选择子程序Lbl 1:Z=0:N"0 SD"=0=>Prog"0"△N=1=>Prog"1"△N=2=>Prog"2"△...有几条线路仿上行格式输几行Z=1=>{NLXYOPQRK}:Goto 10 %手工输入子程序L"K0"XYAQ"LS"P"R0"R"RN":M=L+Q:Prog"YC"1 %线路一数据库子程序①Lbl B:L=线路起点里程:M=线路终点里程:Prog"YC":Z=1=>Goto EΔ②Q=线元长:P=起点半径:R=终点半径:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:Goto EΔL=L+Q:③......④Q=短链长:KProg "DL":Goto BΔL=L+Q:⑤Q=线元长:P=起点半径:R=终点半径:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:Goto EΔL=L+Q:⑥......⑦Q=线元长:P=起点半径:R=终点半径:X=起点X坐标:Y=起点Y 坐标:A=起点方位角:Lbl E2 %线路二数据库子程序输入要求和线路一相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
经苦心钻研,奋战多日,终于编写出了代码短,速度快,精度高,功能全的线路坐标正反算程序,欢迎试用并提出宝贵意见。
功能简介及特点:1、选用高斯-勒让德公式作计算内核,保证精度,模块化设计,便于扩充功能。
2、线元数据可自动从数据库调用,也可手工输入。
3、可管理多条线路,如里程不在线路或线元范围,将警告里程偏大、偏小。
4、边桩计算设计为导线式递推方式,可用于由一个中桩推出结构物所有角点坐标。
5、反算实现了智能化操作,只需输入线路号(或手工输线元资料)、坐标,不需近似里程,即可自动从起点向后开始试算出里程、位置,如对算出里程、位置表示怀疑,还可以让计算器从终点起再向前试算下一个可能的位置(匝道、回头曲线同一坐标可能会有一个以上结果)。
第三次及以后试算才要求输入近似里程。
6、程序代码规范简洁,便于阅读、理解。
完整程序清单:ZFS %正反算主程序B=.1739274226:C=.5-B:Lbl 1:U"0 ZS 1 FS"=0=>Prog "ZS":≠>U=1=>Prog"FS":≠>Goto 1ZS %正算子程序{K}:Prog"ZZ":I=0:{I}:I"L"≠0=>"Prog"WY":≠>Prog"ZB"FS %反算子程序{KVW}:V"XC"W"YC":Lbl 2:Prog "ZZ":I=V-S:J=W-T:Pol(I,J: J=J-F:K=K+Rec(I,J:AbsI<1m=>Prog"WZ":≠>Goto 2ΔM=0:{M}:M"0 NEXT"=0=>U=U+1:Goto 2:≠>U=1ZZ %高斯法中桩子程序(4节点)Prog"XL":M=K-L:O=(P-R)÷2PQR:D=.0694318442:E=.3300094782:F=1:G=1-E:H=1-D:I=5:Lbl 1:C[I]=A+MrC[I](1÷P+OMC[I]:Dsz I:Goto 1:S=X+M(BcosD+CcosE+CcosG+BcosH:T=Y+M(BsinD+CsinE+CsinG+BsinHWY %外移点计算子程序Lbl 1:J=90:{J}:J=F+J"<":F=J:S=S+Rec(I,J:T=T+J: Prog"ZB":I=0:{I}:I"L"≠0=>Goto 1WZ %位置显示子程序"KJ":K:Pause 1:J◢ZB %坐标显示子程序"XY":S:Pause 1:T◢YC %异常处理子程序U=1=>K=L:U=2ΔU=3=>K=M:U=4ΔU=5=>{K}:U=4ΔK<L=>"<<!":Z=1ΔK>M=>">>!":Z=1DL %断链处理子程序"DL":K=L:I>0=>K=L+Q-------------------------以上为程序运算部分,以下为数据库部分-------------------------------XL %线路数据库选择子程序Lbl 1:Z=0:N"0 SD"=0=>Prog"0"△N=1=>Prog"1"△N=2=>Prog"2"△...有几条线路仿上行格式输几行Z=1=>{NLXYOPQRK}:Goto 10 %手工输入子程序L"K0"XYAQ"LS"P"R0"R"RN":M=L+Q:Prog"YC"1 %线路一数据库子程序①Lbl B:L=线路起点里程:M=线路终点里程:Prog"YC":Z=1=>Goto EΔ②Q=线元长:P=起点半径:R=终点半径:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:Goto EΔL=L+Q:③......④Q=短链长:K<L+Q=>Prog "DL":Goto BΔL=L+Q:⑤Q=线元长:P=起点半径:R=终点半径:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:Goto EΔL=L+Q:⑥......⑦Q=线元长:P=起点半径:R=终点半径:X=起点X坐标:Y=起点Y坐标:A=起点方位角:Lbl E2 %线路二数据库子程序输入要求和线路一相同。
数据输入要求:①是线路总体资料格式②⑤是标准线元资料格式,按里程顺序依次排④断链资料格式⑦最后一个线元资料格式注:1、加下划线的行是程序名及功能说明2、ZZ程序第三行的r是计算器的弧度转度标志,相当于*180/π。
3、请注意区别数字0及字母O每个子程序第一行为程序名和功能简介用%隔开,本程序语句在行未统一用冒号分隔,不须再加换行符,除≠>前外所有冒号也可用换行代替。
程序未尾的Δ(一个程序中Δ个数本应和=>的个数相等)、:前的)]、小数点前的0可省略,不影响程序运行结果,省略乘号的连乘运算优先级高于除法。
==================================================== =====================================程序使用说明:数据库准备将各条线路的“线元要素”依次输入各数据库“1”、“2”,注意其中曲线半径右偏为正,直线请输为10^10。
线路起点里程即第一个线元的起点里程,线路终点里程即最后一个线元的终点里程。
如线元起点和上一线元终点半径相同,P=起点里程可简写成P=R,如果线元终点半径和起点半径相同R=终点里程可简写R=P。
如果线元起点半径等于前一线元终点半径,同时本线元是直线或圆,R=P还可省略!!!新增语句解决断链并考虑反算中间结果在断链处时的处理方式。
短链按示例输,长链要把长链后里程前加一位1,转化成短链,如4500.123要输成14500.123。
断链长要按调整后的里程推算,运行时长链后里程要输成类似14500.123。
运行程序:ZFS为主程序运行后首先提示:0 ZS 1 FS?选0正算,选1反算正算计算流程①0 SD?输入线路号,手工输入线元输0,然后依提示输入线元数据;K0?起点里程X?Y?A?起点坐标、方位角LS?线元长R0?RN?起终点半径(右转为正)②K?输入K中桩里程;里程在断链显示"DL"到②③L?输入相对上点偏距;按EXE输入0则输出中桩坐标到②,否则<?输入相对线路前进方向右角,输出坐标;④再次L?输入相对上点偏距;<?输入相对上两点连线前进方向右角,输出坐标到④。
任何时候L?按EXE输入0到②。
反算计算流程①XC?YC?输入测点坐标;0 SD?(同正算);②从起点推算输出里程、外移距;③提示0 NEXT?认为可能还有下个可能选0到④,选其它值到①,除不再提问线路号外其它相同。
④从终点推算输出里程、外移距;⑤提示0 NEXT?认为可能还有下个可能选0到⑥,选其它值到①,除不再提问线路号外其它相同。
⑥K?输入近似里程,输出里程、外移距到⑤;如不输绿色部分代码,执行下列流程①X?Y?输入测点坐标;0 SD?(同正算);②K?输入近似里程,输出里程、外移距到①,除不再提问线路号外其它相同。
在运行过程时,无论正反算,任何时候发生里程超出线路范围都会有警告,偏小会提示“<<!”偏大会提示“>>!”,返回到0SD?重新选择线路、并要求重输里程,此时应该核对数据重算读者可利用上述警告功能在想转换线路时,有意输入线路外里程或坐标。
当然按AC跳出再按光标左、右键重新进入程序也可转换线路,但多了正反算选项。
==================================================== ======================================关于本程序计算坐标的精度为了对坐标计算结果精度心中有数,本人通过数据试算,对本程序的坐标计算精度进行了系统分析,并用回归分析得出了线元长和线元平均半径的关系,得出了一个通用的表达式。
直线精度永远是0不再用公式表示。
只对圆曲线和缓和曲线进行分析。
式中R-平均半径,可用2/|1/RA+1/RB|表示,RA、RB分别是起点、测点半径,LS是起点到测点距离Y-圆曲线标志,圆曲线为1,为0精度要求为恰好1mm时:圆曲线LS=5×R0.9缓和曲线LS=2×R0.85如LS不为上述长度则每延长1.565倍将减少一位精度,反之每缩短1.565倍将增加一位精度。
如计算出某半径精度为1mm时LS=100,若实际长156米则精度为1cm。
实际长为64米则精度为0.1mm。
以下为相关问题的提问与解答WY %外移点计算子程序Lbl 1:J=90:{J}:J=F+J"<":F=J:A=A+Rec(I,J:B=B+J: Prog"ZB":I=0:{I}:I"L"≠0=>Goto 1FS %反算子程序Lbl 1:{KVW}:V"X"W"Y":U=2:Lbl 2:Prog "ZZ":I=V-A:J=W-B:Pol(I,J:J=J-F:I=Rec(I,J:K=K+I:AbsI>1m=>Goto 2△"KJ":K:Pause1:J◢Goto 1以上两个子程序中:Rec与Pol后面的括号怎么只中有半个?另外半个在哪里呢?请楼主给予明示.谢谢.另外,该程序可计算不等缓曲(LS1不等于LS2)曲线中边桩坐标吗?线路起点坐标有什么规定,是否一定得是(ZH点或ZY点)?如是前后两曲线相切只有一个公切点(GQ点),而无(ZH或ZY点时),此种不等缓曲曲线起点坐标怎么确定?起点切线方位角怎么确定?这种情况的曲线中边桩坐标如何用您的程序运行?谢谢指导!!本程序是以线元为单位计算的,无所谓等长和不等长,只要把各线路线元数据依次输入1 2...N等数据子程序就行。