圆曲线主点放样基于c#语言的编程实现徐晓艳肖永东(云南能源职业技术学院,云南曲靖655001)摘要:主要针对解决线路工程测量中经常碰到的圆曲线主点放样采用传统的手工计算标定要素,再用传统光学仪器进行放样时计算量较大,放样工作繁杂而不灵活这一实际问题进行解决,结合现代工程施工放样主要是采用全站仪进行,为了能够减轻计算的工作量,而c#语言也是比较易学易用的计算机语言,所以将两者的结合应用进行阐述。关键词:圆曲线;主点放样;c#语言中图分类号:TP文献标识码:A文章编号:167223198(2008)0820359203无论是采用传统光学仪器放样圆曲线主点,还是采用全站仪放样圆曲线主点,圆曲线要素、圆曲线主点里程均是必须计算出来的,它们的数学模型分别为:I———测站点JD———交点ZY———直线段公路与曲线段公路的转折点QZ———圆曲线中点YZ———曲线段公路与直线段公路的转折点α———曲线转角(实测或已知)R———圆曲线设计半径(已知)下面是圆曲线主点放样要素计算基于c#语言编程实现的主要源代码,考虑到文章的篇幅,对于窗口通用的最大化、最小化、关闭的代码就没有再一一列出。namespace测量计算器//程序命名空间{publicpartialclassForm1:Form{privatevoidbutton1_Click(objectsender,EventArgse){//主要的计算过程就在这里了//按照计算要求,输入各已知量,已知量包括://转向角,转向方向,曲线半径,曲线主点里程和测站点坐标。//首先输入主点里程intDisMiles;doubleDisMeters;doubleDistance;DisMiles=Convert.ToInt32(txtmiles.Text);DisMeters=Convert.ToDouble(txtmeters.Text);Distance=10003DisMiles+DisMeters;//得到已知里程//输入角度,包括度、分、秒;intdrg=0,mnt=0,snd=0;drg=int.Parse(txtdeg.Text);mnt=int.Parse(txtmin.Text);切线长:T=Rtgα2曲线长:L=π·α·R180外矢距:E=R(secα-1)圆曲线要素2切曲差:q=2T-L圆曲线主点里程计算:ZY里程=JD里程-TYZ里程=ZY里程+LQZ里程=YZ里程-L(假设JD里程已知)2JD里程=QZ里程+q(检核)2各点平面坐标的计算:li3li5x=Li-6R2+120R4(QZ点:Li=L;YZ点:Li=L)2246y=li-Li+Li24R3720R52R假定我们在进行圆曲线放样时,建立如下坐标系统(图1)。图1snd=int.Parse(txtsec.Text);valueXJD=valueT;valueYJD=0;//接下来计算4个坐标值://注意,在计算4个坐标时,Y坐标的正负由转向角方向决定,假如向左,Y为负,否则,为正//所以先定义一个这样的标量:intleftORright;leftORright=left.Checked?-1:1;//判断是否为向左doubleLQZ=valueL/2;//这是计算的之间量!valueXQZ=LQZ-(LQZ3LQZ3LQZ)/(63vbanjing3vbanjing)+Math.Pow(LQZ,5)/(1203Math.Pow(vban2jing,4));txtxqz.Text=Math.Round(valueXQZ,3).ToString();//计算坐标值valueYQZ=leftORright3((LQZ3LQZ)/(23vban2jing)-Math.Pow(LQZ,4)/(243Math.Pow(vbanjing,3))+Math.Pow(LQZ,6)/(7203(Math.Pow(vbanjing,5))));txtyqz.Text=Math.Round(valueYQZ,3).ToString();valueXYZ=valueL-(valueL3valueL3valueL)/(63vbanjing3vbanjing)+Math.Pow(valueL,5)/(1203Math.Pow(vbanjing,4));txtxyz.Text=Math.Round(valueXYZ,3).ToString();valueYYZ=leftORright3((valueL3valueL)/(23vbanjing)-Math.Pow(valueL,4)/(243Math.Pow(vban2jing,3))+Math.Pow(valueL,6)/(7203(Math.Pow(vban2jing,5))));txtyyz.Text=Math.Round(valueYYZ,3).ToString();//最后进行各点放样数据的计算,主要包括了方位角计算//,水平角计算以及三个距离的计算。//在计算过程中,需要判断曲线书左向还是右向,因为方向的不同会导致计算结果的不一样。//首先定义水平角AIZY:doubleAIZY;if(left.Checked)AIZY=(270/180.0)3Math.PI;elseAIZY=(90/180.0)3Math.PI;//下面。根据转向角的方向确定方位角:doublevbanjing=曲线半径//角度换成弧度:doublegrdvalue=double.Parse(txtrd.Text);//输入((drg+mnt/60.0+snd/3600.0)/180.0)3Math.PI;doublevalueIX,valueIY;//IY,IX分别是I点的坐标,这个坐标一般已经给出doublevalueT,valueL,valueE,valueq;//表示各曲线要素doublevalueZY,valueYZ,valueQZ,valueJD;//表示各主点里程doublevalueXQZ,valueYQZ,valueXYZ,val...