faos 发表于 2011-6-1 22:29:00

求cg20计算程序修改 意见

本程序是5800转FX-CG20计算程序希望广大测友勇于提出修改意见错误或者转换错误修改征集:修改格式保留原程序→修改的程序加上[
]
FX-CG20(交点法与交点法)融合计算程序1主程序名:ZBZFS(功能:进入计算主程序)(◢, ←┘, →
►DMS ◢)
File1
70→Dim List1
"1.JD ZFS2. ZD ZFS"? → I: I→List1 : "1.CS JS 2. JS"? → I←┘
If I=1: Then Goto1: Else Goto2:IfEnd←┘
LbI 1 :If List1=1: Then Prog"JDYS":ElseClrText:"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.ZS2.FS"? → I: I=2=>Goto 3←┘
LbI 1 : ClrText: If List1=1: Then"JD ZS KX+XXX"? →K :Prog"4": Else "ZD ZS KX+XXX"? →K :IfEnd←┘
LbI2: ClrText:90→B: ClrText:"RJ Or 0To 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=1: Then"JD FS KN+"? →K:"X="? →C:"Y="? →D:Prog"4":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)÷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←┘
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<0 :Then -1→List1 : Else:1→List1:IfEnd
LbI2:IfK≥List1:ThenList1→A:List→L:List1→U:List1→V : List1→W : 10^45→P   :10^45→Q : 0→G:IfEnd←┘
LbI 3:If K≥List1 :Then List1 →A : List1 →L : List1 →U : List1 →V: List1 →W : 10^45→P   : List1 →Q : List1 →G: IfEnd←┘
LbI 4:If K≥List1:Then List1 →A: List1 →L: List1 →U : List1 →V: List1 →W : List1 →P: List1 →Q : List1 →G: IfEnd←┘
LbI 5:If K≥List1 :Then List1 →A : List1 →L : List1 →U: List1 →V : List1 →W : List1 →P: 10^45→Q : List1 →G: IfEnd←┘
LbI 6:If K≥List1 :Then List1 →A : List1 +1000→L: List1 →U : List1 →V : List1 →W:10^45→P :10^45→Q : 0→G : IfEnd←┘


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

ClrText : " BP="? →H:H→List1 :"K(JD)="? →K:K→List1 :"X(JD)="? →X :X→List1 :"Y(JD)="? →Y:Y →List1 :"LS1="? →B:B→List1 :"LS2="? →C:C →List1 : “R=”? →R:R →List1 :"(ZH)FWJ°="? →M:M→List1 : "α(Z-,Y+)°"=?→O:O→List1 : List1 + List1 →List1 : Prog "1":Prog "2"←┘
ClrText :"T1=":"T2=":"L=":"LY=": Locate 4,1, List1 : Locate 4,2, List1 : Locate 4,3, List1 : Locate 4,4, List1 ◢
Cls :"E=": Locate 7,1, List1 ←┘
ClrText :"K(QD)=": "X=": "Y=": "FWJ="Locate 7,1, List1 :Locate 7,2, List1 :Locate 7,3, List1 :Locate 7,4, List1 ◢←┘
ClrText :"K(ZH)=": "X=": "Y=": "FWJ=":Locate 7,1, List1 : Locate 7,2, List1 :Locate 7,3, List1 :Locate 7,4, List1 ◢←┘
ClrText : "K(HY)=": "X=": "Y=": "FWJ=": Locate 7,1, List1 : Locate 7,2, List1 :Locate 7,3, List1 :Locate 7,4, List1 ◢←┘
ClrText :"K(QZ)=": Locate 7,1, List1 ◢←┘
ClrText :"K(YH)=": "X=": "Y=": "FWJ=": Locate 7,1, List1 : Locate 7,2, List1 :Locate 7,3, List1 :Locate 7,4, List1 ◢←┘
ClrText :"K(HZ)=": "X=": "Y=": "FWJ=": Locate 7,1, List1 : Locate 7,2, List1 :Locate 7,3, List1 :Locate 7,4, List1 ◢←┘


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

