万能程序.docx
《万能程序.docx》由会员分享,可在线阅读,更多相关《万能程序.docx(8页珍藏版)》请在冰豆网上搜索。
万能程序
CASIO万能坐标程序[
程序特点:
真正的全线贯通坐标计算,在曲线元要素输入时仅需要输入第一段全部曲线元要素,后面曲线元要素除起点半径、终点半径、曲线长、转向需输入外其他要素均从前一曲线按辛普森8等分计算得出;辛普森公式任意等分,满足所有精度要求;全线曲线元数据一次性程序化输入,扩充变量数据库,无需修改程序内容;傻瓜操作,适用初级用户。
一、程序:
MC
W“ ”:
W=1=>Z[2]=0:
Goto1ΔW=2=>O“KOU LING”:
O≠123456=>O=0:
“OUT”◢Goto4ΔO=0:
Z[1]=0:
Goto0←┘
Lbi0←┘
”N0.”:
Z[1]+1◢←┘
Z[1]=0=>{ABCREFGU}:
A“X0”:
B“Y0”:
C“F0”:
R“R0”:
E“RN”:
F“D0”:
G“LS”:
U“G”:
Z[Z[1]×8+3]=A:
Z[Z[1]×8+4]=B:
Z[Z[1]×8+5]=C:
Z[Z[1]×8+6]=R-1:
Z[Z[1]×8+7]=E-1:
Z[Z[1]×8+8]=F:
Z[Z[1]×8+9]=F+G:
Z[Z[1]×8+10]=U:
“NEXT”◢IszZ[1]:
Goto0ΔZ[1]=1=>D=Z[9]:
Z=0:
Z[2]=0:
GOTO2ΔD=Z[(Z[1]-1)×8+9]:
Z=0:
Z[2]=Z[1]-1:
GOTO2←┘
LbiA:
Z[Z[1]×8+3]=X:
Z[Z[1]×8+4]=Y:
Z[Z[1]×8+5]=J:
Z[Z[1]×8+8]=D:
{REGU}:
R“Ro”:
E“RN”:
G“LS”:
U“G”:
Z[Z[1]×8+6]=R-1:
Z[Z[1]×8+7]=E-1:
Z[Z[1]×8+9]=D+G:
Z[Z[1]×8+10]=U:
“NEXT”◢IszZ[1]:
Goto0←┘
Lbi1←┘
{DZ}:
D:
Z:
Z[2]=0:
Goto2←┘
Lbi2←┘
Z[2]>Z[1]=>GoTo4ΔD≤Z[Z[2]×8+9]=>A=Z[Z[2]×8+3]:
B=Z[Z[2]×8+4]:
C=Z[Z[2]×8+5]:
R=Z[Z[2]×8+6]:
E=Z[Z[2]×8+7]:
F=Z[Z[2]×8+8]:
G=Z[Z[2]×8+9]:
U=Z[Z[2]×8+10]:
Goto3ΔIszZ[2]:
Goto2
Lbi3←┘
W=2=>N=8:
≠>N=5ΔP=U(E-R)÷Abs(G-F):
Q=Abs(D-F)÷N:
S=90Q÷π:
J=C+(NPQ+2UR)NS:
L=1←┘
X=A+Q÷6×(CosC+CosJ+4∑(Cos(C+((L+PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Cos(C+(LPQ+2UR)LS),L,1,(N-1)))+ZCos(J+90)←┘
Y=B+Q÷6×(SinC+SinJ+4∑(Sin(C+((L+PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Sin(C+(LPQ+2UR)LS),L,1,(N-1)))+ZSin(J+90):
W=2=>GOTOAΔ
Z=0=>“X”:
X:
Pause0:
“Y”:
Y◢Goto1Δ
Z<0=>“XL”:
X:
Pause0:
“YL”:
Y◢Goto1Δ fx4850①
Z>0=>“XR”:
X:
Pause0:
“YR”:
Y◢Goto1←┘
Z=0=>X“X”◢Y“Y”◢Goto1Δ
Z<0=>X“XL”◢Y“YL”◢Goto1Δ fx4800②
Z>0=>X“XR”◢Y“YR”◢Goto1←┘
Lbi4←┘
二、说明
a、编制说明
本程序是运用复化辛普生公式根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距,对该曲线段范围内任意里程中边桩坐标进行计算,以及对卡西欧扩充变量的灵活应用,实现了真正意义上的的全线贯通及曲线要素输入程序化(在不修改程序内容的情况下可通过运行程序输入任意多段曲线元要素)。
通过对N=进行修改,可对辛普森公式进行任意等分进行运算。
(注:
N为不小于2的整数,N越大精度越高,计算速度越慢;N越小精度越低,运算速度越快,一般曲线取N=4就能满足精度要求,在能满足精度的情况下尽量N取小值,已获得最佳运算速度,不要盲目的追求精度)。
b、程序操作说明
程序分为两部分:
为计算,为设置。
1、首先用Shift+Defm键对计算器内存变量进行扩充,扩充变量数为8×X+2(X为曲线元段数,变量数视内存情况尽量大些),运行程序,选2进行曲线要素设置,为防止误操作在正确输入口令123456时方可进行设置,否则显示OUT跳到程序尾(LBI4)。
在执行程序中将第一段曲线元要素按规律输入到扩充内存变量中(A“X0”:
B“Y0”:
C“F0”:
R“R0”:
E“RN”:
F“D0”:
G“LS”:
U“G”),以后曲线仅需输入R“R0”、E“RN”:
G“LS”:
U“G”,其他参数自动计算得出。
在显示NEXT时为提示是否输入下一曲线,按EXE继续输入,如不需再输入则退出程序。
2、选进行坐标运算,D输入桩号,Z输入左右距离(负为左,正为右,0为中)程序首先自动判断其在哪一线元内,并把其线元要素调出进行计算,即可对全线进行坐标计算。
c、变量说明
X0:
Y0:
F0――――曲线元起点X、Y坐标及起点正切线方位角
R0:
RN――――――曲线元起点及终点半径
D0:
LS:
Q――――曲线元起点桩号、路线长度及线路左右偏标志(左=-1,直线=0,右=1)
D――――――――曲线元中待求点桩号
Z――――――――计算边桩距中线平距,左边输入负值,右边输入正值,中桩输入0
X:
Y (中)
XL:
YL(左)
XR:
YR(右)―――待求点的X,Y坐标
扩充变量:
Z[Z[1]×8+3]:
Z[Z[1]×8+4]:
Z[Z[1]×8+4]:
Z[Z[1]×8+6]:
Z[Z[1]×8+7]:
Z[Z[1]×8+8]:
Z[Z[1]×8+9]:
Z[Z[1]×8+10]:
分别为各线元X0:
Y0:
F0;R0:
RN:
D0:
LS:
G,
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,Z=0,坐标显示X Y;当位于中线左侧时,Z取负值,坐标显示XL YL,;当位于中线右侧时,Z取正值,坐标显示XR YR。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次方代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次方代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径为无穷大,以10的45次方代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
[/color]
(7)当两段缓和曲线相连时,相连处要素均输为10的45次方(可以看作缓直+直缓)。
[B]本程序可在4800 4850上运行,只需将输出部分进行修改。
(4850① 4800②)[/B]
郑石高速路面标余官营互通E匝道
序号 Xo Yo Fo Ro RN D0 LS G
1 43。
34"" 7000 7000 0 170 -1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
85 170
2 42。
10"" 7000 500 170 1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
3 49。
18"" 500 500 1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
4 83。
35"" 500 无穷大 60 1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
51093
2008年1月27日更新,加入了坐标反算功能,坐标正算加入斜角计算功能。
程序特点:
真正的全线贯通坐标正反计算!
在曲线元要素输入时仅需要输入第一段全部曲线元要素,后面曲线元要素除起点半径、终点半径、曲线长、转向需输入外其他要素均从前一曲线按辛普森8等分计算得出,解决了主线坐标计算无法获得第二段及其以后曲线元起点参数的问题;辛普森公式任意等分,满足所有精度要求;全线曲线元数据一次性程序化输入,参数存储采用扩充变量数据库,无需修改程序内容;多功能采用单程序编程,苊馄捣钡饔米映绦颍岣咴怂闶涠龋簧倒喜僮鳎乇鹗视贸跹д摺
一、程序:
MC
W“ ”:
W=1=>Z[2]=0:
V=0:
Goto1ΔW=2=>Goto4ΔW=3=>O“KOU LING”:
O≠123456=>O=0:
“OUT”◢GotoDΔO=0:
V=0:
Z[1]=0:
Goto0←┘
Lbi0←┘
”N0.”:
Z[1]+1◢←┘
Z[1]=0=>{ABCREFGU}:
A“X0”:
B“Y0”:
C“F0”:
R“R0”:
E“RN”:
F“D0”:
G“LS”:
U“G”:
Z[Z[1]×8+3]=A:
Z[Z[1]×8+4]=B:
Z[Z[1]×8+5]=C:
Z[Z[1]×8+6]=R-1:
Z[Z[1]×8+7]=E-1:
Z[Z[1]×8+8]=F:
Z[Z[1]×8+9]=F+G:
Z[Z[1]×8+10]=U:
“NEXT”◢IszZ[1]:
Goto0ΔZ[1]=1=>D=Z[9]:
Z=0:
Z[2]=0:
GOTO2ΔD=Z[(Z[1]-1)×8+9]:
Z=0:
Z[2]=Z[1]-1:
GOTO2←┘
LbiA←┘
Z[Z[1]×8+3]=X:
Z[Z[1]×8+4]=Y:
Z[Z[1]×8+5]=J:
Z[Z[1]×8+8]=D:
{REGU}:
R“Ro”:
E“RN”:
G“LS”:
U“G”:
Z[Z[1]×8+6]=R-1:
Z[Z[1]×8+7]=E-1:
Z[Z[1]×8+9]=D+G:
Z[Z[1]×8+10]=U:
“NEXT”◢IszZ[1]:
Goto0←┘
Lbi1←┘
{DZO}:
D:
Z:
O“RJ”:
Z[2]=0:
Goto2←┘
Lbi2←┘
V≠1=>Z[2]>Z[1]=>GoToDΔΔD≤Z[Z[2]×8+9]=>A=Z[Z[2]×8+3]:
B=Z[Z[2]×8+4]:
C=Z[Z[2]×8+5]:
R=Z[Z[2]×8+6]:
E=Z[Z[2]×8+7]:
F=Z[Z[2]×8+8]:
G=Z[Z[2]×8+9]:
U=Z[Z[2]×8+10]:
Goto3ΔIszZ[2]:
Goto2
Lbi3←┘
W=3=>N=8:
≠>N=4ΔP=U(E-R)÷Abs(G-F):
Q=Abs(D-F)÷N:
S=90Q÷π:
J=C+(NPQ+2UR)NS:
L=1←┘
X=A+Q÷6×(CosC+CosJ+4∑(Cos(C+((L+PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Cos(C+(LPQ+2UR)LS),L,1,(N-1)))+ZCos(J+O)←┘
Y=B+Q÷6×(SinC+SinJ+4∑(Sin(C+((L+PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Sin(C+(LPQ+2UR)LS),L,1,(N-1)))+ZSin(J+O):
V=1=>Goto6ΔV=2=>Goto9ΔV=3=>GOTOCΔW=3=>GOTOAΔ
Z=0=>“X”:
X:
Pause0:
“Y”:
Y◢Goto1Δ
Z<0=>“XL”:
X:
Pause0:
“YL”:
Y◢Goto1Δ fx4850①
Z>0=>“XR”:
X:
Pause0:
“YR”:
Y◢Goto1←┘
Z=0=>X“X”◢Y“Y”◢Goto1Δ
Z<0=>X“XL”◢Y“YL”◢Goto1Δ fx4800②
Z>0=>X“XR”◢Y“YR”◢Goto1←┘
Lbi 4←┘
{MH}:
M“X”:
H“Y”:
Z[2]=0:
GOTO5←┘
Lbi 5←┘
V=1:
D=Z[Z[2]×8+9]:
Z=0:
O=90:
GOTO2←┘
Lbi 6←┘
K=((H-B)Cos(C-90)-(M-A)Sin(C-90))×((H-Y)Cos(J-90)-(M-X)Sin(J-90)):
K≤0=>Goto7ΔIszZ[2]:
Goto5←┘
Lbi 7←┘
D=F+Abs((H-B)Cos(C-90)-(M-A)Sin(C-90)):
D>G=>IszZ[2]:
Goto5ΔGoto8←┘
Lbi 8←┘
V=2:
GOTO3←┘
Lbi 9←┘
K=(H-Y)Cos(J-90)-(M-X)Sin(J-90):
AbsKGotoBΔD=D+K:
GOTO8←┘
Lbi B←┘
V=3:
Z=0:
Goto3←┘
Lbi C←┘
Z=(H-Y)÷Sin(J+90):
“D”:
D:
Pause0:
“Z”Z◢
(Z=(H-Y)÷Sin(J+90):
D“D”◢“Z”Z◢)4800输出
GOTO4←┘
Lbi D←┘
二、说明
a、编制说明
本程序是运用复化辛普生公式根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距,对该曲线段范围内任意里程中边桩坐标进行计算,以及对卡西欧扩充变量的灵活应用,实现了真正意义上的的全线贯通及曲线要素输入程序化(在不修改程序内容的情况下可通过运行程序输入任意多段曲线元要素)。
通过对N=进行修改,可对辛普森公式进行任意等分进行运算。
(注:
N为不小于2的整数,N越大精度越高,计算速度越慢;N越小精度越低,运算速度越快,一般曲线取N=4就能满足精度要求,在能满足精度的情况下尽量N取小值,已获得最佳运算速度,不要盲目的追求精度)
b、程序操作说明
程序分为两部分:
为计算,为设置。
1、 首先用Shift+Defm键对计算器内存变量进行扩充,扩充变量数为8×X+2(X为曲线元段数,变量数视内存情况尽量大些),运行程序,选2进行曲线要素设置,为防止误操作在正确输入口令123456时方可进行设置,否则显示OUT跳到程序尾(LBI4)。
在执行程序中将第一段曲线元要素按规律输入到扩充内存变量中(A“X0”:
B“Y0”:
C“F0”:
R“R0”:
E“RN”:
F“D0”:
G“LS”:
U“G”),以后曲线仅需输入R“R0”、E“RN”:
G“LS”:
U“G”,其他参数自动计算得出。
在显示NEXT时为提示是否输入下一曲线,按EXE继续输入,如不需再输入则退出程序。
2、 选进行坐标运算,D输入桩号,Z输入左右距离(负为左,正为右,0为中)程序首先自动判断其在哪一线元内,并把其线元要素调出进行计算,即可对全线进行坐标计算。
c、变量说明
X0:
Y0:
F0――――曲线元起点X、Y坐标及起点正切线方位角
R0:
RN――――――曲线元起点及终点半径
D0:
LS:
Q―――曲线元起点桩号、路线长度及线路左右偏标志(左=-1,直线=0,右=1)
D――――――――曲线元中待求点桩号
Z―――――――――计算边桩距中线平距,左边输入负值,右边输入正值,中桩输入0
RJ:
坐标正算右夹角
X:
Y (中)
XL:
YL(左)
XR:
YR(右)―――――――待求点的X,Y坐标
扩充变量:
Z[Z[1]×8+3]:
Z[Z[1]×8+4]:
Z[Z[1]×8+4]:
Z[Z[1]×8+6]:
Z[Z[1]×8+7]:
Z[Z[1]×8+8]:
Z[Z[1]×8+9]:
Z[Z[1]×8+10]:
分别为各线元X0:
Y0:
F0;R0:
RN:
D0:
LS:
G,
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,Z=0,坐标显示X Y;当位于中线左侧时,Z取负值,坐标显示XL YL,;当位于中线右侧时,Z取正值,坐标显示XR YR。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次方代替。
(对于特别长的直线应适当提高10的次方数,以防止以大半径曲线误算,建议以10的90次方计算)
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次方代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径为无穷大,以10的45次方代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,
本程序可在4800 4850上运行,只需将输出部分进行修改。
(4850① 4800②)
郑石高速路面标余官营互通E匝道
序号 Xo Yo Fo Ro RN D0 LS G
1 43。
34"" 7000 7000 0 170 -1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
85 170
2 42。
10"" 7000 500 170 1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
3 49。
18"" 500 500 1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
4 83。
35"" 500 无穷大 60 1
中点桩号 中点X 中点Y 终点桩号 终点X 终点Y
计算时间测试(秒),计算精度满足1mm时测试每段曲线元的终点
4等分
正算:
反算:
5等分
正算:
反算:
程序特点:
全线标高数据一次性程序化输入,扩充变量数据库,无需修改程序内容;全线贯通计算,标高计算时将全线数据分为4等分,首先判断待求点在哪个区间,再循环选择,提高运算时间;傻瓜操作,适用初级用户。
一、程序:
MC
W“ ”:
W=1=>Goto1ΔO“KOU LING”:
O≠123456=>O=0:
Goto5ΔO=0:
Z[1]=0:
Goto0←┘
Lbi 0←┘
”No.”:
Z[1]+1◢
{ZHPR}:
Z“D0”:
H“BG”:
P“PD”:
R“R0”:
Z[Z[1]×4+3]=Z:
Z[Z[1]×4+4]=H:
Z[Z[1]×4+5]=P:
Z[Z[1]×4+6]=R:
“NEXT”◢IszZ[1]:
Goto0←┘
Lbi 1←┘
Z[2]=Z[1]←┘
{D}:
D≤Z[Int(Z[2]÷4+1)×4+3]=>Z[2]=Int(Z[2]÷4):
Goto2ΔD≤Z[Int(Z[2]÷2+1)×4+3]=>Z[2]=Int(Z[2]÷2):
Goto2ΔD≤Z[Int(Z[2]×.75+1)×4+3]=>Z[2]=Int(Z[2]×.75):
Goto2ΔGoto2←┘
Lbi 2←┘
DDszZ[2]:
Goto2ΔGoto3←┘
Lbi 3←┘
Z[Z[2]×4+6]≠0=>G=Z[Z[2]×4+4]+(D-Z[Z[2]×4+3])×Z[Z[2]×4+5]÷100+(D-Z[Z[2]×4+3])^2÷2÷Z[Z[2]×4+6]:
Goto4ΔG=Z[Z[2]×4+4]+(D-Z[Z[2]×4+3])×Z[Z[2]×4+5]÷100:
Goto4←┘
Lbi 4←┘
{Z}:
Z:
G=(Z):
“G”:
G◢ (4850输出)
{Z}:
Z:
G=(Z):
G“G”◢ (4800输出)
Goto1←┘
Lbi 5←┘
“OUT”◢
程序操作说明
程序分为两部分:
为标高计算,为参数设置。
1、 首先用Shift+Defm键对计算器内存变量进行扩充,扩充变量数为4×X+2(X为标高参数段数,变量数视内存情况尽量大些),运行程序,选2进行标高参数设置,为防止误操作在正确输入口令123456时方可进行设置,一组参数输入完毕后显示“NEXT”,如输入完毕请退出,按“EXE”继续。
2、 选1.BG进行标高运算,D输入桩号,Z输入距离,程序首先自动判断其待求点在哪一段参数内,并将参数调出进行计算,即可对全线进行标高计算。
c、变量说明
Z“D0”―――――――起点桩号(非变坡点)
H“BG”―――――――起点标高(非变坡点)
P“PD”―――――――前坡度(%)
R“R0”―――――――竖曲线半径(凸曲线为负值;凹曲线为正值,直坡为0)