ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:173.81KB ,
资源ID:21224102      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21224102.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中南大学土木工程软件课程设计文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中南大学土木工程软件课程设计文档格式.docx

1、 /计算缓直点y坐标的函数double JSHYx(double lo,double R,double fwj,char zyp,double x);/计算缓圆点x坐标的函数double JSHYy(double lo,double R,double fwj,char zyp,double y);/计算缓圆点y坐标的函数double JSYHx(double lo,double R,double fwj,char zyp,double x);/计算圆缓点x坐标的函数double JSYHy(double lo,double R,double fwj,char zyp,double y);/计算

2、圆缓点y坐标的函数void JSQZZB(double x,double y,double fwj,double L,double R,double lo,double m,double p,char zyp,double *qzx,double *qzy); /计算曲中点坐标的函数void JSZZZB(double LC,int i,double *zbx,double *zby); /里程转坐标的函数1.1.2 编程流程图1.1.3 定义交点数据结构体本文将交点的数据存储于结构体中,结构体的定义如下:struct JDDATAdouble x; /交点的x坐标double y;/交点的y

3、坐标double R;/交点的半径double lo;/交点的缓长double fwj;/交点到下一个交点连线的方位角double p;/交点的内移距double m;/交点的切垂距char zyp;/交点的左右偏(左偏记为L,右偏记为R)double alpha;/交点的double T;/交点的切线长double L;/交点的曲线长double E;/交点的外矢距double KZH;/交点的直缓点里程double KHY;/交点的缓圆点里程double KYH;/交点的圆缓点里程double KHZ;/交点的缓直点里程double KQZ;/交点的曲中点里程double ZHx;/直缓点

4、的x坐标double ZHy;/直缓点的y坐标double HZx;/缓直点的x坐标double HZy;/缓直点的y坐标double HYx;/缓圆点的x坐标double HYy;/缓圆点的y坐标double YHx;/圆缓点的x坐标double YHy;/圆缓点的y坐标double QZx;/曲中点的x坐标double QZy;/曲中点的y坐标jd20;设计线路中有数个交点,故把每个交点的数据存储于结构体数组中,每个个体又包含如上列举的共性属性。本程序是用的是一个静态数组jd20,考虑到交点数据不是很多,故把容量暂定为20个,但是较有局限性,需要根据实际情况反复地改写程序。期望的改进方法是