If List1 <0 :Then-1→List1 : Else 1→List1 : IfEnd : List1 * List1 →List1 ←┘
List1 2 ÷24÷List1 - List1 ^(4)÷2688÷List1 ^(3) →List1 ←┘
List1 2 ÷24÷List1 - List1 ^(4)÷2688÷List1 ^(3) →List1 ←┘
List1 ÷2- List1 ^(3)÷240÷List1 2 →List1 ←┘
List1 ÷2- List1 ^(3)÷240÷List1 2 →List1 ←┘
List1 +(( List1 + List1 -( List1 + List1 )cos(List1 ))÷sin(List1 ))→List1 ←┘
List1 +(( List1 + List1 -( List1 + List1 )cos(List1 ))÷sin(List1 ))→List1 ] ←┘
List1 * List1 π÷180+( List1 + List1 ) ÷2→List1 ←┘
List1 * List1 π÷180-( List1 + List1 ) ÷2→List1 ←┘
(List1 +( List1 + List1 )÷2)÷cos(List1 ÷2)- List1 →List1 ←┘
List1 - List1 →List1 ←┘
List1 + List1 →List1 ←┘
List1 + List1 ÷2→List1 ←┘
List1 + List1 - List1 →List1 ←┘
List1 + List1 →List1 ←┘


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


List1 - List1 cos(List1 )→List1 : (直缓坐标)
List1 - List1 sin(List1 )→List1 ←┘
List1 →Z : 360Frac((Z+360)÷360→List1 (方位角)
List1 + List1 cos(List1 )→List1 : (缓直坐标)
List1 + List1 sin(List1 )→List1 ←┘
List1 →List1: 360Frac((Z+360)÷360→List1 (方位角)
List1 - List1 →L←┘   (H→List1 为前直线起点桩号)
List1 -( List1 +L)cos(List1 )→List1 ←┘      (前直线起点坐标)
List1 -( List1 +L)sin(List1 )→List1 ←┘
List1 →Z : 360Frac((List1+360)÷360→List1 ←┘   (方位角)
List1 →List1 : List1 →List1 :Prog"3"←┘
List1 - List1 →L:90(2L- List1 )÷List1 ÷π→List1 ←┘
List1sin(List1)+List1→List1 : List1 (1-cos(List1 ))+ List1 →List1 ←┘
List1 + List1 cos(List1 )- List1 List1 sin(List1 )]→List1 ←┘(圆缓点坐标)
List1 + List1 sin(List1 )+ List1 List1 cos(List1 )]→List1 ←┘
List1 + List1 List1 →Z: 360Frac((List1+360)÷360→List1 ←┘(方位角)
List1 - List1 →L:90(2L- List1 )÷List1 ÷π→List1 ←┘
List1 sin(List1 )+ List1 →List1 : List1 (1-cos(List1 ))+ List1 →List1 ←┘
List1 + List1 cos(List1 )- List1 List1 sin(List1 )]→List1 ←┘(缓圆点坐标)
List1 + List1 sin(List1 )+ List1 List1 cos(List1 )]→List1 ←┘
List1 + List1 List1 →Z: 360Frac((List1+360)÷360→List1 ←┘(方位角)


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


If List1 =0 :Then 0→List1 : 0→List1 :Else←┘
List1 - List1 ^(5)÷40÷(List1 ]×List1 )2+ List1 ^(9)÷3456÷(List1
× List1 )^(4) →List1 ←┘
List1 ^(3)÷6÷(List1
×List1 )- List1 ^(7)÷336÷(List1
× List1 )^(3)+ List1 ^(11) ÷42240÷(List1
×List1 )^(5)→List1 ←┘
IfEnd←┘





程序说明:
1、进入程序:1.JD ZFS2. 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? 圆曲线半径
(ZH)FWJ°?交点前(即前交点至本交点也即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.FS选1正算 选2反算
程序线元判断原则:
(1) 以道路中线的前进方向(即里程增大的方向)区分左右;
(2) 当所求点位于中线时,Z=0;当位于中线左侧时,Z取负值;当位于中线右侧时,Z取正值。
(3) 当线元为直线时,其起点、终点的曲率半径为无穷大,以10的45次代替输入×10x45。
(4) 当线元为圆曲线时,无论其起点、终点与什么线元相接,其曲率半径均等于圆弧的半径。
(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替输入×10x45;与圆曲线相接时,曲率半径等于圆曲线的半径。终点与直线相接时,曲率半径为无穷大,以10的45次代替输入×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=×××       计算得出求点到所对应的里程的垂直距离 (负就是左边,正就是右边)

l5h5t7 发表于 2011-6-2 14:33:35

List好多……

l5h5t7 发表于 2011-6-2 14:35:22

请发程序。

月与映之皮丘 发表于 2011-6-2 17:13:46

发程序!
话说你的文档是用CG20导出来的?

faos 发表于 2011-6-2 22:16:12

可以下载的;http://www.cncalc.org/viewthread.php?tid=6151&extra=

imath 发表于 2011-6-3 20:55:46

改天我把这个程序改编成中文的,运行在nspire上(Nspire支持中文哦~)

houzi 发表于 2011-6-11 01:20:01

建议楼主贴出G3m方便大家调试,要不输入太麻烦?
页: [1]
查看完整版本: 求cg20计算程序修改 意见