导线法布设卵形曲线的计算方法
- 格式:pdf
- 大小:155.56 KB
- 文档页数:4
基本型曲线及卵形回旋线的中(边)桩坐标、方位角计算基本型曲线一、 基本型曲线的特征在平面线型中有多种多样的曲线形式,由直线—缓和曲线—圆曲线—缓和曲线—直线形式构成的曲线称为基本型曲线。
特征:1、几何特征,基本型曲线中的缓和曲线起始于直线段,终于圆曲线,即 R ρ=∞→。
2、线形特征,缓和曲线段有始有终,具有完整性。
二、 基本参数方程(切支距方程)1、 缓和曲线段:1432222(1)2)!2(43)()n n n s L n RL ----- 1412121(1)1)!2(41)()n n n n s L n RL +----- β=sRL L 22π180(缓和曲线上某点切线方位角)注:笔者给出了按级数展开式的通式,小半径曲线可取至第7项;把β列入参数方程之一,为后续求算边桩用;:L 某点到ZH 或HZ 点的曲线长。
2、 圆曲线段:sin x R q ϕ=+ (1cos )y R p ϕ=-+RL =ϕπ1800β+注:0β:缓和曲线方位角,001802Ls R βπ=;q :切线增长量; p :圆曲线内移值;L : 某点至HY 或YH 点的曲线长;ϕ:其实为圆曲线上某点的切线方位角(读者可自己证明)。
三、 坐标及切线方位角计算1、 第一缓和曲线段上的中(边)桩坐标、切线方位角计算 中桩:第一缓和曲线包括ZH —YH 段,先算出切线支距坐标x 、y ,然后通过坐标转换公式转换为大地测量坐标X 、Y 。
公式为:cos sin sin cos ZH ZH X X A A x Y Y A A y -⎡⎤⎡⎤⎡⎤⎡⎤=+⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦ 注:当曲线为左转角时,以y y =-代入计算。
A 为上一交点(角桩)至曲线交点的导线坐标方位角或ZH 点切线方位角;ZH X 为ZH 点横坐标; ZH Y 为ZH 点纵坐标。
()cos ()sin ZH JD H ZH JD H X X S T A Y Y S T A =+-⎫⎪⎬=+-⎪⎭注:JD X 、JD Y 分别为上一交点的横、纵坐标; S 为上一交点至曲线交点的边长; H T 为曲线的切线长边桩:任意中桩之边桩(法线)坐标为:cos(90)sin(90)X X D Y Y D αα⎧=+-⎪⎨=+-⎪⎩左左cos(90)sin(90)X X D Y Y D αα⎧=++⎪⎨=++⎪⎩右右 注:X 、Y 分别为中桩横、纵坐标;D 为中桩至边桩之距离; α为中桩之切线方位角。
卵形曲线计算原理一、概念卵形曲线:是指在两半径不等的同向圆曲线间插入一段缓和曲线。
也就是说:卵形曲线本身是缓和曲线的一段,只是在插入时去掉了靠近半径无穷大方向的一段,而非是一条完整的缓和曲线。
二、卵形曲线坐标计算原理根据已知的设计参数,求出包括卵形曲线的完整缓和曲线的相关参数和曲线要素,再按缓和曲线坐标计算的方法来计算卵形曲线上任意点上的坐标。
三、坐标计算以雅(安)至攀(枝花)高速公路A合同段(西昌西宁)立交区A匝道一卵形曲线为例,见图一:(图一)已知相关设计数据见下表:1、缓和曲线(卵形曲线)参数计算A1==59.161卵形曲线参数:A2=(HY2-YH1)×R1(小半径)×R2(大半径)÷(R2-R1)=(271.881-223.715)×50×75÷(75-50)= 7224.900A2==84.999A3==67.0822.卵形曲线所在缓和曲线要素计算卵形曲线长度LF由已知条件知:LF=HY2-YH1=271.881-223.715=48.166卵形曲线作为缓和曲线的一段,因此先求出整条缓和曲线的长度LS,由此找出HZ'点的桩号及坐标(实际上不存在,只是作为卵形曲线辅助计算用)LM=LS(YH1至HZ'的弧长)=A2÷R1=7224.900÷50=144.498∴HZ'桩号=YH1+LM=223.715+144.498=368.213LE=HY2至HZ'的弧长=A2÷R2=7224.900÷75=96.332或LE= LM-LF=144.498-48.166=96.332卵形曲线长度LF=LM-LE=144.498-96.332=48.166(校核)HY2=HZ'-LE=368.213-96.332=271.881(校核)由上说明计算正确3.HZ'点坐标计算(见图二)(图二)①用缓和曲线切线支距公式计算,缓和曲线切线支距公式通式:Xn=[(-1)n+1×L4n–3]÷[(2n-2)!×22n–2×(4n-3)×(RLs)2n–2]Yn=[(-1)n+1×L4n–1]÷[(2n-1)!×22n–1×(4n-1)×(RLs)2n–1]公式中符号含义:n —项数序号(1、2、3、……n)!—阶乘R —圆曲线半径Ls —缓和曲线长②现取公式前6项计算(有关书籍中一般为2-3项,不能满足小半径的缓和曲线计算精度要求,如本例中AK0+090~AK0+160段缓和曲线,如AK0+160中桩坐标带2项算误差达8cm),公式如下:X=L-L5÷[40(RLS)2]+L9÷[3456(RLS)4]–L13÷[599040(RLS)6]+L17÷[175472640(RLS)8]- L21÷[7.80337152×1010(RLS)10] (公式1)Y=L3÷[6(RLS)] - L7÷[336(RLS)3]+L11÷[42240(RLS)5] - L15÷[9676800(RLS)7]+L19÷[3530096640(RLS)9] - L23÷[1.8802409472×1012(RLS)11] (公式2)公式中L为计算点至ZH'或HZ'的弧长HZ':AK0+368.213的坐标从YH1:AK0+223.715推算,L=LS=HZ'-YH1=368.213-223.715=144.498将L=LS 代入公式(1)、(2)得:X=117.1072 Y=59.8839L对应弦长C=√(X2+Y2)=131.5301偏角a1=arctg(Y÷X)=27°05’00.2”* 偏角计算用反正切公式,不要用其它公式。
卵形曲线坐标计算方法一、概念卵形曲线:是指在两半径不等的圆曲线间插入一段缓和曲线。
也就是说:卵形曲线本身是缓和曲线的一段,只是在插入时去掉了靠近半径无穷大方向的一段,而非是一条完整的缓和曲线。
二、卵形曲线坐标计算原理根据已知的设计参数,求出包括卵形曲线的完整缓和曲线的相关参数和曲线要素,再按缓和曲线坐标计算的方法来计算卵形曲线上任意点上的坐标。
三、坐标计算以雅(安)至攀(枝花)高速公路A合同段(西昌西宁)立交区A匝道一卵形曲线为例,见图一:(图一)已知相关设计数据见下表:主点桩号坐标(m)切线方位角(θ)X Y ° ’ ”ZHAK0+090 9987.403 10059.378 92 17 26.2HY1AK0+160 9968.981 10125.341 132 23 51.6YH1AK0+223.715 9910.603 10136.791 205 24 33.6HY2AK0+271.881 9880.438 10100.904 251 24 18.5YH2AK0+384.032 9922.316 10007.909 337 04 54.2HZAK0+444.032 9981.363 10000.000 0 00 001、缓和曲线(卵形曲线)参数计算A1= =59.161卵形曲线参数:A2=(HY2-YH1)×R1(小半径)×R2(大半径)÷(R2-R1)=(271.881-223.715)×50×75÷(75-50)= 7224.900A2= =84.999A3= =67.0822.卵形曲线所在缓和曲线要素计算卵形曲线长度LF由已知条件知:LF=HY2-YH1=271.881-223.715=48.166卵形曲线作为缓和曲线的一段,因此先求出整条缓和曲线的长度LS,由此找出HZ'点的桩号及坐标(实际上不存在,只是作为卵形曲线辅助计算用)LM=LS(YH1至HZ'的弧长)=A2÷R1=7224.900÷50=144.498∴HZ'桩号=YH1+LM=223.715+144.498=368.213LE=HY2至HZ'的弧长=A2÷R2=7224.900÷75=96.332或LE= LM-LF=144.498-48.166=96.332卵形曲线长度LF=LM-LE=144.498-96.332=48.166(校核)HY2=HZ'-LE=368.213-96.332=271.881(校核)由上说明计算正确3.HZ'点坐标计算(见图二)(图二)①用缓和曲线切线支距公式计算,缓和曲线切线支距公式通式:Xn=[(-1)n+1×L4n–3]÷[(2n-2)!×22n–2×(4n-3)×(RLs)2n–2]Yn=[(-1)n+1×L4n–1]÷[(2n-1)!×22n–1×(4n-1)×(RLs)2n–1]公式中符号含义:n —项数序号(1、2、3、……n)!—阶乘R —圆曲线半径Ls —缓和曲线长②现取公式前6项计算(有关书籍中一般为2-3项,不能满足小半径的缓和曲线计算精度要求,如本例中AK0+090~AK0+160段缓和曲线,如AK0+160中桩坐标带2项算误差达8cm),公式如下:X=L-L5÷[40(RLS)2]+L9÷[3456(RLS)4]–L13÷[599040(RLS)6]+L17÷[175472640(RLS)8]- L21÷[7.80337152×1010(RLS)10] (公式1)Y=L3÷[6(RLS)] - L7÷[336(RLS)3]+L11÷[42240(RLS)5] - L15÷[9676800(RLS)7]+L19÷[3530096640(RLS)9] - L23÷[1.8802409472×1012(RLS)11] (公式2)公式中L为计算点至ZH'或HZ'的弧长HZ':AK0+368.213的坐标从YH1:AK0+223.715推算,L=LS=HZ'-YH1=368.213-223.715=144.498将L=LS 代入公式(1)、(2)得:X=117.1072 Y=59.8839L对应弦长C=√(X2+Y2)=131.5301偏角a1=arctg(Y÷X)=27°05’00.2”* 偏角计算用反正切公式,不要用其它公式。
5800卵形曲线坐标计算歪哥收集整理50卵形曲线辅助点计算(即完整缓和曲线起点的支距)解算步骤卵形曲线:是指在两半径不等的圆曲线间插入一段缓和曲线。
也就是说:卵形曲线本身是缓和曲线的一段,只是在插入时去掉了靠近半径无穷大方向的一段,而非是一条完整的缓和曲线,计算前只需要把不完整的缓和曲线(也就是卵型曲线)补充完整即可。
在计算小半径的缓和曲线或卵形曲线坐标时,由于切线支距公式取项少而造成计算精度低,现有书中一般介绍也就只有2~4项,为提高计算精度就需要将支距公式多展开几项。
以下计算卵型曲线的完整缓和曲线长支距模型:重在学习掌握解算流程,现在空间里有更好的计算程序。
曲线参数A2=LS×R1×R2÷(R2-R1)=卵形曲线长×小半径×大半径÷(大半径-小半径)在同一段回旋线内,它的参数永远是不变的。
LS=卵型曲线长. (已知)完整缓和曲线长L= A2÷R1=曲线参数÷小半径当L=LS时:代入完整缓和曲线切线支距公式:(式中R均为小半径R1)E=L-L5÷[40(RLS)2]+L9÷[3456(RLS)4]–L13÷[599040(RLS)6]+L17÷[175472640(RLS)8]- L21÷[7.80337152×1010(RLS)10]F=L3÷[6(RLS)] - L7÷[336(RLS)3]+L11÷[42240(RLS)5] - L15÷[9676800(RLS)7]+L19÷[3530096640(RLS)9] - L23÷[1.8802409472×1012(RLS)11] 完整缓和曲线切线角(即两切线交角)L所对应玄长C=√(E2+F2)大半径处偏角P1=tan- 1(F2÷E2)小半径处偏角P3=180- P1-(180- p2)O=小半径处切线方位角(已知)小半径处至完整缓和曲线起点方位角Q=O±P3 (右向取+号;左向取-号)完整缓和曲线(起点)坐标:X=A+CcosQY=B=CsihQ完整缓和曲线(起点)处切线方位角:O=Q+180±p2 (右向取+号;左向取-号)以起点为基点用回旋线编程计算卵型曲线上任意桩号的中边桩点位坐标。
一、概念卵形曲线:是指在两半径不等的圆曲线间插入一段缓和曲线。
也就是说:卵形曲线本身是缓和曲线的一段,只是在插入时去掉了靠近半径无穷大方向的一段,而非是一条完整的缓和曲线。
二、卵形曲线坐标计算原理根据已知的设计参数,求出包括卵形曲线的完整缓和曲线的相关参数和曲线要素,再按缓和曲线坐标计算的方法来计算卵形曲线上任意点上的坐标。
三、坐标计算以雅(安)至攀(枝花)高速公路A合同段(西昌西宁)立交区A匝道一卵形曲线为例,见图一:(图一)已知相关设计数据见下表:1、缓和曲线(卵形曲线)参数计算A1==59.161卵形曲线参数:A2=(HY2-YH1)×R1(小半径)×R2(大半径)÷(R2-R1)=(271.881-223.715)×50×75÷(75-50)= 7224.900A2==84.999A3==67.0822.卵形曲线所在缓和曲线要素计算卵形曲线长度LF 由已知条件知:LF=HY2-YH1=271.881-223.715=48.166卵形曲线作为缓和曲线的一段,因此先求出整条缓和曲线的长度LS,由此找出HZ'点的桩号及坐标(实际上不存在,只是作为卵形曲线辅助计算用)L M =LS(YH1至HZ'的弧长)=A2÷R1 =7224.900÷50=144.498∴HZ'桩号=YH1+LM=223.715+144.498=368.213LE=HY2至HZ'的弧长=A2÷R2=7224.900÷75=96.332或LE = LM-LF=144.498-48.166=96.332卵形曲线长度LF =LM-LE=144.498-96.332=48.166(校核)HY2=HZ'-LE=368.213-96.332=271.881(校核)由上说明计算正确3.HZ'点坐标计算(见图二)(图二)①用缓和曲线切线支距公式计算,缓和曲线切线支距公式通式:Xn=[(-1)n+1×L4n–3]÷[(2n-2)!×22n–2×(4n-3)×(RLs)2n–2]Yn=[(-1)n+1×L4n–1]÷[(2n-1)!×22n–1×(4n-1)×(RLs)2n–1]公式中符号含义:n —项数序号(1、2、3、……n)!—阶乘R —圆曲线半径Ls —缓和曲线长②现取公式前6项计算(有关书籍中一般为2-3项,不能满足小半径的缓和曲线计算精度要求,如本例中AK0+090~AK0+160段缓和曲线,如AK0+160中桩坐标带2项算误差达8cm),公式如下:X=L-L5÷[40(RLS )2]+L9÷[3456(RLS)4]–L13÷[599040(RLS)6]+L17÷[175472640(RLS )8]- L21÷[7.80337152×1010(RLS)10] (公式1)Y=L3÷[6(RLS )] - L7÷[336(RLS)3]+L11÷[42240(RLS)5] - L15÷[9676800(RLS )7]+L19÷[3530096640(RLS)9] - L23÷[1.8802409472×1012(RLS)11] (公式2)公式中L为计算点至ZH'或HZ'的弧长HZ':AK0+368.213的坐标从YH1:AK0+223.715推算,L=LS=HZ'-YH1=368.213-223.715=144.498将L=LS代入公式(1)、(2)得:X=117.1072 Y=59.8839L对应弦长C=√(X2+Y2)=131.5301偏角a1=arctg(Y÷X)=27°05’00.2”* 偏角计算用反正切公式,不要用其它公式。
卵曲线计算如图1所示,卵曲线的两个圆曲线的半径分别为R1、R2,两端所加的缓和曲线长分别为Ls1、Ls2,中间缓和曲线长为Lf ,线路转向角为α1+α2、交点为C ,曲线主点:直缓1点:ZH1、缓1圆1点:H1Y1、圆1缓2点:Y1H2、缓2圆2点:H2Y2、圆2缓3点:Y2H3、缓3直点:H3Z 。
图1计算缓和曲线参数: 圆曲线内移量: P1= Ls1224∗R1 P2=Ls2224∗R2切垂距: m1=Ls12- Ls13240∗R12m1=Ls22- Ls23240∗R22缓和曲线切线角:β1=Ls12∗R1∗ρ β1=Ls22∗R2∗ρ 其中: ρ=180゜π βs1=Ls12∗R1∗ρ βs1=Ls22∗R2∗ρ其中: ρ=180゜π计算曲线要素:t1=t2=(R1+P1)*tan α12t3=t4=(R2+P2)*tanα22AB=t2+t3 AC=AB∗sin α2sin (α1+α2)BC=AB∗sin α1sin (α1+α2)切线长:T1=t1+AC+m1 T2=t4+BC+m2 曲线长:L=Ls1+Ls2+Lf+α1−β1−βs1ρR1+α2−β2−βs2ρR2图2如图2在缓和曲线 ZH'-E-F 中:l=cRLf=lF-lE lE=cR1lF=cR2其中c 为缓和曲线半径变更率所以: c=Lf∗R1∗R2R1−R2lE=Lf∗R2R1−R2lF=Lf∗R1R1−R2在坐标系X4-ZH'-Y4中 X4E= lE −lE 540∗R22∗lF 2Y4E=lE 36∗R2∗lF−lE 7336∗lF ∗R2 α4=lE 26∗cX4i= li −li 540∗R22∗lF 2Y4i=li 36∗R2∗lF−li 7336∗lF ∗R2其中li=Ki-KE+lE , Ki>KE 。
Ki 、KE 分别为i 点和E 点的里程 将坐标系X4-ZH'-Y4中的X4i 、Y4i 转换到坐标系X3-E-Y3中 [X3i Y3i ]=[cos (−α4 ) −sin (−α4)sin (−α4) cos (−α4)]∗[X4i Y4i ]+[X4EY4E ] X3i 、Y3i 近似值算法: li0=Ki-KE δ=(3∗lE+li0)∗li06∗cX3i ≈li0*cos δ Y3i ≈li0*sin δ将坐标系X3-E-Y3中的X3i 、Y3i 转换到坐标系X1-ZH1-Y1中 X1E=m1+R1*sin(β1+LE−Ls1R1∗ρ)Y1E=P1+R1*(1-cos (β1+LE−Ls1R1∗ρ))其中 LE=KE-KZH1,KE 、KZH1分别为E点和ZH1点的里程 α3=α1-βs1[X1i Y1i ]=[cos (α3 ) −sin (α3)sin (α3) cos (α3)]∗[X3i Y3i ]+[X1E Y1E ] 将坐标系X2-H3Z-Y2中的X2i 、Y2i 转换到坐标系X1-ZH1-Y1中 X H3Z=T1+T2*cos (α1+α2) Y H3Z= T2*sin (α1+α2) 坐标系X1-ZH1-Y1中个点的计算: X2i=-( li −li 540∗R22∗Ls22) Y2i=li 36∗R2∗Ls2−li 7336∗Ls2∗R2其中 li=KH3Z-Ki,Ki、KH3Z分别为缓和曲线Ls2上i点和H3Z点的里程X2i=-(m2+R2*sin(β2+Li−Ls2R2∗ρ) )Y2i=P2+R2*(1-cos(β2+Li−Ls2R2∗ρ))其中 Li= KH3Z-Ki,Ki、KH3Z分别为圆2曲线上i点和ZH1点的里程[X1i Y1i ]=[cos(α1+α2 )−sin(α1+α2 )sin(α1+α2 ) cos(α1+α2 )]∗[X2iY2i]+[X H3ZY H3Z]坐标系X1-ZH1-Y1中个点的计算:X1i= li−li 540∗R1∗Ls1Y1i=li 36∗R1∗Ls1−li7336∗Ls13∗R13其中 li=Ki-KZH1,Ki、KZH1分别为缓和曲线Ls1上i点和ZH1点的里程X1i=m1+R1*sin(β1+Li−Ls1R1∗ρ)Y1i=P1+R1*(1-cos(β1+Li−Ls1R1∗ρ))其中 Li=Ki-KZH1,Ki、KZH1分别为圆1曲线上i点和ZH1点的里程将坐标系X1-ZH1-Y1中的坐标转换到系统坐标中[Xi Yi ]=[cos(α0 )−sin(α0 )sin(α0 ) cos(α0 )]∗[X1iY1i]+[XZH1YZH1]其中 XZH1、YZH1为ZH1点在系统坐标系中的坐标α0为ZH1-C的方位角自编曲线计算软件代码:using System;using System.Collections.Generic; using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 曲线计算{public partial class Form1 : Form {public Form1(){InitializeComponent();}public class xy{public double y;public xy(){x = 0.0;y = 0.0;}}public double PI = 3.14159265358;public double Ls1 = 0.0,Ls2=0.0,Lf=0.0, R1 = 0.0,R2=0.0, a1 =0.0,a2=0.0,Kzh=0.0,Ki=0.0;public string fx;public double c = 0.0;public double la = 0.0;public double lb = 0.0;// public double li = 0.0;public double B1 = 0.0;public double Ly1 = 0.0;public double Ly2 = 0.0;public double P1 = 0.0;public double P2 = 0.0;public double m1 = 0.0;public double m2 = 0.0;public double L = 0.0;public double T01 = 0.0;public double T02 = 0.0;public double Khy1 = 0.0, Kyh1 = 0.0, Khy2 = 0.0, Kyh2 = 0.0, Khz = 0.0; public xy JD1 = new xy();public xy JD2 = new xy();public xy JD3 = new xy();public double xa = 0.0;public double ya = 0.0;private void Form1_Load(object sender, EventArgs e){comboBox方向.Text = comboBox方向.Items[0].ToString();}/*角度弧度转换*/public double dms_rad(double a){//提取角度double sign=(a<0.0)?-1.0:1.0;a=Math.Abs(a);int d=(int)((a+0.00001)/10000.0);a=a-d*10000.0;{d=d-1;a=a+10000;}int m=(int)((a+0.00001)/100.0);a=a-m*100;if (a<0.0){m=m-1;a=a+100.0;}a=sign*(d*3600.0+m*60.0+a)/206264.806247096363;return a;}public double rad_dms(double a){a=a*206264.806247096363;double sign=(a<0.0)?-1.0:1.0;a=Math.Abs(a);int d=(int)(a/3600.0+0.0000001);a=a-d*3600.0;if(a<0.0){d=d-1;a=a+3600.0;}int m=(int)(a/60.0+0.0001);a=a-m*60.0;if(a<0.0){m=m-1;a=a+60.0;}a=d*10000.0+m*100.0+a;return a*sign;}//计算曲线要素及主点里程public void jisu(object sender, EventArgs e){//计算常数及要素B1 = Ls1 / (2 * R1 + 0.00000000000001);double B2 = Ls2 / (2 * R2 + 0.00000000000001); double B3 = Lf / (2 * R1 + 0.00000000000001);double B4 = Lf / (2 * R2 + 0.00000000000001);double c = Lf / (R2 - R1);P1 = Ls1 * Ls1 / (24 * R1 + 0.00000000000001);P2 = Ls2 * Ls2 / (24 * R2 + 0.00000000000001);m1 = Ls1 / 2 - Ls1 * Ls1 * Ls1 / (240 * R1 * R1 + 0.00000000000001); m2 = Ls2 / 2 - Ls2 * Ls2 * Ls2 / (240 * R2 * R2 + 0.00000000000001); double E = 0.0;if (a2 == 0.0){if (Ls1 == Ls2){T01 = m1 + (R1 + P1) * Math.Tan(a1 / 2);T02 = T01;}else{T01 = m1 + (R1 + P1) * Math.Tan(a1 / 2) - (P1 - P2) / Math.Sin(a1);T02 = m2 + (R2 + P2) * Math.Tan(a1 / 2) + (P1 - P2) / Math.Sin(a1);}Ly1 = R1 * (a1 - B1 * 2);Ly2 = 0.0;E = (R1 + P1) / Math.Cos(a1 / 2) - R1;}else{double t1 = (R1 + P1) * Math.Tan(a1 / 2);double t2 = (R2 + P2) * Math.Tan(a2 / 2);T01 = m1 + t1 + (t1 + t2) * Math.Sin(a2) / Math.Sin(a1 + a2); T02 = m2 + t2 + (t1 + t2) * Math.Sin(a1) / Math.Sin(a1 + a2); /* int temp = 0;if (a2 == 0.0){a1 = a1 / 2;a2 = a1;temp = 1;}*/c = Lf * R1 * R2 / (R1 - R2);la = Lf * R2 / (R1 - R2);lb = Lf * R1 / (R1 - R2);Ly1 = R1 * (a1 - B1 - B3);Ly2 = R2 * (a2 - B2 - B4);}L = Ls1 + Ls2 + Lf + Ly1 + Ly2;double q = T01 + T02 - L;//计算里程Khy1 = Kzh + Ls1;double Kqz1 = Khy1 + Ly1 / 2;Kyh1 = Khy1 + Ly1;Khy2 = Kyh1 + Lf;double Kqz2 = Khy2 + Ly2 / 2;Kyh2 = Khy2 + Ly2;Khz = Kyh2 + Ls2;double KHZ = Kzh + T01 + T02 - q;/* if (temp == 1){a1 = a1 + a2;a2 = 0.0;Ly1 = R1 * (a1 - B1 - B3);Ly2 = R2 * (a2 - B2 - B4);L = Ls1 + Ls2 + Lf + Ly1 + Ly2;}*/if (Khz != KHZ){listBox1.Items.Add("---里程计算错误---");}else{// listBox1.Items.Clear();listBox1.Items.Add("---曲线常数及要素---");listBox1.Items.Add("缓和曲线切线角B1:" +Convert.ToString(B1));listBox1.Items.Add("内移距P:" + Convert.ToString(P1)); listBox1.Items.Add("切垂距m:" + Convert.ToString(m1)); listBox1.Items.Add("内移距P:" + Convert.ToString(P2)); listBox1.Items.Add("切垂距m:" + Convert.ToString(m2)); listBox1.Items.Add("切线长T1:" + Convert.ToString(T01)); listBox1.Items.Add("切线长T2:" + Convert.ToString(T02)); listBox1.Items.Add("曲线长L:" + Convert.ToString(L));listBox1.Items.Add("外矢距E:" + Convert.ToString(E));listBox1.Items.Add("切曲差q:" + Convert.ToString(q));listBox1.Items.Add("------主点里程-------");listBox1.Items.Add("缓圆点里程Khy1:" +Convert.ToString(Khy1));listBox1.Items.Add("曲中点里程Kqz1:" +Convert.ToString(Kqz1));listBox1.Items.Add("圆缓点里程Kyh1:" +Convert.ToString(Kyh1));listBox1.Items.Add("缓圆点里程Khy2:" +Convert.ToString(Khy2));listBox1.Items.Add("曲中点里程Kqz2:" +Convert.ToString(Kqz2));listBox1.Items.Add("圆缓点里程Kyh2:" +Convert.ToString(Kyh2));listBox1.Items.Add("缓直点里程Khz:" +Convert.ToString(Khz));listBox1.Items.Add("检校缓直点里程KHZ:" +Convert.ToString(KHZ));}listBox1.SelectedIndex = listBox1.Items.Count - 1;}public void turn_left(object sender, EventArgs e){double a = a1 + a2;double li = Ki - Kzh;double xi=0.0;double yi = 0.0;int flg = 0;if (li <= Ls1){xi = li - li * li * li * li * li / (240 * R1 * R1 * Ls1*Ls1); yi = -(li * li * li / (6 * R1 *Ls1)-li*li*li*li*li*li*li/(336*R1*R1*R1*Ls1*Ls1*Ls1));flg = 1;}else if (li<=(Ls1+Ly1)&&li>Ls1){xi = m1 + R1 * Math.Sin((li-0.5*Ls1)/R1);yi = -(P1 + R1 * (1 - Math.Cos((li - 0.5 * Ls1) / R1)));if (Ki == Kyh1){xa = xi;ya = yi;}flg = 1;}else if (li > (Ls1 + Ly1) && li < (Ls1 + Lf + Ly1)){if ((xa == 0.0) && (ya == 0.0)){Ki = Kyh1;if (comboBox方向.Text == "左转弯"){turn_left(sender, e);}else if (comboBox方向.Text == "右转弯"){turn_right(sender, e);}else{listBox1.Items.Add("---转弯方向输入错误!---");}}double l=Ki-Kyh1;double ax=(3*la+l)*l/(6*c);double ay = B1 + Ly1 / R1;xi = l * Math.Cos(ax);yi = -l * Math.Sin(ax);double temp1 = xi * Math.Cos(ay) + yi * Math.Sin(ay) + xa; double temp2 = yi * Math.Cos(ay) - xi * Math.Sin(ay) + ya; xi = temp1;yi = temp2;flg = 1;}else if (li >= (Ls1 + Lf + Ly1) && li <= (L-Ls2)){li = Khz - Ki;xi = -(m2 + R2 * Math.Sin((li - 0.5 * Ls2) / R2));yi = -(P2 + R2 * (1 - Math.Cos((li - 0.5 * Ls2) / R2)));if (JD3.x == 0 && JD3.y == 0){double temp1 = xi * Math.Cos(a) + yi * Math.Sin(a) + T01 + T02 * Math.Cos(a);double temp2 = yi * Math.Cos(a) - xi * Math.Sin(a) - T02 * Math.Sin(a);xi = temp1;yi = temp2;flg = 1;}else{flg = 2;}}else if (li > (L-Ls2) && li <= L){li = Khz - Ki;xi = -li + li * li * li * li * li / (240 * R2 * R2 * Ls2 * Ls2); yi = -(li * li * li / (6 * R2 * Ls2) - li * li * li * li * li * li * li / (336 * R2 * R2 * R2 * Ls2 * Ls2 * Ls2));if (JD3.x == 0 && JD3.y == 0){double temp1 = xi * Math.Cos(a) + yi * Math.Sin(a) + T01 + T02 * Math.Cos(a);double temp2 = yi * Math.Cos(a) - xi * Math.Sin(a) - T02 * Math.Sin(a);xi = temp1;yi = temp2;flg = 1;}else{flg = 2;}}else{listBox1.Items.Add("---次点不在曲线上---");}double x0 = 0.0, y0 = 0.0;double xi0 = 0.0,yi0=0.0 ;double ai = 0.0;if (flg == 1){ai = Math.Atan((JD2.y - JD1.y) / (JD2.x - JD1.x));x0 = JD2.x + T01 * Math.Cos(ai + PI);y0 = JD2.y + T01 * Math.Sin(ai + PI);xi0 = x0 + xi * Math.Cos(ai) - yi * Math.Sin(ai);yi0 = y0 + yi * Math.Cos(ai) + xi * Math.Sin(ai);listBox1.Items.Add("里程为K"+Convert.ToString(Ki)+"点的坐标为x="+Convert.ToString(xi0)+",y="+Convert.ToString(yi0));}else if (flg == 2){ai = Math.Atan((JD3.y - JD2.y) / (JD3.x - JD2.x));x0 = JD2.x + T02 * Math.Cos(ai );y0 = JD2.y + T02 * Math.Sin(ai );xi0 = x0 + xi * Math.Cos(ai) - yi * Math.Sin(ai);yi0 = y0 + yi * Math.Cos(ai) + xi * Math.Sin(ai);listBox1.Items.Add("里程为K"+Convert.ToString(Ki) + "点的系统坐标为x=" + Convert.ToString(xi0) + ",y=" + Convert.ToString(yi0));}else{listBox1.Items.Add("---次点不在曲线上---");}listBox1.SelectedIndex = listBox1.Items.Count - 1;}public void turn_right(object sender, EventArgs e){double a = a1 + a2;double li = Ki - Kzh;double xi = 0.0;double yi = 0.0;int flg = 0;if (li <= Ls1){xi = li - li * li * li * li * li / (240 * R1 * R1 * Ls1 * Ls1); yi = (li * li * li / (6 * R1 * Ls1) - li * li * li * li * li * li * li / (336 * R1 * R1 * R1 * Ls1 * Ls1 * Ls1));flg = 1;}else if (li <= (Ls1 + Ly1) && li > Ls1){xi = m1 + R1 * Math.Sin((li - 0.5 * Ls1) / R1);yi = (P1 + R1 * (1 - Math.Cos((li - 0.5 * Ls1) / R1)));if (Ki == Kyh1){xa = xi;ya = yi;}flg = 1;}else if (li > (Ls1 + Ly1) && li < (Ls1 + Lf + Ly1)){if ((xa == 0.0) && (ya == 0.0)){Ki = Kyh1;if (comboBox方向.Text == "左转弯"){turn_left(sender, e);}else if (comboBox方向.Text == "右转弯"){turn_right(sender, e);}else{listBox1.Items.Add("---转弯方向输入错误!---");}}double l = Ki - Kyh1;double ax = (3 * la + l) * l / (6 * c);double ay = B1 + Ly1 / R1;xi = l * Math.Cos(ax);yi = l * Math.Sin(ax);double temp1 = xi * Math.Cos(ay) - yi * Math.Sin(ay) + xa; double temp2 = yi * Math.Cos(ay) + xi * Math.Sin(ay) + ya; xi = temp1;yi = temp2;flg = 1;}else if (li >= (Ls1 + Lf + Ly1) && li <= (L-Ls2)){li = Khz - Ki;xi = -(m2 + R2 * Math.Sin((li - 0.5 * Ls2) / R2));yi = (P2 + R2 * (1 - Math.Cos((li - 0.5 * Ls2) / R2)));if (JD3.x == 0 && JD3.y == 0){double temp1 = xi * Math.Cos(a) - yi * Math.Sin(a) + T01 + T02 * Math.Cos(a);double temp2 = yi * Math.Cos(a) + xi * Math.Sin(a) + T02 * Math.Sin(a);xi = temp1;yi = temp2;flg = 1;}else{flg = 2;}}else if (li > (L-Ls2) && li <= L){li = Khz - Ki;xi = -li + li * li * li * li * li / (240 * R2 * R2 * Ls2 * Ls2);yi = (li * li * li / (6 * R2 * Ls2) - li * li * li * li * li * li * li / (336 * R2 * R2 * R2 * Ls2 * Ls2 * Ls2));if (JD3.x == 0 && JD3.y == 0){double temp1 = xi * Math.Cos(a) - yi * Math.Sin(a) + T01 + T02 * Math.Cos(a);double temp2 = yi * Math.Cos(a) + xi * Math.Sin(a) + T02 * Math.Sin(a);xi = temp1;yi = temp2;flg = 1;}else{flg = 2;}}else{listBox1.Items.Add("---次点不在曲线上---");}double x0 = 0.0, y0 = 0.0;double xi0 = 0.0, yi0 = 0.0;double ai = 0.0;if (flg == 1){ai = Math.Atan((JD2.y - JD1.y) / (JD2.x - JD1.x));x0 = JD2.x + T01 * Math.Cos(ai + PI);y0 = JD2.y + T01 * Math.Sin(ai + PI);xi0 = x0 + xi * Math.Cos(ai) - yi * Math.Sin(ai);yi0 = y0 + yi * Math.Cos(ai) + xi * Math.Sin(ai);listBox1.Items.Add("里程为K" + Convert.ToString(Ki) + "点的坐标为x=" + Convert.ToString(xi0) + ",y=" + Convert.ToString(yi0));}else if (flg == 2){ai = Math.Atan((JD3.y - JD2.y) / (JD3.x - JD2.x));x0 = JD2.x + T02 * Math.Cos(ai );y0 = JD2.y + T02 * Math.Sin(ai );xi0 = x0 + xi * Math.Cos(ai) - yi * Math.Sin(ai);yi0 = y0 + yi * Math.Cos(ai) + xi * Math.Sin(ai);listBox1.Items.Add("里程为K" + Convert.ToString(Ki) + "点的系统坐标为x=" + Convert.ToString(xi0) + ",y=" + Convert.ToString(yi0));}else{listBox1.Items.Add("---次点不在曲线上---");}listBox1.SelectedIndex = listBox1.Items.Count - 1;}private void comboBox方向_SelectedIndexChanged(object sender, EventArgs e){fx = comboBox方向.Text;}private void text缓和曲线长_TextChanged(object sender, EventArgs e) {string l = "0";if (l != "0"){text缓和曲线长.Text = "0";}l = l + text缓和曲线长.Text;Ls1 = Convert.ToDouble(l);}private void textBox曲线长Ls2_TextChanged(object sender, EventArgs e) {string l = "0";if (l != "0"){textBox曲线长Ls2.Text = "0";}l = l + textBox曲线长Ls2.Text;Ls2 = Convert.ToDouble(l);}private void textBox曲线长Lf_TextChanged(object sender, EventArgs e) {string l = "0";if (l != "0"){textBox曲线长Lf.Text = "0";}l = l + textBox曲线长Lf.Text;Lf = Convert.ToDouble(l);}private void textBox半径R1_TextChanged(object sender, EventArgs e) {string r = "0";if (r.Length == 0){textBox半径R1.Text = "0";}r = r + textBox半径R1.Text;R1 = Convert.ToDouble(r);}private void text转弯半径R2_TextChanged(object sender, EventArgs e) {string r = "0";if (r.Length == 0){text转弯半径R2.Text = "0";}r = r + text转弯半径R2.Text;R2 = Convert.ToDouble(r);}private void textBox转角a1_TextChanged(object sender, EventArgs e) {string a0 = "0";if (a0.Length == 0){textBox转角a1.Text = "0";}a0 = a0 + textBox转角a1.Text;double a4 = Convert.ToDouble(a0);a1 = dms_rad(a4);}private void textBox转角a2_TextChanged(object sender, EventArgs e) {string a0 = "0";if (a0.Length == 0){textBox转角a2.Text = "0";}a0 = a0 + textBox转角a2.Text;double a4 = Convert.ToDouble(a0);a2 = dms_rad(a4);}private void textBox里程_TextChanged(object sender, EventArgs e){string k = "0";if (k.Length == 0){textBox里程.Text = "0";}k = k + textBox里程.Text;Kzh = Convert.ToDouble(k);}private void button退出_Click(object sender, EventArgs e){Close();}private void button计算里程_Click_1(object sender, EventArgs e) {jisu(sender,e);}private void textBoxJD1X_TextChanged(object sender, EventArgs e) {string jd = "0";if (jd.Length == 0){textBoxJD1X.Text = "0";}jd = jd + textBoxJD1X.Text;JD1.x = Convert.ToDouble(jd);}private void textBoxJD1Y_TextChanged(object sender, EventArgs e) {string jd = "0";if (jd.Length == 0){textBoxJD1Y.Text = "0";}jd = jd + textBoxJD1Y.Text;JD1.y = Convert.ToDouble(jd);}private void textBoxJD2X_TextChanged(object sender, EventArgs e) {string jd = "0";if (jd.Length == 0){textBoxJD2X.Text = "0";}jd = jd + textBoxJD2X.Text;JD2.x = Convert.ToDouble(jd);}private void textBoxJD2Y_TextChanged(object sender, EventArgs e){string jd = "0";if (jd.Length == 0){textBoxJD2Y.Text = "0";}jd = jd + textBoxJD2Y.Text;JD2.y = Convert.ToDouble(jd);}private void textBoxJD3X_TextChanged(object sender, EventArgs e) {string jd = "0";if (jd.Length == 0){textBoxJD3X.Text = "0";}jd = jd + textBoxJD3X.Text;JD3.x = Convert.ToDouble(jd);}private void textBoxJD3Y_TextChanged(object sender, EventArgs e) {string jd = "0";if (jd.Length == 0){textBoxJD3Y.Text = "0";}jd = jd + textBoxJD3Y.Text;JD3.y = Convert.ToDouble(jd);}private void button坐标_Click(object sender, EventArgs e){if (comboBox方向.Text == "左转弯"){turn_left(sender, e);}else if (comboBox方向.Text == "右转弯"){turn_right(sender, e);}else{listBox1.Items.Add("---转弯方向输入错误!---");}}private void textBoxli_TextChanged(object sender, EventArgs e) {string ki = "0";if (ki.Length == 0){textBoxli.Text = "0";}ki = ki + textBoxli.Text;Ki = Convert.ToDouble(ki);}}}。
2、卵形曲线计算本设计由于12~JD JD 之间的距离偏小,又都为右偏,直线长度很难满足要求,同时也为适应地形条件的变化,所以此处敷设卵形曲线。
卵形曲线设计计算如下:运用纬地软件设计卵形曲线,系将卵形曲线看做是两个同向基本型平曲线的组合对接,首先给定小圆半径以及小圆的前缓和曲线长度:1700R =,1100S L =,这个前缓和曲线的起点半径为无穷大,而后缓和曲线长度为0。
然后切换到交点2,给定前缓和曲线长100F L =,后缓和曲线长2100S L =,由于中间过渡段曲线的半径变化是从12~R R ,所以第二段曲线的前缓和曲线F L 起点给定半径为小圆半径700,终点半径即大圆曲线半径2R 采用纬地软件的“T1+Rc+S2”或“T1+S1+Rc ”反算模式,计算结果为1451.22。
卵形曲线设计参数宜满足如下三个条件: ①112F R A R ≤≤ ②120.20.8R R ≤≤ ③10.0030.03D R ≤≤已知:1212700,1451.22,100S S F R R L L L ===== 计算:(如图2.1)图2.1 卵形曲线示意图[11]122112122212121212120.27001451.220.480.8,,,242422F F F F F F F F R R D R R O O O O L L L L P P q q R R ≤==≤=--=====2212122211221221212112212112111,()1001451.22700135227.231451.22700350367.737002135227.23135227.23193.18,93.187001451.2224F F F F F F F F F F F F F F F F F F A A L L R R A R R L L L R R L R R A R R A R A R A A L L R R L P R ==-=-==-⨯⨯==-=≤=≤========反推:22222121212211293.18193.182.22,0.252470024241451.22193.1893.1896.59,46.592222749.011451.22700F F F F F F L P R L L q q O O D R R O O =====⨯⨯==========--=-1749.01 2.210.003 2.217000.00310.03D R -=≤==≤综上计算,本设计卵形曲线设计满足《公路路线设计规范》要求。
浅谈道路线形设计中卵型平曲线的计算方法摘要:在当今社会发展中,人们对交通运输的要求越来越高,且道路建设水平在国民经济建设中占有重要地位,因此合理的线形设计至关重要。
卵型曲线作为道路线形设计中的一种,其设计复杂,计算繁琐,参数较多,在实际工作中对其进行研究。
关键词:公路工程线形设计卵型平曲线道路线形设计在道路整体设计中占有重要地位,设计合理的线形可以提高道路行车安全保障,同时对道路连续性和美观都起到重要作用。
道路线形设计中一般包括6种线形,即:基本型、S型、卵型、凸型、复合型和C型。
其中,基本型是现代道路线形设计中最基本、最常用、计算最简单的线形之一,但在设计中往往由于地形或其它因素的影响不能采用基本型设计,而采用其他5种线形中的一种,其中卵型是计算最为复杂的线形。
卵型平曲线是指用一个回旋线连接两个同向圆曲线的组合形式。
卵型组合的前提条件:(1)大圆必须把小圆完全包含在内,但不是同心圆。
(2)延长两相邻圆曲线的圆弧不能相互交叉。
(3)连接的回旋线不是由回旋线的原点开始,而是曲率为的部分。
下面我将结合自己的实践经验对道路线形设计中的卵型平曲线进行案例分析。
本案例中,和构成卵形平曲线,并且两交点的坐标分别为(76816.62,45314.107),(76615.557,45541.151),两交点的偏角分别为30°30’07″和23°21’06″,初拟的半径R1=400,缓和曲线。
本案例采用切线长度控制曲线半径法(直线型定线)进行计算,按两同向曲线(未设缓和曲线时)在公切点处直接相接在的思想进行设计(公切线即为两交点的连线)两曲线应满足:参考文献[1] 赵永平,唐勇.道路勘测设计[M].北京:高等教育出版社,2004(8).[2] 中华人民共和国行业标准.公路路线设计规范JTGD20-2006[S].北京:人民交通出版社,2006(10).[3] 许娅娅.测量学[M].北京:人民交通出版社,2004(5).。