cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 5560|回复: 6

[fx-CG10/20/50] 求cg20计算程序修改 意见

[复制链接]
发表于 2011-6-1 22:29:00 | 显示全部楼层 |阅读模式
本程序是5800FX-CG20计算程序
希望广大测友
勇于提出修改意见
错误或者转换错误修改征集:
修改格式
保留原程序修改的程序加上[
]

FX-CG20(交点法与交点法)融合计算程序
1主程序名:ZBZFS(功能:进入计算主程序)◢, ←┘,
►DMS
◢)

File1
70→Dim List1
1.JD ZFS  2. ZD ZFS? → I: I→List1 [61]: 1.CS JS 2. JS? → I←┘
If I=1: Then Goto1: Else Goto2:IfEnd
←┘
LbI 1 :If List1[61]=1: Then Prog
JDYS:Else  ClrText:K0=? →A:KN=? →L :X0=? →U :Y0=? →V :F0=? →W :R0=? →P :RN=? →Q:ZX=:-1,+1,0? →G:IfEnd←┘
LbI 2 :Prog
JS


2子程序名:JS(功能:选择正算或反算模式)


ClrText:XC=? →H:YC=? →Z←┘
ClrText:1.ZS  2.FS? → I: I=2=>Goto 3←┘
LbI 1 :
ClrText: If List1[61]=1: ThenJD ZS KX+XXX? →K :Prog4: Else ZD ZS KX+XXX? →K :IfEnd←┘
LbI  2:
ClrText:90→B: ClrText: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 : ClrText: If List1[61]=1: Then
JD FS KN+?K:X=?C:Y=?D:Prog4:Else ClrText: ZD FS:X=?C:Y=?D:IfEnd←┘
LbI 4 :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←┘


3子程序名: XY-A(功能:坐标计算程序)


5→N: G(Q-1-P-1)÷AbsL-A→F: AbsK-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←┘
4
子程序名: XY-B(功能:显示正算或反算结果)



If O=2:ThenClrText :K×××=:Z=:X=:Y=: Locate 6,1, K : Locate 4, 2, T : Locate 4,3, X : Locate 4,4, Y
If T=0 :Then ClrText :
QF(Z)=: Locate 8,1, M:M►DMS
IfEnd
←┘
ClrText :
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: ClrText
←┘


5子程序名:4(功能:将交点参数转为线元计算参数)


LbI 1: If List1[48]0 :Then -1→List1[62] : Else:1→List1[62]:IfEnd
Lb
I2:IfK≥List1[57]:ThenList1[57]→A  :List[1]→L  :List1[23]→U  :List1[24]→V : List1[31]→W : 10^45→P   :10^45→Q : 0→G:IfEnd
←┘

LbI 3:If K≥
List1 [1]:Then List1 [1]→A : List1 [2]→L : List1 [19]→U : List1 [20]→V  : List1 [29]→W : 10^45→P   : List1 [46]→Q : List1 [62]→G: IfEnd←┘
LbI 4:If K≥
List1[2]:Then List1 [2]→A: List1 [4]→L  : List1 [25]→U : List1 [26]→V  : List1 [32]→W : List1 [46]→P  : List1 [46]→Q : List1 [62]→G: IfEnd←┘
LbI 5:If K≥
List1 [4]:Then List1 [4]→A : List1 [5]→L : List1 [27]→U  : List1 [28]→V : List1 [33]→W : List1 [46]→P  : 10^45→Q : List1 [62]→G: IfEnd←┘
LbI 6:If K≥List1 [5]:Then List1 [5]→A : List1 [5]+1000→L  : List1 [21]→U : List1 [22]→V : List1 [30]→W  :10^45→P :  10^45→Q : 0→G : IfEnd←┘


6子程序名:JDYS(功能:输入交点要素、显示交点要素及主点坐标)

