基于VB曲线放样程序设计
2015-12-24薛皓然蔡云霞
薛皓然 蔡云霞 古 君
内蒙古自治区第七地质矿产勘查开发院 呼和浩特 010020
基于VB曲线放样程序设计
薛皓然 蔡云霞 古 君
内蒙古自治区第七地质矿产勘查开发院 呼和浩特 010020
本文介绍了基于Visual Basic 6.0语言如何开发计算曲线道路放样数据的软件,该软件计算准确,使用方便,适用性强,大大提高了道路测设工作的效率。
Visual Basic 6.0;曲线;放样数据;计算
一、引言
道路放样数据的计算是线路放样工作的重要环节。传统的计算曲线道路测设数据的方法由于计算量大、易出错、放样方法不灵活等缺点,直接影响到线路工程的效率和质量。为快速有效地完成任务,笔者基于Visual Basic 6.0语言编写了计算曲线道路放样数据的程序,主要就工程中几种常见的曲线,分别对偏角法、切线支距法及坐标法对应放样数据的计算进行了编程实现。
二、设计依据
本文仅以圆曲线为例。如图1所示,圆曲线的切线长T、曲线长L、外矢距E及切曲差,可由已知的半径R与线路偏角α按式(1)计算。圆曲线的主要点里程可由式(2)计算。
图1
图2
圆曲线点偏角值的计算方法如图2所示,偏角Δi和圆心角有以上关系,本设计对曲线起点至任一细部点的弦长Ci及相邻细部点间的弦长cci进行了较精确的计算,避免了因弦弧差而产生的误差累积,因而精度高,且放样灵活。
三、程序源代码
由于程序源代码较多,本文仅以圆曲线的偏角法为例(为节省篇幅,程序源代码中“【换行】”表示代码换行,实际操作中按此规则对应处理即可),对应核心代码如下:
Private Sub Cmdjs_Click()
(1)计算曲线要素及主点里程/保留三位小数
T=p3(R*Tan(αh/2))【换行】L=p3(αh*R)
e=p3(R*(1/(Cos(αh/2))-1))q=p3(2*T-L)
Dim γ As String'放样QZ点时的平分角γ
γ=hdtodfm((pi-αh)/2)【换行】ZY=p3(JD-T)
QZ=p3(ZY+L/2)【换行】YZ=p3(QZ+L/2)
(2)求前半段曲线细部点的偏角偏距(后半段曲线类似)
Print#1,"◎计算结果:":Print#1,"-----------"
Print#1,"点号";Spc(4);"里程";Spc(6);"弦长";Spc(6);"偏角(反拨)";Spc(2);"相邻桩点弦长"
Print#1,Spc(1);"ZY";Spc(2);ZY;Spc(2);"000.000";Spc (3);"000°00′00″"
①判断第一段弧长(即分弦对应的弧长)的值
Dim ys0,xs,ys,xl1 As Double【换行】xs=ZY-Int(ZY)【换行】ys0=Int(ZY)Mod c
ys=ys0+xs【换行】If ys=0 Then【换行】 xl1=c【换行】Else
xl1=c-ys【换行】End If
②计算前半段曲线点的里程及偏角偏距
Dim ψ1,C1,cc1 As Double :Dim ψ0,Δ0,Ci,cci,LCi As Double
Dim Δi As Double :Dim Δid As String
If L/2<=xl1 Then【换行】 Δi=0【换行】ElseIf L/2>xl1 And L/2<=c+xl1 Then
'计算前半段曲线第一个点对应的偏角偏距
ψ1=xl1/R【换行】Δi=ψ1/2【换行】LCi=ZY+xl1
Δid=hdtodfm(pi*2-Δi)'偏角向左时,ZY-QZ段在切线的左侧
ψ0=c/R【换行】Δ0=ψ0/2【换行】C1=p3(2*R*Sin (Δi))
cc1=p3(2*R*Sin(Δi))
Print#1,Spc(2);"*";Spc(3);Format(LCi,"000.000");Spc (3);Format(C1,"000.000");Spc(3);Δid;Spc(3);Format(cc1," 000.000")【换行】ElseIf L/2>c+xl1 Then
'计算前半段曲线第一个点对应的偏角偏距
ψ1=xl1/R【换行】Δi=ψ1/2【换行】LCi=ZY+xl1
Δid=hdtodfm(pi*2-Δi)'偏角向左时,ZY-QZ段在切线的左侧
ψ0=c/R【换行】Δ0=ψ0/2
C1=p3(2*R*Sin(Δi))【换行】cc1=p3(2*R*Sin(Δi))
Print#1,Spc(2);"*";Spc(3);Format(LCi,"000.000");Spc (3);Format(C1,"000.000");Spc(3);Δid;Spc(3);Format(cc1," 000.000")
'循环输出前段曲线上各个细部点的里程、偏角和偏距
Do Until Δi>=αh/4-Δ0
LCi=LCi+c【换行】 Δi=Δi+Δ0
Δid=hdtodfm(pi*2-Δi)'偏角向左时,ZY-QZ段在切线的左侧
Ci=p3(2*R*Sin(Δi))【换行】 cci=p3(2*R* Sin(Δ0))
Print#1,Spc(2);"*";Spc(3);Format(LCi,"000.000"); Spc(3);
Format(Ci,"000.000");Spc(3);Δid;Spc(3);Format(cci, "000.000")
Loop【换行】End If
③输出QZ点的里程、偏角和偏距
Dim CQZ,Δn1,ccn1 As Double :Dim ΔQZ As Double : Dim ΔQZd As String
ΔQZ=αh/4【换行】Δn1=ΔQZ-Δi【换行】ccn1=p3(2 *R*Sin(Δn1))
ΔQZd=hdtodfm(pi*2-ΔQZ)'偏角向左时,ZY-QZ段在切线的左侧
CQZ=p3(2*R*Sin(ΔQZ))
Print#1,Spc(1);"QZ";Spc(3);Format(QZ,"000.000"); Spc(3);Format(CQZ,"000.000");Spc(3);ΔQZd;Spc(3);Format (ccn1,"000.000")
End Sub
四、程序的测试与运行
程序编写完成后,所有曲线类型,均经过多个算例验证测试,结果准确无误。现以圆曲线偏角法的计算为例,过程如下图:
图5 选择曲线类型界面
图6 圆曲线计算界面
图7 运行结果界面
五、结束语
本软件从数据输入、计算、读取及存储各个环节进行有效控制,实现了自动、快速地计算曲线放样数据的功能,结果准确,效率高,适用性强,放样方法灵活,满足当下的道路工程施工要求。
[1]李青岳,陈永奇.工程测量学.第3版.北京∶测绘出版社,2008.
[2]顾孝烈,鲍峰,程效军.测量学.第3版.上海∶同济大学出版社,2006.
[3]朱从旭,严晖,曹岳辉.VB程序设计综合教程.第2版.北京∶清华大学出版社,2009.
[4]戴建军,陈桂珍.应用VB实现中测量中任意点坐标的快速计算.测绘信息与工程.2007,32(2).