5、使用动态数组或者是Carray,使得程序能够随着实际情况动态的提供数组容量,以节省需要的内存空间,但是现下能力有限,在尝试的过程中程序报错,不知如何修改,所以最终还是选用了静态数组。1.1.4 交点数据的读入以本选题所设计的昌吉赣客专横岗江家段线路为例,将交点数据存储在”JD.data.txt”中,如图:第一行的数据代表的是起始点的里程,以下每行的数据分别代表的是各个交点的纬度坐标、经度坐标、圆曲线长度、缓和曲线长度。利用文件流将数据读入。ifstream input;input.open(JDdata.txt); if (input.fail() /判断文件读取是否正常 coutjd0.KZ

6、H;int i=0;while (!input.eof()jdi.xjdi.yjdi.Rjdi.lo; /将交点数据存放于结构体中 i+;共检测到i0)fwj=0;else if (dx0&fwj=atan(dx/dy)*180/PI;dy=0)fwj=90;dyfwj=atan(dx/dy)*180/PI+180;else if (dx=0&fwj=180;else if (dxfwj=270;fwj=atan(dx/dy)*180/PI+360;return fwj;计算方位角函数的调用:for (int n=0;ni-1;n+)jdn.fwj=JSFWJ(jdn.x,jdn.y,jdn+

7、1.x,jdn+1.y);利用循环语句将交点的方位角都计算了出来。此外,本文中默认的一个交点的方位角是该交点到下一个交点连线的方位角。(2)转向角转向角是相邻两个方位角之差,并取绝对值。计算转向角函数的定义:double JSalpha(double fwj1,double fwj2)if (fabs(fwj2-fwj1)180) alpha=fabs(fwj2-fwj1);else alpha=360-fabs(fwj2-fwj1);return alpha;计算转向角函数的调用:jdcount.alpha=JSalpha(jdcount-1.fwj,jdcount.fwj);其中count

8、是循环语句的计数器,以下内容的计算都用到的循环的思想,在下文就不再赘述。(3)判断左右偏一般来说,但是若前方位角角度较小,接近0度,后方位角较大,接近360度,虽然后方位角大于前方位角,但实际偏转应当是左偏。所以本文中对这一情况进行了判断,由于本文是实际线路为例,考虑到实际线路转角偏转不会太大,故以180度为判断界限,若差值小于180,则按正常计算方法进行计算;若差值大于180,则应认为是出现了上述的特殊情况,则不能按一般情况进行计算判断左右偏函数的定义:char JSZYP(double fwj1,double fwj2)char turn;if (abs(fwj2-fwj1)fwj1)tu

9、rn=R;else turn=Lif(fwj2return turn;判断左右偏函数的调用:jdcount.zyp=JSZYP(jdcount-1.fwj,jdcount.fwj);(4)曲线要素根据实际情况,选定线路的交点,在符合规范的条件下,选定合适的半径和缓和曲线长度,根据以下公式进行计算:(4-2)(4-3)(4-4)(4-5)(4-6)(4-7)式中:p为内移距,m为切垂距,为缓和曲线角,T为切线长,L为曲线长,E为内移距。特征点里程的计算:ZH点里程为上一点HZ点里程加两个交点的距离减去两个交点的切线长。(其中交点0的HZ点里程按起始点里程算,切线长认为是0)HY点里程=ZH(里程

10、)+YH点里程= ZH(里程)+-HZ点里程= ZH(里程)+QZ点里程= ZH(里程)+2;曲线要素计算的部分,程序内容比较简单,就是定义一个函数,然后在主函数中调用它,得到需要的结果。详细程序请参见附录。1.1.6 逐桩坐标的计算这里的逐桩坐标的计算,其实就是给出任意点的里程,要能计算出这个点的坐标。由于整条线路比较长,故选10米为一个点,也就是计算10米桩的坐标。大致的思路是这样的:一、得到一个点的里程,判断它落在哪一部分的曲线上(直线、圆曲线还是缓和曲线),不同的曲线部分计算的方法有所不同;二、计算得到局部坐标。三、利用坐标转换原理得到整体坐标。在直线段部分,坐标的计算比较简单,利用方

11、位角和里程差就能轻松求得。在缓和曲线段和圆曲线段,需要用到切线支距法,以夹直线所在直线为x轴,垂直夹直线所在直线的直线为y轴计算公式:(1)缓和曲线部分(4-8)(4-9)(2)圆曲线部分(4-10)(4-11)(4-12)相应的,后缓和曲线则以HZ点为坐标原点用切线支距法进行计算。(3)局部坐标转换为整体坐标转换公式如下:(4-13)需要注意的是,由于左偏还是右偏对局部坐标的计算是有影响的,所以在计算前应根据不同的左右偏情况分情况进行讨论计算,再根据具体的情况判断局部坐标系下x,y的正负,保证计算的正确。(4)逐桩坐标数据结构struct randompointdouble LC;point

12、4000;这里用到的也是结构体的思想,把任意点的x坐标,y坐标和里程都放到结构体里面去。逐桩坐标计算程序定义如下:void JSZZZB(double LC,int i,double *zbx,double *zby)for (int count2=1;count2=jdcount2-1.KHZ&LC=jdcount2.KZH&=jdcount2.KHY) /前缓段double l=LC-jdcount2.KZH;double hyx=l-pow(l,5)/40/pow(jdcount2.R,2)/pow(jdcount2.lo,2);double hyy;if (jdcount2.zyp=)

13、hyy=pow(l,3)/6/jdcount2.R/jdcount2.lo;elsehyy=-pow(l,3)/6/jdcount2.R/jdcount2.lo;*zbx=jdcount2.ZHx+hyx*sin(jdcount2-1.fwj*PI/180)-hyy*cos(jdcount2-1.fwj*PI/180);*zby=jdcount2.ZHy+hyx*cos(jdcount2-1.fwj*PI/180)+hyy*sin(jdcount2-1.fwj*PI/180);=jdcount2.KHY&jdcount2.KYH)/圆曲线段 double Qalfa=(l-jdcount2.l

14、o)*180/PI/jdcount2.R+jdcount2.lo*180/2/PI/jdcount2.R; double qx=jdcount2.R*sin(Qalfa*PI/180)+jdcount2.m;double qy;qy=jdcount2.R*(1-cos(Qalfa*PI/180)+jdcount2.p;qy=-(jdcount2.R*(1-cos(Qalfa*PI/180)+jdcount2.p); *zbx=jdcount2.ZHx+qx*sin(jdcount2-1.fwj*PI/180)-qy*cos(jdcount2-1.fwj*PI/180);*zby=jdcount

15、2.ZHy+qx*cos(jdcount2-1.fwj*PI/180)+qy*sin(jdcount2-1.fwj*PI/180);=jdcount2.KYH&jdcount2.KHZ)/后缓段double l=jdcount2.KHZ-LC;double yhx=-(l-pow(l,5)/40/pow(jdcount2.R,2)/pow(jdcount2.lo,2);double yhy;yhy=pow(l,3)/6/jdcount2.R/jdcount2.lo;yhy=-pow(l,3)/6/jdcount2.R/jdcount2.lo; *zbx=jdcount2.HZx+yhx*sin

16、(jdcount2.fwj*PI/180)-yhy*cos(jdcount2.fwj*PI/180); *zby=jdcount2.HZy+yhx*cos(jdcount2.fwj*PI/180)+yhy*sin(jdcount2.fwj*PI/180); break;函数的调用如下:int num=jdi-1.KZH/10;(计算每10米一个点的总点位数)for (int j=0;jnum;j+)pointj.LC=jd0.KZH+10*j;JSZZZB(pointj.LC,i,&pointj.x,&pointj.y);这样就把每10米一个点的坐标给求出来了。1.1.7 特征点坐标特征点坐标

17、的计算同逐桩坐标点坐标的计算相同,只是将任意的里程替代为特征点的里程,用到的方法都是一样的,这里也就不一一赘述了。计算数据的输出这里依旧是用文件流的方法,将计算得到的数据读出到result.txt。output.open(for (int count1=1;count1count1+)int k1,k3,k5,k7;double k2,k4,k6,k8;k1=jdcount1.KZH/1000;k2=jdcount1.KZH-k1*1000;k3=jdcount1.KHY/1000;k4=jdcount1.KHY-k3*1000;k5=jdcount1.KYH/1000;k6=jdcount1

18、.KYH-k5*1000;k7=jdcount1.KHZ/1000;k8=jdcount1.KHZ-k7*1000;outputalpha=jdcount1.alpha T=jdcount1.TL=jdcount1.L直缓点里程=Kk1+k2缓圆点里程=k3k4圆缓点里程=k5k6缓直点里程=k7k8 /输出特征点的里程 output直缓点x坐标=jdcount1.ZHx直缓点y坐标=jdcount1.ZHy缓圆点x坐标=jdcount1.HYx缓圆点y坐标=jdcount1.HYy圆缓点x坐标=jdcount1.YHx圆缓点y坐标=jdcount1.YHy缓直点x坐标=jdcount1.HZ

19、x缓直点y坐标=jdcount1.HZy /输出特征点坐标jdi-1.KZH=jdi-2.KHZ+sqrt(jdi-1.x-jdi-2.x)*(jdi-1.x-jdi-2.x)+(jdi-1.y-jdi-2.y)*(jdi-1.y-jdi-2.y);int k1;int k2;任意点里程setw(10)x坐标setw(20)y坐标k1=pointj.LC/1000;k2=pointj.LC-k1*1000;pointj.xsetw(15)pointj.y /输出逐桩里程及坐标output.close();如下图所示,就是程序运行后输出文件”result.txt”的结果显示曲线要素计算程序代码#include fstreamstdlib.hcmathiomanipusing namespace std;const double PI=3.14159;/声明计算方位角的函数/声明计算内移距p的函数/声明计算切垂距m的函数/声明判断左右偏函数/声明计算的函数/声明计算切线长的函数/声明计算曲线长的函数/声明计算外矢距的函数double JSKZH(double K,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1