5800计算机程序
Fx-5800计算机程序
主程序:QXJS-000
程序清单:
Lbl 4:“1QXJS-SUB0 2***”:?W:“1.SZ=>NE”:“2.NE=>SZ”:?Q:?S:W=1=>Prog“QXJS-SUB0”:W=2=> Prog”***”? (****数据库名 可输入n个,红色的可以不输~要是有多条线可以输但是只可以正算坐标~不可以坐标反算桩号~要想反算桩号还要改QXJS-SUB2 中蓝色的部分 改成相应的数据库名; Q:代表正反算~其中1为正算~2为反算,,
Lbl 0:Q=1 => Goto1:Q=2 => Goto 2:?
Lbl 1:?Z:Prog“QXJS-SUB1”:“N=”:N?:“E=”:E?:“F=”:F?DMS?: Goto 4? ,N:X坐标,E:Y坐标,F:切线方位角,, Lbl 2: “N=”:?B: “E=”:?C:B?N: C?E:Prog“QXJS-SUB2”: “S=”:S?: “Z=”:Z?: Goto 4?,S:代表里程,Z:代表偏移距离, 正算子程序:QXJS-SUB1
程序清单:
0.5(1?R-1?P)?L?D:S-O?X? 2U+?(cos(A+(X?P+DX)×180?π,0,X)?N?
2V+?(sin(A+(X?P+DX)×180?π,0,X)?E? 2A+(X?P+DX)×180?π?F?
N+Zcos(F+90) ?N:E+Zsin(F+90) ?E
Return
反算子程序:QXJS-SUB2
程序清单:
Lbl 1:0?Z:1?Q:Prog“QXJS-SUB0”: Prog“QXJS-SUB1”?
Pol(N-B+10^(-46), E-C+10^(-46)):Isin(F-90-J) ?W:S+W?S?
Abs(W)>0.0001 => Goto1?
Lbl 2: 0?Z:Prog“QXJS-SUB1”:(C-E) ?sin(F+90) ?Z
Return
数据库子程序:QXJS-SUB0
Goto1? ,同时保存多个曲线时的指针,
Lbl 1 ,为了便于解读~每增加一个线元增加一行语句~每增加一条曲线增加一个Lbl~每增加一个
增加一个文件。, If S<********:Then Cls:Stop:IfEnd? ;(判断待求桩号是否小于本要素起点~如小于就停止运行程序~可省略, IF S<157687.528:THEN 2884169.2517?U:471475.6573?V:157547.528?O:98?32′43.08″?A:140?L:10^45?P:10000?R: Return:IfEnd? IF S<157993.605:THEN 2884148.1260?U:471614.0539?V:157687.528?O:98?56′46.93″?A:306.0771?L:10000?P:10000?R: Return:IfEnd? IF S<158133.605:THEN 2884095.9086?U:471915.6318?V:157993.605?O:100?42′0.22″?A:140?L:10000?P:10^45?R: Return:IfEnd? „„„„„„„„„
If S>*********:Then Cls:Stop:IfEnd? ;(判断待求桩号是否大于本要素终点~如大于就停止运行程序~可省略,
S线元终点里程;U线元起点X坐标; V为线元起点Y坐标;O为线元起点里程;A线元起点切线方位角;L线元长度;P线元起点半径;R线元终点半径。 使用说明
(1) 以道路中线的前进方向(即里程增大的方向)区分左右;当曲线半径在左时,P、R取负值,当曲线半径在右时,P、R取正值,当曲线半径为无穷大(即直线)时,P、R以10的45次代替。
(2) 当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右侧时,Z取正值。
(3) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次方代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于
规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。