线元法线路坐标正反算程序
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。
- 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等数据子程序就行。