999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

圓曲線主點放樣基于c#語言的編程實現

2008-12-31 00:00:00徐曉艷肖永東
現代商貿工業 2008年8期

摘 要:主要針對解決線路工程測量中經常碰到的圓曲線主點放樣采用傳統的手工計算標定要素,再用傳統光學儀器進行放樣時計算量較大,放樣工作繁雜而不靈活這一實際問題進行解決,結合現代工程施工放樣主要是采用全站儀進行,為了能夠減輕計算的工作量,而c#語言也是比較易學易用的計算機語言,所以將兩者的結合應用進行闡述。

關鍵詞:圓曲線;主點放樣;c#語言

中圖分類號:TP文獻標識碼:A文章編號:1672-3198(2008)08-0359-03

無論是采用傳統光學儀器放樣圓曲線主點,還是采用全站儀放樣圓曲線主點,圓曲線要素、圓曲線主點里程均是必須計算出來的,它們的數學模型分別為:

圓曲線要素切線長:T=Rtgα2

曲線長:L=π180#8226;α#8226;R

外矢距:E=R(secα2-1)

切曲差:q=2T-L

圓曲線主點里程計算:

ZY里程=JD里程-T

YZ里程=ZY里程+L

QZ里程=YZ里程-L2(假設JD里程已知)

JD里程=QZ里程+q2(檢核)

各點平面坐標的計算:x=Li-li36R2+li5120R4(QZ點:Li=L2;YZ點:Li=L)y=li22R-Li424R3+L6i720R5

假定我們在進行圓曲線放樣時,建立如下坐標系統(圖1)。

圖1

I——測站點

JD——交點

ZY——直線段公路與曲線段公路的轉折點

QZ——圓曲線中點

YZ——曲線段公路與直線段公路的轉折點

α——曲線轉角(實測或已知)

R——圓曲線設計半徑(已知)

下面是圓曲線主點放樣要素計算基于c#語言編程實現的主要源代碼,考慮到文章的篇幅,對于窗口通用的最大化、最小化、關閉的代碼就沒有再一一列出。

namespace 測量計算器 //程序命名空間

