圆曲线主点放样基于c_语言的编程实现.docx
圆曲线主点放样基于c 语言的编程实现徐晓艳肖永东云南能源职业技术学院 , 云南 曲靖 655001摘 要 主要针对解决线路工程测量中经常碰到的圆曲线主点放样采用传统的手工计算标定要素 ,再用传统光学仪器进行放样时计算量较大 ,放样工作繁杂而不灵活这一实际问题进行解决 ,结合现代工程施工放样主要是采用全站仪进行 ,为了能够减轻计算的工作量 ,而 c 语言也是比较易学易用的计算机语言 ,所以将两者的结合应用进行阐述 。关键词 圆曲线 ;主点放样 ;c 语言中图分类号 T P文献标识码 A文章编号 167223198 2008 0820359203无论是采用传统光学仪器放样圆曲线 主点 , 还是采用全站仪放样圆曲线主点 ,圆曲线要素 、圆曲线主点里程均是 必须计算出来的 ,它们的数学模型分别为 I 测站点J D 交点Z Y 直线段公路与曲线段公路的转折点Q Z 圆曲线中点YZ 曲线段公路与直线段公路的转折点曲线转角 实测或已知 R 圆曲线设计半径 已知 下面是圆曲线主点放样要素计算基于 c 语言编程实现的主要源代码 ,考虑到文章的篇幅 ,对于窗口通用的最大 化 、最小化 、关闭的代码就没有再一一列出 。na me sp ace 测量计算器 / / 程序命名空间p ublic p artial cla ss Fo r m1 Fo r mp rivat e void but to n1_Click o bject sender , Event A r gse/ / 主要的计算过程就在这里了/ / 按照计算要求 ,输入各已知量 ,已知量包括 / / 转向角 ,转向方向 , 曲线半径 , 曲 线 主 点 里 程 和 测 站 点坐标 。/ / 首先输入主点里程i nt Di sMile s ;do uble Di sMet er s ;do uble Di st a nce ;Di sMile s Co nvert . To Int 32 t xt mile s. Te xt ;Di sMet er s Co nvert . ToDo uble t xt met er s. Te xt ;Di st ance 1000 3 Di sMile s Di sMet er s ; / / 得到已 知里程/ / 输入角度 ,包括度 、分 、秒 ;i nt dr g 0 , mnt 0 , snd 0 ; dr g i nt . Par se t xt deg. Text ; mnt i nt . Par se t xt mi n . Text ;切线长 T Rt g 2曲线长 L R180 外矢距 E R sec - 1圆曲线要素2切曲差 q 2 T - L圆曲线主点里程计算 ZY 里程 J D 里程 - T YZ 里程 Z Y 里程 LQ Z 里程 YZ 里程 - L 假设 J D 里程已知2J D 里程 Q Z 里程 q 检核2各点平面坐标的计算 li 3li 5x Li - 6 R2 120 R4 Q Z 点 Li L ; YZ 点 Li L 2246y li - Li Li 24 R3 720 R52 R假定我们 在 进 行 圆 曲 线 放 样 时 , 建 立 如 下 坐 标 系 统 图 1 。图 1snd i nt . Par se t xt sec . Text ;val ue XJ D val ue T ;val ue YJ D 0 ;/ / 接下来计算 4 个坐标值 / / 注意 ,在计算 4 个坐标时 , Y 坐标的正负由转向角方 向决定 ,假如向左 , Y 为负 ,否则 ,为正/ / 所以先定义一个这样的标量 i nt lef t O Rri ght ;lef t O Rright lef t . Checked - 1 1 ; / / 判断是否为向 左do uble L Q Z val ueL / 2 ; / / 这是计算的之间量 val ue XQ Z L Q Z - L Q Z 3 L Q Z 3 L Q Z / 6 3 vbanji ng3 vba nji ng Mat h . Pow L Q Z ,5 / 120 3 Mat h. Po w vban2ji ng ,4 ;t xt xqz. Text Mat h. Ro und val ue XQ Z , 3 . To St ri ng ; / / 计算坐标值val ue YQ Z lef t O Rright 3 L Q Z 3 L Q Z / 2 3 vban2ji ng - Mat h. Po w L Q Z ,4 / 24 3 Mat h. Po w vbanji ng ,3 Mat h. Pow L Q Z , 6 / 720 3 Mat h . Po w vba nji ng ,5 ;t xt yqz. Text Mat h . Ro und val ue YQ Z , 3 . To St ri ng ;val ue X YZ val ueL - val ueL 3 val ueL 3 val ueL / 6 3 vba nji ng 3 vbanji ng Mat h . Pow val ueL ,5 / 120 3 Mat h . Pow vbanji ng ,4 ;t xt xyz. Text Mat h. Ro und val ue X YZ , 3 . To St ri ng ;val ue YYZ lef t O Rright 3 val ueL 3 val ueL / 2 3 vba nji ng - Mat h. Pow val ueL , 4 / 24 3 Mat h . Pow vban2 ji ng ,3 Mat h. Po w val ueL ,6 / 720 3 Mat h. Po w vban2 ji ng ,5 ;t xt yyz. Text Mat h . Ro und val ue YYZ , 3 . To St ri ng ;/ / 最后进行各点放样数据的计算 , 主要包括 了 方 位 角 计算/ / ,水平角计算以及三个距离的计算 。/ / 在计算过程中 ,需要判断曲线书左向还是右向 ,因为 方向的不同会导致计算结果的不一样 。/ / 首先定义水平角 A IZY do uble A IZY ;if lef t . CheckedA IZY 270 / 180 . 0 3 Mat h . P I ;el seA IZY 90 / 180 . 0 3 Mat h. P I ;/ / 下面 。根据转向角的方向确定方位角 do uble vbanji ng 曲线半径/ / 角度换成弧度 do uble gr dval ue do uble . Par se t xt r d. Text ; / / 输入 dr g mnt / 60 . 0 snd / 3600 .0 / 180 . 0 3 Mat h. P I ;do uble val ue IX , val ue I Y ;/ / I Y , IX 分别是 I 点的坐标 ,这个坐标一般已经给出do uble val ue T , val ueL , val ue E , val ueq ; / / 表 示 各 曲 线 要素do uble val ue ZY , val ue YZ , val ueQ Z , val ueJ D ; / / 表示各主点里程do uble val ue XQ Z , val ue YQ Z , val ue X YZ , val ue YYZ , val ue XJ D , val ue YJ D ; / / Q Z , YZ ,J D 3 点的坐标val ue IX Co nvert . ToDo uble t xt x . Text ;val ue I Y Co nvert . ToDo uble t xt y. Text ;val ue T vbanji ng 3 Mat h. Ta n gr dval ue/ 2 ;/ / 算出Tt xt T. Te xt Mat h . Ro und val ue T ,3 . To St ri ng ;val ueL gr dval ue 3 vba nji ng ;/ / 算出 L ;t xtL . Text Mat h . Ro und val ueL ,3 . To St ri ng ;val ue E vbanji ng 3 1/ Mat h. Co s gr dval ue/ 2 1 ;/ / 算出 Et xt e . Te xt Mat h. Ro und val ue E ,3 . To St ri ng ;val ueq 2 3 val ue T - val ueL ;/ / 算出 q ;t xt q. Te xt Mat h. Ro und val ueq ,3 . To St ri ng ;/ / 接下来计算各主点里程里程-val ue ZY Di st a nce val ueL - val ueL / 2- val ue T ;val ueq/ 2val ue YZ val ueQ Z val ueJ D val ue ZY val ueL ;val ue YZ - val ueL / 2 ;val ueQ Z val ueq/ 2 ;/ / 定义中间量方便计算转换i nt vzy , vyz , vqz , vj d ;vzy vyz vqzvj d i nt val ue Z Y / i nt val ue YZ / i nt val ueQ Z /1000 ;1000 ;1000 ; i nt val ueJ D / 1000 ;t xtzy1 . Text vzy. To St ri ng ;t xtzy2 . Text Co nvert . To St ri ng Mat h. Ro und val u2e ZY - 1000 3 vzy ,3 ;t xt yz1 . Text vyz. To St ri ng ;t xt yz2 . Text Co nvert . To St ri ng Mat h. Ro und val u2e YZ - 1000 3 vyz ,3 ;t xt qz1 . Text vqz. To St ri ng ;t xt qz2 . Text Co nvert . To St ri ng Mat h. Ro und val2/ / 三个方 位 角 IJ D , IQ Z , I YZ , 分 别 是 I 点 到 J D 、Q Z、YZ 的方位角do ubleIJ D ,IQ Z ,I YZ ;/ / 在确定方位角后 ,就可进行放样要素的计算了 ,这主 要包括 2 个内容 距离 D ,以及夹角/ / 首先求得夹角 B IJ D , IQ Z , I YZ do ubleIJ D ,IQ Z ,I YZ ;ueQ Z - 1000 3 t xtj d1 . Te xt t xtj d2 . Te xtueJ D - 1000 3vqz ,3 ; vj d. To St ri ng ; Co nvert . To St ri ng Mat h. Ro und val2vj d ,3 ;/ / 首先确定 J D 点的坐标 360/ / 假如为左 if lef t . CheckedIJ D 2 3 Mat h . P I -D IJ D Mat h. Sqrt val ue YJ D - val ue I Y 3 val ue YJ D - val ue I Y val ue XJ D - val ue IX 3 val ue XJ D - val ue IX ;D IQ Z Mat h . Sqrt val ue YQ Z - val ue I Y 3 val u2 e YQ Z - val ue I Y val ue XQ Z - val ue IX 3 val ue XQ Z - val ue IX ;D I YZ Mat h . Sqrt val ue YYZ - val ue I Y 3 val ue YYZ- val ue I Y val ue X YZ - val ue IX 3 val ue X YZ - val2ue IX ;Mat h . At a n Mat h . A b s val2ue YJ D - val ue I Y / val ue XJ D - val ue IX ;IQ Z 2 3 Mat h. P I - Mat h . At a n Mat h . A b s val2ue YQ Z - val ue I Y / val ue XQ Z - val ue IX ;I YZ 2 3 Mat h. P I - Mat h . At a n Mat h . A b s val2ue YYZ - val ue I Y / val ue X YZ -IJ D IJ D - IZY ;IQ Z IQ Z - IZY ;I YZ I YZ - IZY ;/ / 假如为右el s ue IX ; Mat h. Ro und D IJ D , 3 . To St ri ngTX TD IJ D. Te xt ;TX TD IQ Z. Text Mat h. Ro und D IQ Z , 3 . To St ri ng ; Mat h. Ro und D I YZ , 3 . To St ri ngTX TD I YZ. Text ;p rivat e st ri ng Co nverti ng do uble jiao / / 转换函数i nt du , f e n , miao ;st ri ng jiao du ;du i nt Mat h . Floo r jiao ;IJ D Mat h . At a n Mat h. A b s val ue YJ Dval2-ue I Y / val ue XJ D - val ue IX ;IQ Z Mat h . At an Mat h . A bs val ue YQ Zue I Y / val ue XQ Z - val ue IX ;I YZ Mat h. At an Mat h. A b s val ue YYZue I Y / val ue X YZ - val ue IX ;-val2val2f en i nt Mat h . Floo r jiao -du 3 60 ;-miao i nt Mat h . Ro und jiao - du 3 60 - Mat h . Floo r jiao - du 3 60 3 60 ,1 ;jiao du Co nvert . To St ri ng du ”“ Co nvert .To St ri ng f e n ”“ Co nvert . To St ri ng miao ” ;ret ur n jiao du ;据此源代码 ,进行窗口设计的最终效果图 如图 2 ,可 供读者进行参考设计 。IJ D IQ Z I YZ - IJ D - IZY ;- IQ Z - IZY ;- I YZ - IZ Y ;/ / 转换成角度 包含度 ,分 ,秒/ / 定义度 ,分 ,秒以及弧度的中间量/ / 利用 Co nverti ng 函数实现角度转变TX TIJ D . Text Co nverti ng IJ D / Mat h. P I 3 180 .0 ;TX TIQ Z. Text180 . 0 ;TX TI YZ. Text180 . 0 ; Co nverti ng IQ Z /Mat h. P I 3 Co nverti ng I YZ /Mat h. P I 3/ / 转换成角度 包含度 ,分 ,秒IJ D IJ D / Mat h. P I 3 180 . 0 ; IQ Z IQ Z / Mat h. P I 3 180 . 0 ; I YZ I YZ / Mat h. P I 3 180 . 0 ;图 2 圆曲线主点要素及放样要素计算器基于 c 语言此源代码可用于施工放样过程中无法在交点或直圆点 安置仪器进行放样的最复杂 的情况 , 无论是曲线左转还是 右转 ,均可通过此程序快速计算出各要素 ,无论是采用全站 仪坐标放样功能进行主点放样还是采用传统光学仪器进行 拨角法放样各主点 ,均可提高作业精度和速度 。同时由于 c 语言易学易用 ,任何一位有编程基础的测绘人员均可参照此思路及框架采用 c 语言进行其他测量功能的实现 。TX TIJ D . Te xtt ri ng ;TX TIQ Z. Te xt t ri ng ;TX TI YZ. Te xt t ri ng ; Co nverti ng IJ D ;/ / IJ D . To S2 Co nverti ng IQ Z ; / /B IQ Z. To S2 Co nverti ng I YZ ;/ / I YZ. To S2/ / 最后 ,计算出点间距离 do uble D IJ D , D IQ Z , D I YZ ;