曲线测设实验及实习报告全新版.docx
《曲线测设实验及实习报告全新版.docx》由会员分享,可在线阅读,更多相关《曲线测设实验及实习报告全新版.docx(25页珍藏版)》请在冰豆网上搜索。
曲线测设实验及实习报告全新版
第一部分非完整、非对称缓和曲线要素计算及测设
随着短程光电测距仪和全站仪在道路勘测中的应用越来越普及,利用极坐标法测设曲线将越来越重要。
这种测设曲线的方法,其优点是测量误差不累计,测设的点位精度高。
尤其是测站设置在中线外任意一点测设曲线,将给现场的工作带来很大的方便。
极坐标测设曲线主要是曲线测设资料的计算问题,该方法的计算原理及思路为:
把由直线段、圆曲线段、缓和曲线段组合而成的曲线归算到统一的导线测量坐标系统中,这样就便于计算放样的元素了。
1.实验目的及要求
1.学会非完整、非对称缓和曲线要素计算方法;
2.学会编写偏角法、极坐标法非完整、非对称缓和曲线要素计算程序;
3.实地放样非完整、非对称缓和曲线;
4.在实习前预先算出实测数据;
5.各小组做好测设过程的人员安排。
2.前期实验准备和相关安排
2.1实验人员及仪器
组长:
杨威副组长:
张懂庆
组员:
杨永强张文超范龙强赵晨亮子丽天
实习仪器:
全站仪一台,三脚架两个,棱镜两个,卷尺一个
2.2实验内容
1.根据自己设计的数据计算测设要素和主点里程;
2.设置非完整、非对称曲线的主点;
3.根据书上P169页的曲线测设程序框图(图1),编写一般缓和曲线的程序,并进行调试和检核;
4.可以查资料,学习非完整、非对称曲线的计算方法和测设方法,并和自己设计的程序相结合,计算各个放样点的坐标等内容;
5.在内业计算的基础上,选取合适的控制点和位置进行曲线测设;
6.直接根据课本实例,进行相应元素的计算和检核,最后安排具体的实习过程,进行现场曲线放样;
7.书写实习报告书。
计算程序框图及流程:
图5曲线测设的程序框图
3.实验原理
根据实验要求,我们查询资料了解到,非对称线性分为完全非对称线性和非对称完整线性两种,而“完全非对称曲线”的含义就是第一缓和曲线和第二缓和曲线起点处的半径为∞,圆半径为R,第一缓和曲线长ls1,第二缓和曲线长为ls2,ls1≠ls2。
所谓“非完整”的含义是第一缓和曲线和第二缓和曲线的起点半径不是∞,而是R1、R2。
我们这次的实习采用坐标法作为放样方法,而坐标法放样线路中线的整个操作过程中,最重要的一步就是计算线路放样点的坐标。
若已知非完整、非对称曲线的一些要素以及缓和曲线起点Q(半径RQ,桩号lQ,坐标(XQ,YQ)),起点的切线坐标方位角αQ,缓和曲线参数A(其中A是回旋线参数),如果要计算缓和曲线段上任一桩号li的坐标,则必须先求算出半径为∞处(即ZH和HZ)的坐标。
令Q点至ZH点的弧长为l1,则:
l1对应的弦长
。
又因为:
所以:
ZH点的切线坐标方位角:
(
取法:
左偏“+”,右偏“-”;ZH换成HZ时,左偏“-”,右偏“+”)
知道ZH点的坐标,又知道ZH点的切线方向,则可以利用第六章介绍的方法计算缓和曲线段上任一桩号li的坐标。
采用任意设站极坐标法测设曲线:
把由直线段、圆曲线段、缓和曲线段组合而成的曲线归算到统一的导线测量坐标系统中,这样就便于计算放样元素。
当设计给定曲线交点JD的坐标(XJD,YJD),ZH与JD连线的方位角A0及ZH点的里程L0和曲线单元的左右偏情况(用i表示,i=-1表示左偏,i=+1表示右偏),那么只要输入曲线上任意一点的里程LP,就可以求出曲线单元上任意一点的设计坐标,有了统一的坐标,即可求出仪器架在导线点或其他任一点上测设曲线的放样元素了。
4.计算过程
1.假定该曲线的已知条件如下:
若Q点为曲线的起点,Q,点为曲线的终点,且Q点的坐标为Q(19787.34,28563.378),中间圆曲线部分的半径R为200m,第一部分缓和曲线的回旋线参数为A1=80,Q点处的半径R1=500m,第二部分缓和曲线的回旋线参数A2=100,Q,点处的半径R2=600m,已知Q点的里程为1000.00m。
计算过程如下:
2.按照图5,编写代码,程序如下:
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
#definePI3.141592653
voidmain()
{charyn;
floatk,PK;
floatR,l,JD,T,L,E,Q,ZH,HY,QZ,YH,HZ,D,Xzh,Yzh,Xjd,Yjd,x,y,X0,Y0,m,X,Y,A,a,jiao,S,Xr,Yr,Xh,Yh;
inti;
printf("请输入已知数据:
k,R,l,i,JD\n");
scanf("%f%f%f%d%f",&k,&R,&l,&i,&JD);
PK=l*180/2/R/PI;
T=l/2-l*l*l/240/R/R+(R+l*l/24/R)*tan(k*PI/360);
L=R*k*PI/180+l;
E=(R+l*l/24/R)/cos(k*PI/360)-R;
Q=2*T-L;printf("\nT=%f\n,\nL=%f\n,\nE=%f\n,\nQ=%f\n",T,L,E,Q);
fflush(stdin);
getchar();
ZH=JD-T;HY=ZH+l;
QZ=HY+(k*PI/180-2*PK*PI/180)*R/2;
YH=HY+(k*PI/180-2*PK*PI/180)*R;
HZ=YH+l;printf("\nZH=%f\n,\nHY=%f\n,\nQZ=%f\n,\nYH=%f\n,\nHZ=%f\n",ZH,HY,QZ,YH,HZ);
fflush(stdin);
getchar();
printf("请输入设计坐标:
Xzh,Yzh,Xjd,Yjd");
scanf("%f%f%f%f",&Xzh,&Yzh,&Xjd,&Yjd);
printf("请输入设站前视点和后视点坐标:
Xr,Yr,Xh,Yh");scanf("%f%f%f%f",&Xr,&Yr,&Xh,&Yh);
do{
printf("请输入曲线上的测设点i的里程:
D");
scanf("%f",&D);
if(D>=ZH&&D{doublee1=Yjd-Yzh;
doublee2=Xjd-Xzh;
doublee3=e1/e2;
A=atan(e3);
if(A>0)A=A;
elseA=A+2*PI;
X0=Xjd+T*cos(A+PI);
Y0=Yjd+T*sin(A+PI);
x=D-ZH-(D-ZH)*(D-ZH)*(D-ZH)*(D-ZH)*(D-ZH)/40/R/R/l/l;
y=(D-ZH)*(D-ZH)*(D-ZH)/6/R/l;
m=(D-ZH)*(D-ZH)/2/R/l;
X=X0+x*cos(A)-i*y*sin(A);Y=Y0+x*sin(A)+i*y*cos(A);
a=A+i*m;
doublev1,v2,v3,v4,d1;
v1=(Y-Yr)/(X-Xr);
v2=atan(v1);
if(v2>0)v2=v2;
else
v2=v2+2*PI;
v3=(Yh-Yr)/(Xh-Xr);
v4=atan(v3);
if(v4>0)v4=v4;
elsev4=v4+2*PI;
jiao=(v2-v4)*180/PI;
d1=(Y-Yr)*(Y-Yr)+(X-Xr)*(X-Xr);
S=sqrt(d1);}
elseif(D>=HY&&D{doublee=(Yjd-Yzh)/(Xjd-Xzh);
A=atan(e);
if(A>0)A=A;
elseA=A+2*PI;
X0=Xjd+T*cos(A+PI);
Y0=Yjd+T*sin(A+PI);x=D-ZH-(D-ZH-0.5*l)*(D-ZH-0.5*l)*(D-ZH-0.5*l)/6/R/R-l*l*l/240/R/R;y=(D-ZH-0.5*l)*(D-ZH-0.5*l)/2/R-(D-ZH-0.5*l)*(D-ZH-0.5*l)*(D-ZH-0.5*l)*(D-ZH-0.5*l)/24/R/R/R+l*l/24/R;
m=(D-ZH-0.5*l)*180/R/PI;X=X0+x*cos(A)-i*y*sin(A);Y=Y0+x*sin(A)+i*y*cos(A);
a=A+i*m;
doublev1,v2,v3,v4,d1;
v1=(Y-Yr)/(X-Xr);
v2=atan(v1);
if(v2>0)v2=v2;
elsev2=v2+2*PI;
v3=(Yh-Yr)/(Xh-Xr);
v4=atan(v3);
if(v4>0)v4=v4;
elsev4=v4+2*PI;
jiao=(v2-v4)*180/PI;
d1=(Y-Yr)*(Y-Yr)+(X-Xr)*(X-Xr);
S=sqrt(d1);}
elseif(D>=YH&&D<=HZ)
{doublee=(Yjd-Yzh)/(Xjd-Xzh);
doubleB=atan(e);
if(B>0)B=B;
elseB=B+2*PI;
A=B+k*PI/180+PI;
X0=Xjd+T*cos(A-PI);
Y0=Yjd+T*sin(A-PI);
x=L-D+ZH-(L-D+ZH)*(L-D+ZH)*(L-D+ZH)*(L-D+ZH)*(L-D+ZH)/40/R/R/l/l;
y=(L-D+ZH)*(L-D+ZH)*
(L-D+ZH)/6/R/l;m=(L-D+ZH)*(L-D+ZH)/2/R/l;X=X0+x*cos(A)+i*y*sin(A);Y=Y0+x*sin(A)-i*y*cos(A);
a=A-i*m;
doublev1,v2,v3,v4,d1;
v1=(Y-Yr)/(X-Xr);
v2=atan(v1);
if(v2>0)v2=v2;
elsev2=v2+2*PI;
v3=(Yh-Yr)/(Xh-Xr);
v4=atan(v3);
if(v4>0)
v4=v4;
else
v4=v4+2*PI;
jiao=(v2-v4)*180/PI;
d1=(Y-Yr)*(Y-Yr)+(X-Xr)*(X-Xr);
S=sqrt(d1);}
doublev1,v2;
v1=(Y-Yzh)/(X-Xzh);printf("\nX=%f\n,\nY=%f\n,\njiao=%f\n,\nS=%f\n",X,Y,jiao,S);
fflush(stdin);
getchar();
printf("继续Y/N");
fflush(stdin);
yn=getchar();}
while(yn=='Y'||yn=='y');}
5.运行结果
运行结果截图如下:
但是里程数只能计算至YH=1091.920m处,因为YH点后的曲线同前半部分的曲线要素不一致,则需重新计算各个要素,才能将所有待放样点的坐标求出。
计算第二缓和曲线要素的步骤如下:
3.将以上各点的数据带入程序中求的缓和曲线2上点的放样参数,因此将各个放样点的数据导出。
需要注意的是:
本程序为任意设站的放样方法,因此全站仪在测量范围以内的话不需要搬站,直接可以将待定点放样得出。
5.小结
所谓非完整、非对称缓和曲线,通俗的说就是曲线由不同半径的曲线依次组成,并且不对称,或者说只是曲线的一部分,此程序大部分代码来源于以前同学,我做了很深入的学习,感觉收获颇多,我自己用VB编写的程序在后边实习部分会有说明,并且电子档已经发给老师。
不管怎么说,又一次的深刻的感觉到了学好一门语言是多么的重要!
第二部分圆曲线和缓和曲线的实地放样
采用偏角法或切线支距法放样一段完整的圆曲线和缓和曲线。
待放样的曲线可选择p169页6.5.3.3算例。
1.实习目的及要求
1.学会曲线要素计算方法;
2.学会编写偏角法、极坐标法对缓和曲线要素计算程序;
3.实地放样非缓和曲线;
4.在实习前预先算出实测数据;
5.各小组做好测设过程的人员安排。
2.前期实习准备和相关安排
2.1实习人员及仪器
组长:
杨威副组长:
张懂庆
组员:
杨永强张文超范龙强赵晨亮子丽天
实习仪器:
全站仪一台,三脚架两个,棱镜两个,卷尺一个
2.2实习内容
1.根据自己设计的软件计算测设要素和主点里程;
2.根据书上P169页的曲线测设程序框图(图5),编写一般缓和曲线的程序,并进行调试和检核;
3.直接根据课本实例,进行相应元素的计算和检核,最后安排具体的实习过程,进行现场曲线放样;
2.3放样元素计算软件设计
2.3.1放样元素计算原理及过程
1.单圆曲线主点元素计算
如图6所示,已知路线中线交点(JD)的偏角为α和圆曲线的半径为R,要计算的圆曲线元素有:
切线长T、曲线长L、外矢距E和切线长度与曲线长度之差(切曲差)q。
各元素按照下式计算。
切线长:
曲线长:
外矢距:
切曲线:
图6偏角法测设圆曲线
2.单圆曲线圆曲线主点里程计算
根据交点的里程和曲线测设元素,就可计算出各主点的里程。
ZY点里程=JD点里程–TQZ点里程=ZY点里程+L
QZ点里程=YZ点里程–L/2JD点里程=QZ点里程+D/2(校核)
3.单圆曲线主点放样步骤:
1)仪器安于JD点,瞄准线路前进方向的后方,沿视线方向量切线长T,即得ZY点;
2)同理瞄准前进方向,在视线上量T可得YZ点;
3)后视YZ(ZY)转拨β=(180º-α)/2,沿视线方向量出E,即得QZ;
4)在ZY(或YZ)上安置仪器,检查∠JDZYYZ是否为α/2,和∠JDZYQZ是否为α/4。
3.带有缓和圆曲线主点测设
有缓和曲线(如图7所示)的主点由原来的三个增加到五个:
ZH(直缓点)、HY(缓圆点)、QZ(曲中点)、YH(圆缓点)、HZ(缓直点)
切线长:
曲线长:
外点:
切曲差:
其中:
α,R—线路转向角和圆曲线半径
l0——缓和曲线长度
m——加设缓和曲线后使切线增加的距离
P——加设缓和曲线后圆曲线相对于切线的内移值
图7偏角法测设缓和曲线
β0——HY点(或YH点)的缓和曲线角度(缓和曲线角,过HY点切线与过ZH点的切线的交角)
缓和曲线偏角
缓和曲线反偏角b0=β0δ0
切垂距
缓和曲线的切线角
圆曲线内移值
4.带有缓和圆曲线主点里程计算:
ZH点里程=JD里程-THY里程=ZH点里程+l0
QZ里程=HY点里程+l/2YH里程=HY里程+l
HZ里程=YH里程+l0JD里程=QZ点里程+q/2(检核用)
5.测设步骤:
1)以R、l0为引数,查表得HY、YH点坐标值x0、y0
2)将仪器置于JD点,沿切线方向量出切线长T得ZH和HZ两点
3)将仪器转动(90°-α/2)量E得QZ点
4)根据x0、y0由JD沿切线方向分别量T-x0得(HY)′、(YH)′点,过该两点作切线的垂线,在线上量出y0,即得HY和YH点。
2.3.2软件设计程序
1.主程序部分
PublicTypeAngle
DegreeAsInteger
MinutesAsInteger
SecondsAsSingle
EndType
PublicTypeDetail
AngAsAngle
pnAsString
EndType
ConstPIAsDouble=3.14159265358979
ConstRoAsDouble=180#*3600#/PI
PublicRAsDouble
PublicAlphaAsDouble
PublicL0AsDouble
PubliccAsInteger
PublicQZAsDouble
PublicJDAsDouble
PublicZHAsDouble
PublicHYAsDouble
PublicYHAsDouble
PublicHZAsDouble
PublicTAsDouble
PublicLAsDouble
PublicEAsDouble
PublicqAsDouble
PublicX0AsDouble
PublicY0AsDouble
PublicDetailH()AsDetail
PublicDetailY()AsDetail
PublicUBAsInteger
PublicBTAsDouble
PublicI0AsDouble
PublicHYBSAsDouble
PublicFunctionRadian(deg,min,sec)AsDouble
DimRadAsDouble
Rad=(deg*360000#+min*6000#+sec*100#)
Rad=Rad/Ro/100
Radian=Rad
EndFunction
PublicFunctionSecToAng(secAsDouble)AsAngle
DimAngAsAngle
Dimdeg_1AsDouble
deg_1=sec/3600#
Ang.Degree=Int(deg_1)
Ang.Minutes=Int((deg_1-Ang.Degree)*60#)
Ang.Seconds=(deg_1-Ang.Degree-Ang.Minutes/60#)*3600#
Ang.Seconds=Format(Ang.Seconds,"0.0000")
SecToAng=Ang
EndFunction
PublicSubSetDetailsValue(details()AsDetail,pnAsString,AngAsDouble)
details(UB).Ang=SecToAng(Ang)
details(UB).pn=pn
EndSub
PublicSubMainPtCalcu()
DimMAsDouble
DimpAsDouble
BT=L0/(2#*R)
M=L0/2#-L0*L0*L0/(240#*R*R)
p=L0*L0/(24#*R)
I0=L0/(6#*R)
T=M+(R+p)*Tan(Alpha/2#)
L=Alpha*R+L0
E=(R+p)/Cos(Alpha/2#)-R
q=2*T-L
X0=L0-L0*L0*L0/(40#*R*R)
Y0=L0*L0/(6#*R)
ZH=JD-T
HY=ZH+L0
QZ=ZH+L/2#
HZ=QZ+L/2#
YH=HZ-L0
EndSub
PublicSubDetailCalcu()
DimiAsInteger
DimjAsDouble
DimkAsInteger
DimiiAsDouble
DimPTmpAsDouble
DimLTmpAsDouble
DimLTmp2AsDouble
DimDeltaAsDouble
DimDelta0AsDouble
DimpnAsDouble
UB=0
j=ZH\100
PTmp=ZH+c
LTmp=c
'缓和曲线计算
WhilePTmpIfPTmp\100>jThen
j=PTmp\100
ReDimPreserveDetailH(UB)
LTmp2=j*100#-ZH
ii=LTmp2*LTmp2*Ro/(6#*R*L0)
SetDetailsValueDetailH(),(UB+1)&""&Format(j*100,"0.00"),ii'百米桩
IfPTmp/100>jThen
UB=UB+1
EndIf
EndIf
ii=LTmp*LTmp*Ro/(6#*R*L0)
pn=PTmp
ReDimPreserveDetailH(UB)
SetDetailsValueDetailH(),(UB+1)&""&Format(pn,"0.00"),ii
PTmp=PTmp+c
LTmp=LTmp+c
UB=UB+1
Wend
LTmp=HY-ZH
ii=LTmp*LTmp*Ro/(6#*R*L0)
ReDimPreserveDetailH(UB)
SetDetailsValueDetailH(),(UB+1)&Format(HY,"0.00"),ii
'圆曲线计算
Delta=c/(2#*R)*Ro
UB=0
PTmp=(PTmp\c)*c
Delta0=(PTmp-HY)*Ro/(2#*R)
HYBS=PI*2#*Ro-(BT*Ro-I0*Ro+Delta0)
pn=PTmp
ReDimPreserveDetailY(UB)
SetDetailsValueDetailY(),(UB+1)&""&Format(pn,"0.00"),0
ii=0
PTmp=PTmp+c
UB=UB+1
WhilePTmpii=ii+Delta
pn=PTmp
ReDimPreserveDetailY(UB)
SetDetailsValueDetailY(),(UB+1)&""&Format(pn,"0.00"),ii
PTmp=PTmp+c
UB=UB+1
Wend
PTmp=(PTmp\c-1)*c
Delta0=(QZ-PTmp)*Ro/(2#*R)
ii=ii+Delta0
ReDimPreserveDetailY(UB)
SetDetailsValueDetailY(),(UB+1)&""&Format