{

public partial class Form1 : Form

{

private void button1_Click(object sender, EventArgse)

{

//主要的計算過程就在這里了 

//按照計算要求,輸入各已知量,已知量包括:

//轉向角,轉向方向,曲線半徑,曲線主點里程和測站點坐標。

//首先輸入主點里程

int DisMiles;

double DisMeters;

double Distance;

DisMiles = Convert.ToInt32(txtmiles.Text);

DisMeters = Convert.ToDouble(txtmeters.Text);

Distance = 1000 * DisMiles + DisMeters;//得到已知里程

//輸入角度,包括度、分、秒;

int drg = 0, mnt = 0, snd = 0;

drg = int.Parse(txtdeg.Text);

mnt = int.Parse(txtmin.Text);

snd = int.Parse(txtsec.Text);

double vbanjing = double.Parse(txtrd.Text); //輸入曲線半徑

//角度換成弧度:

double grdvalue = ((drg + mnt / 60.0 + snd / 3600.0) / 180.0) * Math.PI;

double valueIX, valueIY;//IY,IX分別是I點的坐標,這個坐標一般已經給出

double valueT,valueL,valueE,valueq; //表示各曲線要素

double valueZY,valueYZ,valueQZ,valueJD; //表示各主點里程

double valueXQZ, valueYQZ, valueXYZ, valueYYZ, valueXJD, valueYJD;//QZ,YZ,JD 3點的坐標

valueIX = Convert.ToDouble(txtx.Text);

valueIY = Convert.ToDouble(txty.Text);

valueT = vbanjing * Math.Tan(grdvalue/2);//算出T

txtT.Text = Math.Round(valueT,3).ToString();

valueL = grdvalue * vbanjing;//算出L;

txtL.Text =Math.Round( valueL,3).ToString();

valueE=vbanjing*((1/Math.Cos(grdvalue/2))-1);//算出E

txte.Text =Math.Round( valueE,3).ToString();

valueq = 2 * valueT - valueL;//算出q;

txtq.Text =Math.Round( valueq,3).ToString();

//接下來計算各主點里程里程

valueZY = Distance + valueL-valueL/2 + valueq/2-valueT;

valueYZ = valueZY + valueL;

valueQZ = valueYZ - valueL/2;

valueJD = valueQZ +valueq/2;

// 定義中間量方便計算轉換

int vzy, vyz, vqz, vjd;

vzy = (int)valueZY / 1000;

vyz = (int)valueYZ / 1000;

vqz = (int)valueQZ / 1000;

vjd = (int)valueJD / 1000;

txtzy1.Text = vzy.ToString();

txtzy2.Text = Convert.ToString(Math.Round((valueZY - 1000 * vzy),3));

txtyz1.Text = vyz.ToString();

txtyz2.Text = Convert.ToString(Math.Round((valueYZ - 1000 * vyz),3));

txtqz1.Text = vqz.ToString();

txtqz2.Text = Convert.ToString(Math.Round((valueQZ - 1000 * vqz),3));

txtjd1.Text = vjd.ToString();

txtjd2.Text = Convert.ToString(Math.Round((valueJD - 1000 * vjd),3));

//首先確定JD點的坐標

valueXJD = valueT;

valueYJD = 0;

//接下來計算4個坐標值:

//注意,在計算4個坐標時,Y坐標的正負由轉向角方向決定,假如向左,Y為負,否則,為正

//所以先定義一個這樣的標量:

int leftORright;

leftORright =left.Checked? -1 : 1; //判斷是否為向左

double LQZ = valueL / 2; //這是計算的之間量!

valueXQZ=LQZ-(LQZ*LQZ*LQZ)/(6*vbanjing*vbanjing)+Math.Pow(LQZ,5)/(120*Math.Pow(vbanjing,4));

txtxqz.Text = Math.Round(valueXQZ,3).ToString(); //計算坐標值

valueYQZ=leftORright*((LQZ*LQZ)/(2*vbanjing)-Math.Pow(LQZ,4)/(24*Math.Pow(vbanjing,3))+Math.Pow(LQZ,6)/(720*(Math.Pow(vbanjing,5))));

txtyqz.Text=Math.Round(valueYQZ,3).ToString();

valueXYZ=valueL-(valueL*valueL*valueL)/(6*vbanjing*vbanjing)+Math.Pow(valueL,5)/(120*Math.Pow(vbanjing,4));

txtxyz.Text = Math.Round(valueXYZ,3).ToString();

valueYYZ=leftORright*((valueL*valueL)/(2*vbanjing)-Math.Pow(valueL,4)/(24*Math.Pow(vbanjing,3))+Math.Pow(valueL,6)/(720*(Math.Pow(vbanjing,5))));

txtyyz.Text=Math.Round(valueYYZ,3).ToString();

//最后進行各點放樣數據的計算,主要包括了方位角計算

//,水平角計算以及三個距離的計算。

//在計算過程中,需要判斷曲線書左向還是右向,因為方向的不同會導致計算結果的不一樣。

//首先定義水平角AIZY:

double AIZY;

if (left.Checked)

AIZY = (270 / 180.0) * Math.PI;

else

AIZY =( 90 / 180.0) * Math.PI;

//下面。根據轉向角的方向確定方位角:

//三個方位角:αIJD, αIQZ, αIYZ,分別是I點到JD、QZ、YZ的方位角

double αIJD, αIQZ, αIYZ;

//在確定方位角后,就可進行放樣要素的計算了,這主要包括2個內容:距離D,以及夾角β:

//首先求得夾角B:βIJD,βIQZ,βIYZ:

double βIJD, βIQZ, βIYZ;

//假如為左:

if (left.Checked) 

{

αIJD = 2 * Math.PI - Math.Atan(Math.Abs((valueYJD - valueIY) / (valueXJD - valueIX)));

αIQZ = 2 * Math.PI - Math.Atan(Math.Abs((valueYQZ - valueIY) / (valueXQZ - valueIX)));

αIYZ = 2 * Math.PI - Math.Atan(Math.Abs((valueYYZ - valueIY) / (valueXYZ - valueIX)));

βIJD = αIJD - αIZY;

βIQZ = αIQZ - αIZY;

βIYZ = αIYZ - αIZY;

}

//假如為右

else

{

αIJD = Math.Atan(Math.Abs((valueYJD - valueIY) / (valueXJD - valueIX)));

αIQZ = Math.Atan(Math.Abs((valueYQZ - valueIY) / (valueXQZ - valueIX)));

αIYZ = Math.Atan(Math.Abs((valueYYZ - valueIY) / (valueXYZ - valueIX)));

βIJD = -(αIJD - αIZY);

βIQZ = -(αIQZ - αIZY);

βIYZ = -(αIYZ - αIZY);

}

//轉換成角度(包含度,分,秒)

//定義度,分,秒以及弧度的中間量

//利用Converting()函數實現角度轉變

TXTαIJD.Text = Converting(αIJD / Math.PI * 180.0); 

TXTαIQZ.Text = Converting(αIQZ / Math.PI * 180.0);

TXTαIYZ.Text = Converting(αIYZ / Math.PI * 180.0); 

//轉換成角度(包含度,分,秒)

βIJD = βIJD / Math.PI * 180.0;

βIQZ = βIQZ / Math.PI * 180.0;

βIYZ = βIYZ / Math.PI * 180.0;

TXTβIJD.Text = Converting(βIJD);// βIJD.ToString();

TXTβIQZ.Text = Converting(βIQZ); //βBIQZ.ToString();

TXTβIYZ.Text = Converting(βIYZ);// βIYZ.ToString();

//最后,計算出點間距離:

double DIJD, DIQZ, DIYZ;

DIJD=Math.Sqrt((valueYJD-valueIY)*(valueYJD-valueIY)+(valueXJD-valueIX)*(valueXJD-valueIX));

DIQZ=Math.Sqrt((valueYQZ-valueIY)*(valueYQZ-valueIY)+(valueXQZ-valueIX)*(valueXQZ-valueIX));

DIYZ=Math.Sqrt((valueYYZ-valueIY)*(valueYYZ-valueIY)+(valueXYZ-valueIX)*(valueXYZ-valueIX));

TXTDIJD.Text = Math.Round(DIJD,3).ToString();

TXTDIQZ.Text = Math.Round(DIQZ,3).ToString();

TXTDIYZ.Text = Math.Round(DIYZ,3).ToString();

}

private string Converting(double jiao)//轉換函數

{

intdu, fen, miao;

string jiaodu;

du =(int) Math.Floor(jiao);

fen =(int) Math.Floor((jiao - du) * 60);

miao =(int)( Math.Round ((((jiao - du) * 60 - Math.Floor((jiao - du) * 60)) * 60),1));

jiaodu = Convert.ToString(du) + ”?“ + Convert.ToString(fen) + ”\\'“ + Convert.ToString(miao) + ”\\””;

return jiaodu;

}

}

}

