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#語言進行其他測量功能的實現。

主站蜘蛛池模板: 国产精品19p| 欧美一级99在线观看国产| 色综合久久无码网| 欧洲免费精品视频在线| 伊人五月丁香综合AⅤ| 91久久天天躁狠狠躁夜夜| 99re精彩视频| 成人免费黄色小视频| 国产区91| 青青草欧美| 亚洲五月激情网| 亚洲国产精品成人久久综合影院| 美女毛片在线| 国产欧美日本在线观看| 午夜小视频在线| 91久久国产综合精品女同我| 亚洲成A人V欧美综合| 久久精品免费国产大片| 91免费国产在线观看尤物| 女人18毛片一级毛片在线 | 国产在线观看人成激情视频| 青青操国产| 91福利片| 免费女人18毛片a级毛片视频| 制服丝袜国产精品| 国产又黄又硬又粗| 欧美日韩动态图| 一级片免费网站| 在线色综合| 日韩 欧美 小说 综合网 另类| v天堂中文在线| 97国内精品久久久久不卡| 色综合天天操| 亚洲侵犯无码网址在线观看| 亚洲色图欧美| 国产噜噜在线视频观看| 本亚洲精品网站| 欧美激情伊人| 亚洲一区二区约美女探花| 狠狠色综合网| 婷婷综合亚洲| 18禁色诱爆乳网站| 毛片网站在线播放| 91九色视频网| 国产日韩欧美在线视频免费观看 | 九色91在线视频| 日韩精品亚洲人旧成在线| 亚洲一区二区三区中文字幕5566| 99精品视频在线观看免费播放| 国产精品自在自线免费观看| 小蝌蚪亚洲精品国产| 看av免费毛片手机播放| 热99re99首页精品亚洲五月天| 成人免费午间影院在线观看| 日韩在线永久免费播放| 亚洲无线国产观看| 极品国产在线| 午夜国产大片免费观看| www.91中文字幕| 免费看a级毛片| 波多野一区| 日韩福利在线视频| 欧美国产综合视频| 国产迷奸在线看| 69免费在线视频| 手机在线国产精品| 国产人成乱码视频免费观看| 手机在线免费不卡一区二| 欧美啪啪精品| 手机在线免费不卡一区二| 精品欧美日韩国产日漫一区不卡| 92精品国产自产在线观看 | 亚洲欧美人成电影在线观看| 色综合激情网| 欧美色综合网站| 最新国语自产精品视频在| 久久永久精品免费视频| 亚洲天堂网在线视频| 老熟妇喷水一区二区三区| 露脸国产精品自产在线播| 国产高清又黄又嫩的免费视频网站| 尤物精品国产福利网站|