找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2981|回复: 13

[转贴]:4850程序

[复制链接]
发表于 2005-10-8 10:51:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[原创]曲线任意里程中边桩坐标正反算(CASIO fx-4850P计算器)程序(第四次修改版)
曲线任意里程中边桩坐标正反算(CASIO fx-4850P计算器)程序
( 第四次修改版 )


一、程序功能及原理
1.功能说明:本程序由一个主程序(TYQXjs)和四个子程——正算子程序(SUB1)、反算子程序(SUB2)等构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。本修改版程序既可实现正算全线贯通,亦可实现反算全线贯通。本程序也可以在CASIO fx-4800P计算器运行。
2.计算原理:利用Gauss-Legendre 5点通用公式正算线路中边桩坐标、线外测点至曲线元起点和终点的垂距的符号是否相异(即Dca×Dcb<0=>该测点在其线元内)进行判断并利用该线元要素反算中桩里程、支距,最后计算出放样数据。
二、源程序
1.主程序(TYQXjs)
Lbl 0:Defm 50:"1.SZ => XY":"2.XY => SZ":N: N=1=>Goto 1:≠>Goto 2Δ←
Lbl 1:{SZ}:SZ
S≤Z[18]=>J=1:Prog “DAT1”:Goto 3Δ
S≤Z[26]=>J=2:Prog “DAT1”:Goto 3Δ
S≤Z[34]=>J=3:Prog “DAT1”:Goto 3Δ
S≤Z[42]=>J=4:Prog “DAT1”:Goto 3Δ
             ……………
S≤Z[8(N+1)+2]=>J=n:Prog “DAT1”:Goto 3Δ
Lbl 3:W=Abs(S-O):Prog "SUB1":"XS=":X=X◢
"YS=":Y=Y◢
”FWI=” F=F-M F→DMS◢
Goto 4←┘
Lbl 2:{XY}:XY:Z[4]=X:Z[5] =Y:N=0
Lbl  A:Isz N:A=Z[8N+3]-M:B=Z[8(N+1)+3]-M:Prog "ZX1" :Z[6]×Z[7]<0=>J=N:Prog DAT1" :Goto BΔA=Z[8N+3]+M:B=Z[8(N+1)+3]+M:Prog "ZX1" :Z[6]×Z[7]<0=>J=N:Prog DAT1" :Goto B:≠> Goto AΔ
Lbl  B:Prog "SUB2":"S=":S=O+W◢
"Z=":Z=Z◢
Goto 2
Lbl 4:J=0:I=Pol(X-Z[1],Y-Z[2]):F=J:F<0=>F=F+360Δ  ”DIST=”:  I◢”FW=”:F→DMS◢ Goto 1

2. 正算子程序(SUB1)
A=0.1184634425:B=0.2393143352:N=0.2844444444:K=0.0469100770:L=0.2307653449:Z[3]=0.5:X=U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Ncos(G+QEZ[3]W(C+Z[3]WD))+Bcos(G+QE(1-L)W(C+(1-L)WD))+Acos(G+QE(1-K)W(C+(1-K)WD))): Y=V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Nsin(G+QEZ[3]W(C+Z[3]WD))+Bsin (G+QE(1-L)W(C+(1-L)WD))+Asin (G+QE(1-K)W(C+(1-K)WD))):M”ANG=”: F=G+QEW(C+WD)+M:X=X+ZcosF:Y=Y+ZsinF

3. 反算子程序(SUB2)
M”ANG=”:T=G-M:W=Abs((Y-V)cosT-(X-U)sinT):Z=0:Lbl 0:Prog "SUB1":L=T+QEW(C+
WD):Z=(Z[5]-Y)cosL-(Z[4]-X)sinL:AbsZ<1E-6=>Goto1:≠>W=W+Z:Goto 0Δ←┘
Lbl 1:Z=0:Prog "SUB1":Z=(Z[5]-Y)÷sinF
4. 垂距计算子程序(ZX1)
Z[6]=(Z[5]-Z[8N+1])COS A-(Z[4]-Z[8N])SIN A
Z[7]=(Z[5]-Z[8(N+1)+1])COS B-(Z[4]-Z[8(N+1)])SIN B
5.曲线元要素数据库:DAT1
Lbl1:J=1=>U=Z[8]:V=Z[9]:O=Z[10]:G=Z[11]:H=Z[12]:P=Z[13]:R=Z[14]:Q=Z[15]Δ
J=2=>U=Z[16]:V=Z[17]:O=Z[18]:G=Z[19]:H=Z[20]:P=Z[21]:R=Z[22]:Q=Z[23]Δ
J=3=> U=Z[24]:V=Z[25]:O=Z[26]:G=Z[27]:H=Z[28]:P=Z[29]:R=Z[30]:Q=Z[31]Δ
J=4=> U=Z[32]:V=Z[33]:O=Z[34]:G=Z[35]:H=Z[36]:P=Z[37]:R=Z[38]:Q=Z[39]Δ
                       ……………………………
