第一篇:第十任意斜交角度坐标反算通用程序
第十五篇任意斜交角度坐标反算通用程序
作者:柠檬树QQ: 249910569
1.任意角度坐标反算桩号和斜距主程序(命名为ZBFS2)
第1行:”YOUJIAO=”? B:B=0=>90→B
第2行:Lbl 1:”X1=”? C:”Y1=”?D: ”K1=”?K
第3行:Lbl0:Prog “A”
第4行:Pol(C-N,D-E):I(cos(J-F)-sin(J-F)tan(90-B))→S:K+S→K
第5行:Abs(S)>0.0001=>Goto 0
第6行:”K1=”:K◢
第7行:”BIAN=”:Isin(J-F+90-B)→Z◢
第8行:”α=”:B◢
第9行:Goto 1
YOUJIAO——斜交角度,取前右夹角
X1——取样点的X坐标
Y1——取样点的Y坐标
K1——输入时为计算起始点(在线路内即可),输出时为反算点的桩号
Z——偏距或斜距(左负右正)
注:在9860或9960中需将第4行替换为Pol(C-N,D-E): List Ans[1]→I :List Ans[2]→J:
I(cos(J-F)-sin(J-F)tan(90-B))→S:K+S→K,反算主程序所有输入赋值多加一赋值符号(→),其他所有除数据库外的程序均保持不变
2.计算坐标子程序(命名为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+SI)×90÷π→F
第5行:F<0=>F+360→F: F>360=>F-360→F
3.数据库(命名为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行:Lbl1:Prog “XYF”
A——曲线段起点的里程
N——曲线段起点的x坐标
E——曲线段起点的y坐标
F——曲线段起点的坐标方位角
P——曲线段起点的曲率(半径倒数,直线为0,左负右正)
Q——曲线段终点的曲率(半径倒数,直线为0,左负右正)
L——曲线段长度(尽量使用长度,为计算断链方便)
说明:
(1)本篇程序基于本人创作的程序集中的第5篇改编,第5篇中反算主程序的第3、6行分别改写为本篇中的第4、7行,原第5篇部分变量符号已做调整。
(2)坐标计算子程序为通用程序,可自编程序随时调用,数据库可更改适合可变项目的测量数据。
(3)适用于任意线形:直线(0→P、0→Q)、圆曲线(圆半径倒数→P、圆半径倒数→Q)、缓和曲线(0或圆半径倒数→P、圆半径倒数或0→Q)、卵形曲线(接起点圆的半径倒数→P、接终点圆的半径倒数→Q),曲线左转多加一负号。
(4)程序规定,左偏曲线曲率输入负值,右偏曲线曲率输入正值,直线上点曲率输入0。
(5)本程序精度较高,不受曲线半径大小影响,即使极小半径的螺旋曲线等误差仅为万分之一(0.1mm),可以忽略。
(6)反算桩号偏差为1mm
(7)本程序适用于单个线元转角小于180的情况(大于180度有两个结果,只能计算一个)。
第二篇:5800万能坐标正反算程序(超短型)
卡西欧5800任意线元坐标正反算程序(包括直线,圆曲线,缓和曲线正算及反算)
“A=?,NEW=0,OLD≠0”?A: A≠0=>Goto S:“O=”?O:“U=”?U:“V=”?V:“G=”?G:“H=”?H:“P=”?P:“R=”?R:“Q=”?Q: Lbl S :Fix 3:7→DimZ:1÷P→C:(P-R)÷(2HPR)→D:180÷∏→E:“1=>ZS,2=>FS”?N:If N=1:Then“Z-H=”?S:“-L,+R=”?Z: S-O→W:If W<0 or W>H:Then“=>ERROR!”◢ Goto S:IfEnd:Else “X=”?X:“Y=”?Y:X→I:Y→J:G-90→T:Abs((Y-V)cos(T)-(X-U)sin(T)→W:0→Z:IfEnd:Lbl A:0.1739274226→A:0.3260725774→B:0.0694318442→K:0.3300094782→L:1-L→F:1-K→M:
U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+QEMW(C+MWD)))→Z[5]:
V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD)))→Z[6]:G+QEW(C+WD)+90→F:Z[5]+Zcos(F)→Z[5]:Z[6]+Zsin(F)→Z[6]: T+QEW(C+WD)→L:(J-Z[6])cos(L)-(I-Z[5])sin(L)→Z:If N=1:Then“FWJ=”:F-90◣DMS◢“X=”:Z[5]→X◢“Y=”:Z[6]→Y◢Goto S:IfEnd:If Abs(Z)<0.00001:Then(J-Z[6])÷sin(F)→Z:O+W→S:Else W+Z→W:Goto A:IfEnd:If S
说明:A:等于0为输入新的线元参数数据,反之进入坐标正反算。
O:线元起点桩号。U:线元起点X坐标。V:线元起点Y坐标。
G:线元起点切线方位角。H:线元长度。
P: 线元起点半径。R: 线元终点半径。
Q:偏转系数(左偏输入-1,右偏输入1)。
45注:半径为0时,输入10×10。直线偏转系数输入0。
本程序占用764字节。输入之前与输入之后分别查看剩余内存,两者之差不等于764,说明输入有误!