刘书元
(哈尔滨市龙滨公路勘察设计有限责任公司,黑龙江 哈尔滨 150010)
如图1所示路线由于障碍所限,中线t1与t2实交点及转角无法测定,因此在t1开始转弯处A点和t2转弯结束处B点中间布设N个辅助交点,辅助交点相邻两点互相通视。两中线通过辅助交点1、2、…i、…n连线相互连接,形成多点虚交。实测得各虚交边转角(偏角)分别为I1、I2、…、Ii…、In,实测相邻两虚交点间距分别为L1、L2、…、Li…、Ln-1。
图1 多点虚交曲线示意图
为了建立虚交点与实交点间的几何关系,将路线中线t1、t2向前方延长,其延长线OA、OB在点O处相交得JD(O)。由A点向B点作辅助线,则OA、AB、OB构成以JD(O)为顶点的三角形△OAB。再由虚交点A点向其余虚交点分别作辅助线S1、S2、…Sn,构成若干三角形并共用邻边。同时△AiB与△OAB又共有底边,因此可以根据三角函数关系求得实交点位置和转角。具体步骤为:
(1)由已知虚交边L1、L2及I1,求未知边S1及未知底角α1、β1
(2)再由S1、L2和角I2±β1推算S2、α2、β2;
(3)如此顺序推算直至求得Sn、αn、βn;
(4)在△OAB中,由底边Sn、底角∠A、∠B求得实交点至起讫虚交点距离La、Lb;
(5)计算实交点桩号Kjd及总转角I0。
最后根据路线等级要求和地形、地物条件等控制因素拟定曲线半径R和缓和曲线长度Ls后就可以进行虚交曲线的主点元素计算和曲线测设。从上述解析过程可以看出,虚交点数量增加,计算工作量将大幅增长,计算过程也更加繁琐。因此编制计算机软件,使这一计算过程程序化,就会减掉繁琐的计算工作量,提高野外勘测设计的工作效率。
设ξ为虚交点转角方向系数,当Ii-1转向与总转角I0一致时ξ=1,否则ξ=-1。根据正弦定理及余弦定理,在△i-1Ai中
(1)
(2)
(3)
(4)
(5)
(6)
在△OAB中
(7)
∠B=In+ξβn
(8)
Io=∠A+∠B
(9)
(10)
(11)
(12)
(13)
交点桩号Kjd=KJa+La
(14)
本程序以式(2)、(4)、(6)、(7)、(8)、(9)、(11)、(13)、(14)为数学计算模型进行编制。
程序采用在Windows环境下运行的Visual Basic编程语言编写,Visual Basic是新型的计算机程序设计语言,具有可视化的直观的操作界面,使用方便等特点。
程序设计流程见图2。
图2 程序设计流程图
(1)主要变量
程序中定义的的主要变量有:
字符串变量(String);交点点号JDx、datI、datL等。
整数型变量(Integer):虚交点个数N、系数ξ。
单精度实数变量(Single):虚交元素Li、Ii、Io等。
双精度实数变量(Double)La、Lb、Si、αi、βi等。
(2)自定义常量
定义圆周率π常量:Public Const π=3.141 592 6。
(3)自定义函数
①角度转化弧度函数:
Public Function RAD(D)
RAD=R* π /180
End Function
②弧度转化角度函数:
Public Function DEG(R)
DEG=R*180/π
End Function
(4)主要程序代码
Private Sub Command1_Click()
n=Text1.Text
datI=Text2.Text
datL=Text3.Text
n=Val(n)
Kjda=Val(Text4.Text)
For i=1 To n-2
If I<2 Then
m=InStr(datI,",")
dat1=Left(datI,m-1)
Ii=Val(dat1)
Ii=ANG(Ii)
datI=Mid(datI,m+1)
m=InStr(datL,",")
If m=0 Then
Li=Val(datL)
Text5.Text=Text5.Text & "L" & I & "=" & Li & " m" & vbCrLf
Si=Li
Si_1=Si
Ii_1=Ii
∠A=Ii_1
I=I+1
Ii=Val(datI)
Ii=ANG(Ii)
Text5.Text=Text5.Text & "I" & I & "=" & DMS(Ii)& vbCrLf
∠B=Ii
Io=Ii+Ii_1
GoTo 1000
End If
dat2=Left(datL,m-1)
Li=Val(dat2)
datL=Mid(datL,m+1)
Ii_1=Ii
Li_1=Li
Si_1=Li_1
βi_1=0
Io=Ii_1
∠A=Ii_1
End If
m=InStr(datI,",")
dat1=Left(datI,m-1)
Ii=Val(dat1)
If Ii<0 Then
ξ=-1
Ii=Abs(Ii)
Else
ξ=1
End If
Ii=ANG(Ii)
Io=Io+ξ*Ii
datI=Mid(datI,m+1)
m=InStr(datL,",")
If m=0 Then
Li=Val(datL)
Else
dat2=Left(datL,m-1)
Li=Val(dat2)
datL=Mid(datL,m+1)
End If
Si=Sqr(Si_1 ^ 2+Li ^ 2+2*Si_1*Li*Cos(RAD(Ii+ξ*βi_1)))
αi=ASN(Li/Si*Sin(RAD(Ii+ξ*βi_1)))
αi=DEG(αi)
∠A=∠A+ξ*αi
βi=ASN(Si_1 /Si*Sin(RAD(Ii+ξ*βi_1)))
βi=DEG(βi)
βi_1=βi
Si_1=Si
If I=n-1 Then
Ii=Val(datI)
Ii=ANG(Ii)
Io=Io+Ii
∠B=Ii+ξ*βi
End If
Next i
1000
La=Si_1*Sin(RAD(∠B))/Sin(RAD(Io))
Lb=Si_1*Sin(RAD(∠A))/Sin(RAD(Io))
Kjd=Kjda+La
End Sub
利用文本框控件TextBox输入基本参数虚交点数N、相邻虚交点间距离Li和转向角Ii,实交点点号。数据之间以逗号分隔。Ii以小数形式输入,如15°30′45″输为15.304 5,与总转角方向一致为正,否则为负。
点击确认计算按钮程序进入Command1_Click()
主过程,提取上述文本框内数据,通过Val(String)进行转换给Li、Ii等变量赋值,通过For Next循环语句执行函数运算,计算中间变量Si、αi值,循环结束后,计算实交点至虚交点距离La、Lb及实交点桩号Kjd,最后计算成果在文本框Text5内显示。点击退出按钮后程序弹出文件管理器,选择存储路径和文件名存储数据并退出程序。
某四点虚交曲线,虚交点A桩号为K1+122.38,I1=46°56′43″,I2=29°12′12″,I3=48°02′46″,I4=2°38′59″L1=131.464 m,L2=161.924 m,L3=191.500 m,拟定R=200 m,计算曲线要素及主点桩号。
程序操作:在上部组合框中输入已知数据,点击“确认计算”,在窗体右方显示虚交计算结果。在下部组合框内按要求输入R、Ls,点击确定。
道路曲线测设时会经常遇到多点虚交测设状况,现场手工计算费时费力,很容易出现错误。而本程序可以一次性输入数据,直接计算出各虚交点要素和曲线元素及主点桩号。程序用户界面可视,操作简便,实用性强,大大提高了野外勘测设计的工作效率。