ClrText : BP=?H:H→List1 [57]:"KJD=? →K:K→List1 [41] :XJD=? →X :X→List1 [42]:YJD=? →Y:Y →List1 [43]:LS1=? →B:B→List1 [44] :LS2=? →C:C →List1 [45]: R=? →R:R →List1 [46]:"(ZHFWJ°=? →M:M→List1 [47] : αZ-,Y+°=?→O:O→List1 [48] : List1 [47]+ List1 [48]→List1 [49]: Prog 1:Prog 2←┘
ClrText :T1=:T2=:L=:LY=: Locate 4,1, List1 [50] : Locate 4,2, List1 [51]: Locate 4,3, List1 [52] : Locate 4,4, List1 [53]
Cls :
E=: Locate 7,1, List1 [54] ←┘
ClrText :KQD=: X=: Y=: FWJ=Locate 7,1, List1 [57] :Locate 7,2, List1 [23] :Locate 7,3, List1 [24] :Locate 7,4, List1 [31] ←┘
ClrText :
KZH=: X=: Y=: FWJ=:Locate 7,1, List1 [1] : Locate 7,2, List1 [19] :Locate 7,3, List1 [20] :Locate 7,4, List1 [29]←┘
ClrText :
KHY=: X=: Y=: FWJ=: Locate 7,1, List1 [2] : Locate 7,2, List1 [25] :Locate 7,3, List1 [26] :Locate 7,4, List1 [32]←┘
ClrText :
KQZ=: Locate 7,1, List1 [3]←┘
ClrText :
KYH=: X=: Y=: FWJ=: Locate 7,1, List1 [4] : Locate 7,2, List1 [27] :Locate 7,3, List1 [28] :Locate 7,4, List1 [33]←┘
ClrText :
KHZ=: X=: Y=: FWJ=: Locate 7,1, List1 [5] : Locate 7,2, List1 [21] :Locate 7,3, List1 [22] :Locate 7,4, List1 [30]←┘


7子程序名: 1(功能:计算交点要素)

If List1 [48]0 :Then  -1→List1 [55] : Else 1→List1 [55] : IfEnd : List1 [55]* List1 [48]→List1 [56] ←┘
List1 [44] 2 ÷24÷List1 [46]- List1 [44]^(4)÷2688÷List1 [46] ^(3) →List1 [6] ←┘
List1 [45] 2 ÷24÷List1 [46]- List1 [45]^(4)÷2688÷List1 [46] ^(3) →List1 [7] ←┘
List1 [44]÷2- List1 [44]^(3)÷240÷List1 [46]2 →List1 [8] ←┘
List1 [45]÷2- List1 [45]^(3)÷240÷List1 [46]2 →List1 [9] ←┘
List1 [8]+(( List1 [46]+ List1 [7]-( List1 [46]+ List1 [6])cos(List1 [56]))÷sin(List1 [56]))→List1 [50] ←┘
List1 [9]+(( List1 [46]+ List1 [6]-( List1 [46]+ List1 [7])cos(List1 [56]))÷sin(List1 [56]))→List1 [51] ←┘
List1 [46]* List1 [56]π÷180+( List1 [44]+ List1 [45]) ÷2→List1 [52] ←┘
List1 [46]* List1 [56]π÷180-( List1 [44]+ List1 [45]) ÷2→List1 [53] ←┘
(
List1 [46]+( List1 [6]+ List1 [7])÷2)÷cos(List1 [56]÷2)- List1 [46]→List1 [54] ←┘
List1 [41]- List1 [50]→List1 [1] ←┘
List1 [1]+ List1 [44]→List1 [2] ←┘
List1 [2]+ List1 [53]÷2→List1 [3]
←┘

List1 [1]+ List1 [52]- List1 [45]→List1 [4] ←┘
List1 [4]+ List1 [45]→List1 [5] ←┘


8子程序名: 2(功能:计算主点坐标及切线方位角)


List1 [42]- List1 [50]cos(List1 [47])→List1 [19]: (直缓坐标)
List1 [43]- List1 [50]sin(List1 [47])→List1 [20]
←┘

List1 [47]→Z : 360Frac((Z+360)÷360→List1 [29] (方位角)
List1 [42]+ List1 [51]cos(List1 [49])→List1 [21]: (
缓直坐标)
List1 [43]+ List1 [51]sin(List1 [49])→List1 [22]
←┘

List1 [49]→List1: 360Frac((Z+360)÷360→List1 [30] (方位角)
List1 [1]- List1 [57]→L
←┘     H→List1 [57]为前直线起点桩号)
List1 [42]-( List1 [50]+L)cos(List1 [47])→List1 [23]
←┘      (前直线起点坐标)
List1 [43]-( List1 [50]+L)sin(List1 [47])→List1 [24]
←┘

List1 [47]→Z : 360Frac((List1+360)÷360→List1 [31] ←┘   (方位角)
List1 [44]→List1 [12]: List1 [44]→List1 [13]:Prog
3←┘
List1 [4]- List1 [1]→L:90(2L- List1 [44])÷List1 [46]÷π→List1 [11] ←┘
List1[46]sin(List1[11])+List1[8]→List1 [14]: List1 [46](1-cos(List1 [11]))+ List1 [6]→List1 [15] ←┘
List1 [19]+ List1 [14]cos(List1 [47])- List1 [55] List1 [15]sin(List1 [47])]→List1 [27]
←┘  (圆缓点坐标)

List1 [20]+ List1 [14]sin(List1 [47])+ List1 [55] List1 [15]cos(List1 [47])]→List1 [28]
←┘
List1 [47]+ List1 [55] List1 [11]→Z: 360Frac((List1+360)÷360→List1 [33] ←┘(方位角)
List1 [2]- List1 [1]→L:90(2L- List1 [44])÷List1 [46]÷π→List1 [58]
←┘
List1 [46]sin(List1 [58])+ List1 [8]→List1 [14]: List1 [46](1-cos(List1 [58]))+ List1 [6]→List1 [15] ←┘
List1 [19]+ List1 [14]cos(List1 [47])- List1 [55] List1 [15]sin(List1 [47])]→List1 [25]
←┘  (缓圆点坐标)

List1 [20]+ List1 [14]sin(List1 [47])+ List1 [55] List1 [15]cos(List1 [47])]→List1 [26]
←┘
List1 [47]+ List1 [55] List1 [58]→Z: 360Frac((List1+360)÷360→List1 [32] ←┘(方位角)


9子程序名: 3(主点坐标计算辅助程序)


If List1 [12]=0 :Then 0→List1 [14]: 0→List1 [15]:Else←┘
List1 [12]- List1 [12]^(5)÷40÷(List1 [46]×List1 [13])2+ List1 [12]^(9)÷3456÷(List1 [46]
× List1 [13])^(4) →List1 [14] ←┘

List1 [12]^(3)÷6÷(List1 [46]
×List1 [13])- List1 [12]^(7)÷336÷(List1 [46]
× List1 [13])^(3)+ List1 [12]^(11) ÷42240÷(List1 [46]
×List1 [13])^(5)→List1 [15] ←┘

IfEnd
←┘





程序说明:

1
、进入程序:1.JD ZFS  2. ZD ZFS? 1为交点法正反算(以后操作均为交点法计算),选2为线元法正反算(以后操作均为线元法计算)

2
CHONG SHU JS 2. JS?1重输参数,选2直接进入交点法或线元法正反算(参数为已输过的参数)
3
、参数输入:
一、交点法已知数据输入:
BP
?上一交点ZH桩号
K
JD?交点桩号
X
JD?交点X坐标
Y
JD?交点Y坐标
LS1  ?
第一缓和曲线长度
LS2  ?
第二缓和曲线长度
R  ?
圆曲线半径
ZHFWJ°?交点前(即前交点至本交点也即ZH点)的正切线方位角
α
Z-,Y+?本交点处线路转角(左转为负,右转为正,度分秒输入)
交点法计算要素显示:
T1=
第一切线长
T2=
第二切线长
L=
曲线总长
LY=
圆曲线长
E=
曲线外距
K(ZH)=
直缓点桩号
K(HY)=
缓圆点桩号
K(QZ)=
曲中点桩号
K(YH)=
圆缓点桩号
K(HZ)=
缓直点桩号
二、线元法已知数据输入:
K0
KN? R0? RN?F0?X0? Y0?ZX? 分别为线元起点桩号 、终点桩号、起点半径、终点半径、起点切线方位角、起点X坐标、起点Y坐标、线元转向。
4
XC ?    YC? 输入置镜点即测站的X,Y坐标
5
1.ZS 2.FS1正算 2反算
程序线元判断原则:
(1)
以道路中线的前进方向(即里程增大的方向)区分左右;

(2)
当所求点位于中线时,Z=0;当位于中线左侧时,Z取负值;当位于中线右侧时,Z取正值。

(3)
当线元为直线时,其起点、终点的曲率半径为无穷大,以1045次代替输入×10x45
(4)
当线元为圆曲线时,无论其起点、终点与什么线元相接,其曲率半径均等于圆弧的半径。
(5)
当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以1045次代替输入×10x45;与圆曲线相接时,曲率半径等于圆曲线的半径。终点与直线相接时,曲率半径为无穷大,以1045次代替输入×10x45;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)
当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。终点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
6
、循环计算部份:
输入与显示简单说明
JD ZS KX+XXX?
ZHADAO ZS KX+XXX?输入所求的桩号(交点法或线元法
Z
              输入所求点距中线的边距(在中线输零,左负右正)
RJ
              输入边桩时左右边桩连线与线路前进方向中桩切线的右交角(当输入数字0时进入下一个桩号计算输入)

X =
Y =            计算得出的所求点的左、中、右 X Y坐标
QF(Z)= ×××            
计算得出所求点的中桩切线方位角
  
F= ×××   
计算得出置镜点到测点的方位角

S= ×××   
计算得出置镜点到测点的水平距离     
JD FS KN+?  
交点法反算时需输入反算点所在(前直线,前缓和段、圆曲线、后缓和段、后直线)线元中的任一点桩号(定位线元用)

X=×××   
反算输入所求点的X坐标
Y=×××     
反算输入所求点的Y坐标

K=×××      
计算得出求点所对应的里程
Z=×××      
计算得出求点到所对应的里程的垂直距离 (负就是左边,正就是右边)
发表于 2011-6-2 14:33:35 | 显示全部楼层
List好多……
发表于 2011-6-2 14:35:22 | 显示全部楼层
请发程序。
发表于 2011-6-2 17:13:46 | 显示全部楼层
发程序!
话说你的文档是用CG20导出来的?
 楼主| 发表于 2011-6-2 22:16:12 | 显示全部楼层
发表于 2011-6-3 20:55:46 | 显示全部楼层
改天我把这个程序改编成中文的,运行在nspire上(Nspire支持中文哦~)
发表于 2011-6-11 01:20:01 | 显示全部楼层
建议楼主贴出G3m方便大家调试,要不输入太麻烦?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-4-27 03:25 , Processed in 0.061893 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表