郭有寶
(包頭鐵道職業(yè)技術學院鐵道工程系,內蒙古 包頭 014060)
曲線計算配套驗算軟件開發(fā)的一種思路
郭有寶
(包頭鐵道職業(yè)技術學院鐵道工程系,內蒙古 包頭 014060)
道路中邊樁坐標計算比較復雜,因此在教學實踐過程中有諸多不便。本程序拋棄了復雜的坐標平移轉換公式,利用普通函數計算器計算模式和簡單便捷的VB語言,在日常教學運用過程中,便于學生理解和掌握。
曲線計算;軟件開發(fā);驗算
(1)計算圓曲線曲線要素代碼如下:
dblT = dblR * Tan(dblA / 2)
dblL = dblR * dblA
dblE = dblR * (1 / Cos(dblA) - 1)
dblD = 2 * dblT - dblL
(2)計算圓曲線主點里程,代碼如下:
dblZY = dblJD - dblT
dblYZ = dblZY + dblL
dblQZ = dblYZ - dblL / 2
(3)計算圓曲線主點坐標,代碼如下:
ZYX = JDX + dblT * Cos(aAB + PI)
ZYY = JDY + dblT * Sin(aAB + PI)
YZX = JDX + dblT * Cos(aDC)
YZY = JDY + dblT * Sin(aDC)
在計算中要考慮左偏還是右偏
If txtA.Text > 0 Then ′曲線右偏
QZX = JDX + dblE * Cos(aAB + PI / 2 + dblA / 2)
QZY = JDY + dblE * Sin(aAB + PI / 2 + dblA / 2)
Else ′左偏
QZX = JDX + dblE * Cos(aAB - PI / 2 - dblA / 2)
QZY = JDY + dblE * Sin(aAB - PI / 2 - dblA / 2)
End If
(4)計算指定樁里程的坐標,代碼如下:
If AK < dblZY Then ′判斷A點里程在起點到直圓點之間
AX = ZYX + (dblZY - AK) * Cos(aAB + PI)
AY = ZYY + (dblZY - AK) * Sin(aAB + PI)
ElseIf AK > dblZY And AK < dblYZ Then ′判斷A點里程在圓曲線上
If txtA.Text > 0 Then
RX = JDX + (dblE + dblR) * Cos(aAB + PI / 2 + dblA / 2)
RY = JDY + (dblE + dblR) * Sin(aAB + PI / 2 + dblA / 2)
YJJ = (AK - dblQZ) / dblR
AX = RX + dblR * Cos(aAB - PI / 2 + dblA / 2 + YJJ)
AY = RY + dblR * Sin(aAB - PI / 2 + dblA / 2 + YJJ)
Else
RX = JDX + (dblE + dblR) * Cos(aAB - PI / 2 - dblA / 2)
RY = JDY + (dblE + dblR) * Sin(aAB - PI / 2 - dblA / 2)
YJJ = (AK - dblQZ) / dblR
AX = RX + dblR * Cos(aAB + PI / 2 - dblA / 2 - YJJ)
AY = RY + dblR * Sin(aAB + PI / 2 - dblA / 2 - YJJ)
End If
Else ′判斷A點里程在圓直點到終點之間
AX = YZX + (AK - dblYZ) * Cos(aDC)
AY = YZY + (AK - dblYZ) * Sin(aDC)
End If
計算另一個指定點的路程代碼相近,在此不作介紹。
計算緩加圓曲線常數并輸出,代碼如下
ls = txtL0.Text
bet0 = ls / (2 * dblR)
txtB = HuToDo(bet0)
p = ls * ls / (24 * dblR)
m = ls / 2 - ls^3/ (240 * dblR * dblR)
計算緩加圓曲線要素并輸出,代碼如下:
Th = (dblR + p) * Tan(dblA / 2) + m
ly = dblR * (dblA - 2 * bet0)
Lh = ly + 2 * ls
Eh = (dblR + p) / Cos(dblA / 2) - dblR
Dh = 2 * Th - Lh
計算緩加圓曲線主點里程,代碼如下:
dblZH = dblJD - Th
dblHY = dblZH + ls
dblYH = dblHY + ly
dblHZ = dblYH + ls
dblQZ = dblHZ - Lh / 2
計算緩加圓曲線主點坐標,代碼如下:
ZYX = JDX + Th * Cos(aAB + PI)
ZYY = JDY + Th * Sin(aAB + PI)
YZX = JDX + Th * Cos(aDC)
YZY = JDY + Th * Sin(aDC)
If txtA.Text > 0 Then
QZX = JDX + Eh * Cos(aAB + PI / 2 + dblA / 2)
QZY = JDY + Eh * Sin(aAB + PI / 2 + dblA / 2)
RX = JDX + (Eh + dblR) * Cos(aAB + PI / 2 + dblA / 2)
RY = JDY + (Eh + dblR) * Sin(aAB + PI / 2 + dblA / 2)
YJJ = ly / (2 * dblR)
YHX = RX + dblR * Cos(aAB - PI / 2 + dblA / 2 + YJJ)
YHY = RY + dblR * Sin(aAB - PI / 2 + dblA / 2 + YJJ)
HYX = RX + dblR * Cos(aAB - PI / 2 + dblA / 2 - YJJ)
HYY = RY + dblR * Sin(aAB - PI / 2 + dblA / 2 - YJJ)
Else
QZX = JDX + Eh * Cos(aAB - PI / 2 - dblA / 2)
QZY = JDY + Eh * Sin(aAB - PI / 2 - dblA / 2)
RX = JDX + (Eh + dblR) * Cos(aAB - PI / 2 - dblA / 2)
RY = JDY + (Eh + dblR) * Sin(aAB - PI / 2 - dblA / 2)
YJJ = ly / (2 * dblR)
YHX = RX + dblR * Cos(aAB + PI / 2 - dblA / 2 - YJJ)
YHY = RY + dblR * Sin(aAB + PI / 2 - dblA / 2 - YJJ)
HYX = RX + dblR * Cos(aAB + PI / 2 - dblA / 2 + YJJ)
HYY = RY + dblR * Sin(aAB + PI / 2 - dblA / 2 + YJJ)
End If
計算緩加圓曲線指定中樁坐標,代碼如下:
If AK < dblZH Then ′判斷A點里程在起點到直緩點之間
AX = ZHX + (dblZH - AK) * Cos(aAB + PI)
AY = ZHY + (dblZH - AK) * Sin(aAB + PI)
ElseIf AK > dblZH And AK < dblHY Then ′判斷A點里程在第一緩和曲線上
If txtA.Text > 0 Then
L = (AK - dblZH) - (AK - dblZH) ^ 5 / (90 * dblR * dblR * ls * ls)
A = (AK - dblZH) * (AK - dblZH) / (6 * dblR * ls)
AX = ZHX + L * Cos(aAB + A)
AY = ZHY + L * Sin(aAB + A)
Else
L = (AK - dblZH) - (AK - dblZH) ^ 5 / (90 * dblR * dblR * ls * ls)
A = (AK - dblZH) * (AK - dblZH) / (6 * dblR * ls)
AX = ZHX + L * Cos(aAB - A)
AY = ZHY + L * Sin(aAB - A)
End If
ElseIf AK > dblHY And AK < dblYH Then ′判斷A點里程在圓曲線上
If txtA.Text > 0 Then
RX = JDX + (Eh + dblR) * Cos(aAB + PI / 2 + dblA / 2)
RY = JDY + (Eh + dblR) * Sin(aAB + PI / 2 + dblA / 2)
YJ = (AK - dblQZ) / dblR
AX = RX + dblR * Cos(aAB - PI / 2 + dblA / 2 + YJ)
AY = RY + dblR * Sin(aAB - PI / 2 + dblA / 2 + YJ)
Else
RX = JDX + (Eh + dblR) * Cos(aAB - PI / 2 - dblA / 2)
RY = JDY + (Eh + dblR) * Sin(aAB - PI / 2 - dblA / 2)
YJ = (AK - dblQZ) / dblR
AX = RX + dblR * Cos(aAB + PI / 2 - dblA / 2 - YJ)
AY = RY + dblR * Sin(aAB + PI / 2 - dblA / 2 - YJ)
End If
ElseIf AK > dblYH And AK < dblHZ Then ′判斷A點里程在第二緩和曲線上
If txtA.Text > 0 Then
L = (dblHZ - AK) - (dblHZ - AK) ^ 5 / (90 * dblR * dblR * ls * ls)
A = (dblHZ - AK) * (dblHZ - AK) / (6 * dblR * ls)
AX = HZX + L * Cos(aDC + PI - A)
AY = HZY + L * Sin(aDC + PI - A)
Else
L = (dblHZ - AK) - (dblHZ - AK) ^ 5 / (90 * dblR * dblR * ls * ls)
A = (dblHZ - AK) * (dblHZ - AK) / (6 * dblR * ls)
AX = HZX + L * Cos(aDC + PI + A)
AY = HZY + L * Sin(aDC + PI + A)
End If
Else '判斷A點里程在圓直點到終點之間
AX = HZX + (AK - dblHZ) * Cos(aDC)
AY = HZY + (AK - dblHZ) * Sin(aDC) End If
計算里程B的坐標與計算里程A的坐標相似,在這里不做特殊說明。
[1] 佟彪.VB語言與測量程序設計[M].北京:中國電力出版社.
[2] 王浩.多種緩和曲線線型通用計算模型的編程實現,地下交通工程與工程安全——第五屆中國國際隧道工程研討會文集[Z].國際會議.
[3] 王中偉.卡西歐fx-5800P計算機道路施工放樣程序從入門到精通[M].廣州:華南理工大學出版社.
2016-04-26
郭有寶(1984-),男,黑龍江人,助教,主要從事測繪工程及高職測量教學工作研究。
U412
C
1008-3383(2017)02-0073-03