據此源代碼,進行窗口設計的最終效果圖(如圖2),可供讀者進行參考設計。

圖2 圓曲線主點要素及放樣要素計算器(基于c#語言)

此源代碼可用于施工放樣過程中無法在交點或直圓點安置儀器進行放樣的最復雜的情況,無論是曲線左轉還是右轉,均可通過此程序快速計算出各要素,無論是采用全站儀坐標放樣功能進行主點放樣還是采用傳統光學儀器進行撥角法放樣各主點,均可提高作業精度和速度。同時由于c#語言易學易用,任何一位有編程基礎的測繪人員均可參照此思路及框架采用c#語言進行其他測量功能的實現。

主站蜘蛛池模板: 亚洲免费播放| 在线日韩日本国产亚洲| 国模视频一区二区| 国产又粗又爽视频| 午夜毛片免费看| 91青青草视频在线观看的| 国产精品jizz在线观看软件| 在线亚洲精品自拍| 国产成人艳妇AA视频在线| 91香蕉视频下载网站| 国产毛片片精品天天看视频| 亚洲天堂视频网| 国产精品成人一区二区| 米奇精品一区二区三区| 在线观看网站国产| 97在线观看视频免费| 人妻中文字幕无码久久一区| 精品人妻系列无码专区久久| 国产乱人伦AV在线A| 久久黄色一级视频| 欧美成人精品高清在线下载| 亚洲人妖在线| 夜夜操狠狠操| 日韩小视频在线观看| 日韩精品久久无码中文字幕色欲| a毛片免费在线观看| 国产精品一区在线麻豆| 激情影院内射美女| 强奷白丝美女在线观看| 熟妇丰满人妻| 亚洲人成日本在线观看| 午夜啪啪福利| 国产精品部在线观看| 九色国产在线| 久久精品亚洲热综合一区二区| 国产区成人精品视频| 在线人成精品免费视频| 欧美一级大片在线观看| 国产高清免费午夜在线视频| 国产在线视频自拍| 日本一区二区三区精品AⅤ| 国产视频一二三区| 久草网视频在线| 欧美a在线视频| 99热免费在线| 伊人天堂网| 免费在线观看av| 国产福利影院在线观看| 日韩av无码DVD| 欧美日韩国产在线人成app| 国产十八禁在线观看免费| 日韩毛片免费| 亚洲人成人伊人成综合网无码| 99re热精品视频中文字幕不卡| 国产小视频免费观看| 99久久精品免费观看国产| 麻豆精品在线播放| 波多野结衣无码中文字幕在线观看一区二区 | 欧美日韩在线成人| 午夜精品久久久久久久无码软件 | 71pao成人国产永久免费视频| 在线一级毛片| 久久午夜影院| 欧美激情视频一区| vvvv98国产成人综合青青| 国产一级一级毛片永久| 91精品国产91欠久久久久| 免费在线不卡视频| 色婷婷久久| 性视频久久| 亚洲综合色在线| 亚洲天堂在线视频| 亚洲午夜18| 亚洲中文无码av永久伊人| 欧美精品影院| 国产成人凹凸视频在线| 午夜a视频| 热99re99首页精品亚洲五月天| 亚洲精品图区| 91久久大香线蕉| 啪啪永久免费av| 久久精品国产免费观看频道|