J=N=> U=Z[8N]:V=Z[8N+1]:O=Z[8N+2]:G=Z[8N+3]:H=Z[8N+4]:P=Z[8N+5]:R=Z[8N+6]:Q=Z[8N+7]Δ
(注:如有多个曲线元要素继续添加入数据库DAT1中)
Lbl 2 :U"X0":V"Y0":O"S0":G"F0":H"LS":P"R0":R"RN":Q:C=1÷P:D=(P-R)÷(2HPR):E=180÷π
三、使用说明
1、规定
        (1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
        (2) 当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右
侧时,Z取正值。
        (3) 当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
        (4) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
         (5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半
径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
         (6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
(7)曲线元要素数据库(DAT1)可根据线型不同分为各个线元段输入到DAT1中,即分为直线段、缓和曲线、圆曲线等。
(8)正算时可仅输入里程Lp和边距Dp及右交角ANG全线计算,反算时通过输入测点的X、Y坐标和右交角ANG后计算器自动判断该点所属曲线元并利用该线元的曲线要素执行反算中桩里程Lp及支距Dp。
2、输入与显示说明
(一)、 输入部分:
      1. SZ => XY
      2. XY = > SZ
    1、  N ?  选择计算方式,输入1表示进行由里程、边距计算坐标 ;输入2表示由坐标反算
              里程和边距。
     2、X0 ?线元起点的X坐标
     3、Y0 ?线元起点的Y坐标
     4、S0 ?线元起点里程
     5、F0 ?线元起点切线方位角
     6、LS ?线元长度
     7、R0 ?线元起点曲率半径
     8、RN ?线元止点曲率半径
     9、Q ?  线 元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
     10、S ? 正算时所求点的里程
     11、Z ?正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)
   12、ANG?正算边桩时左右边桩连线与线路中线的右交角
   13、J?曲线元数据库曲线段判断系数(J=1、2…..n)
     14、X ?反算时所求点的X坐标
     15、Y ?反算时所求点的Y坐标
16、M?斜交右角
17、Z[1]-----测站点X坐标
18、Z[2]----- 测站点Y坐标

19、A、B、N是Gauss-Legendre求积公式中的插值系数
20、K 、L、Z[3] 是Gauss-Legendre求积公式中的求积节点
21、N=1时:Z[8]、Z[9]、Z[10]、Z[11]、Z[12]、Z[13]、Z[14]、Z[15]分别是各曲线元的X、Y坐标、起始里程S0、初始方位角F0、线元长度Ls、起点半径R0、终点半径Rn、曲线偏向系数Q
          ……………………………………………………
N=n时:Z[8N]、Z[8N+1]、Z[8N+2]、Z[8N+3]、Z[8N+4]、Z[8N+5]、Z[8N+6]、Z[8N+7]分别是各22、曲线元的X、Y坐标、起始里程S0、初始方位角F0、线元长度Ls、起点半径R0、终点半径Rn、曲线偏向系数Q
23、正算中的Z[18]、Z[26]、Z[34]、Z[42]……Z[8(N+1)+2]分别为各线元中的终点里程
24、主程序中的“Defm 50”应视具体线元的数量,适当增加扩展变量。
25、本次修改版不考虑CASIO fx-4500PA,因其容量太小,扩展变量实在太少而不能胜任。
(二)、显示部分:
       XS=×××    正算时,计算得出的所求点的X坐标
       YS=×××    正算时,计算得出的所求点的Y坐标
       S=×××    反算时,计算得出的所求点的里程
       Z=×××    反算时,计算得出的所求点的边距

四、算例
        某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组
成,各段线元的要素(起点里程S0、起点坐标X0 Y0、起点切线方位角F0、线元长度
LS、起点曲率半径R0、止点曲率半径RN、线 元左右偏标志Q)如下:
    S0             X0               Y0                  F0                LS          R0      RN            Q
500.000    19942.837    28343.561     125 16 31.00    269.256     1E45    1E45           0
769.256    19787.340    28563.378     125 16 31.00      37.492     1E45    221.75        -1
806.748    19766.566    28594.574     120 25 54.07     112.779    221.75  221.75       -1
919.527    19736.072    28701.893      91 17 30.63      80.285     221.75  9579.228    -1
999.812    19744.038    28781.659      80 40 50.00     100.000     1E45     1E45           0
        1、正算
          (注意:略去计算方式及线元要素输入,请自行根据所求点所在的线元输入线元
要素)
            S=700  Z=-5    计算得  XS=19831.41785   YS=28509.72590
            S=700  Z=0     计算得  XS=19827.33592   YS=28506.83837
            S=700  Z= 5    计算得  XS=19823.25398   YS=28503.95084

            S=780  Z=-5    计算得  XS=19785.25749   YS=28575.02270
            S=780  Z=0     计算得  XS=19781.15561   YS=28572.16358
            S=780  Z= 5    计算得  XS=19777.05373   YS=28569.30446
           
            S=870  Z=-5    计算得  XS=19747.53609   YS=28654.13091
            S=870  Z=0     计算得  XS=19742.68648   YS=28652.91379
            S=870  Z= 5    计算得  XS=19737.83688   YS=28651.69668
      
            S=940  Z=-5.123    计算得  XS=19741. 59118  YS=28722.05802
            S=940  Z=0            计算得  XS=19736.47687   YS=28722.35642
            S=940  Z= 3.009    计算得  XS=19733.47298   YS=28722.53168
            
       2、 反算
             X=19831.418   Y=28509.726   计算得  S=699.9999974  Z= -5 .00018164
             X=19827.336   Y=28506.838   计算得  S=699.9996493  Z= 0.000145136
             X=19823.25398   Y=28503.95084    计算得  S=699.9999985  Z= 5.000003137
            X=19785.25749   Y=28575.02270  计算得  S=780.0000035  Z= -5 .000001663
           X=19781.15561   Y=28572.16358   计算得  S=780.0000025  Z=- 0.000002979
           X=19777.05373   Y=28569.30446   计算得  S=780.0000016  Z= 4.99999578
                    
        X=19747.536   Y=28654.131   计算得  S=870.0001137  Z= -4.99941049
           X=19742.686   Y=28652.914   计算得  S=870.0003175  Z=- 0.00041814
           X=19737.837   Y=28651.697   计算得  S=870.0002748  Z= 4.999808656

          X=19741.5912   Y=28722.0580   计算得  S=939.9999786  Z= -5.123024937
          X=19736.4769   Y=28722.3564   计算得  S=939.9999862  Z=- 0.000027710
          X=19733.4730   Y=28722.5317   计算得  S=940.0000238  Z= 3.00898694

注:1、承蒙yshf的源程序:《曲线任意里程中边桩坐标正反算程序》的共享,这里特意感谢!
    2、希望广大网友同行支持程序共享并积极扩展,多多网上交流!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-19 21:46:17 | 显示全部楼层
”FWI=” F=F-M F→DMS◢
Goto 4←┘
Lbl 2:{XY}:XY:Z[4]=X:Z[5] =Y:N=0
Lbl A:Isz N:A=Z[8N+3]-M:B=Z[8(N+1)+3]-M:Prog "ZX1" :Z[6]×Z[7]<0=>J=N:Prog DAT1" :Goto BΔA=Z[8N+3]+M:B=Z[8(N+1)+3]+M:Prog "ZX1" :Z[6]×Z[7]<0=>J=N:Prog DAT1" :Goto B:≠> Goto AΔ

这些是什么意思啊!
我输入4850总是出错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-25 17:59:03 | 显示全部楼层
“线元起点里程FWJ”--------------是怎么计算的呀?
比如,设计上只给定了导线点的坐标,只能直接求出导线的方位解,但HY点、YH点的方位角怎么求出呀?
请教ing......。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-12 08:54:32 | 显示全部楼层
看起来有点复杂呀,楼主,不过用来学习肯定很好的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-7 23:47:33 | 显示全部楼层
呵呵,刚看了李的论文,(关于中边桩通用公式的)就看到你这个,感觉不错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-10 19:31:26 | 显示全部楼层
看起来有点复杂呀,楼主,不过用来学习肯定很好的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-23 14:55:03 | 显示全部楼层
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-4-8 09:47:36 | 显示全部楼层
扩展变量有点搞不懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-4-14 21:40:36 | 显示全部楼层
都是些东省西省的.一个个只想卖弄一下,又不肯全部发出来.没有品德,明明是转贴的,硬要删掉几个字符才肯发出来,没有人性
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-7 08:52:37 | 显示全部楼层
扩展变量过多的话,容易造成程序字节过多,对于4800,内存很快就不够用了。

节约空间,现在有不用扩展变量的全线贯通程序。简洁一些。

嗯 ,是转贴,不过应该是转的贴本身就有错误。
新手朋友就不要调试这个程序了。

作为思路还是可以的。(最后说一句,你如果没有调试的程序,就不要发了,免得误导别人,浪费时间。)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-4-22 20:13:42 | 显示全部楼层
10的45次是不是10的45次方,输入为10^45吗?我的总是计算不对,但多次检查没有输入的错误。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-4-22 20:14:05 | 显示全部楼层
可以自动连线么?只能展点吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-5-15 12:17:00 | 显示全部楼层
看不明白啊,好复杂啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

发表于 2009-5-18 21:42:41 | 显示全部楼层
好多符号,不晓得怎么录入···
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 05:56 , Processed in 0.348552 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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