有窗體的閉合導線計算程式(C )

2021-09-10 14:52:43 字數 3153 閱讀 6176

在測繪的實際操作中,我們會遇到這樣的一些閉合導線的計算。閉合導線的計算比較複雜,我們如何利用計算機幫助我們快速地計算,這裡我們使用c#編寫乙個有(好看)介面的導線計算程式

問題

這是我們計算的結果

這是答案的結果

可以看出答案是差不多的,當然存在誤差和計算機儲存小數的一些問題有關。下面來看一下如何完成這樣的乙個簡單的程式(預設知道閉合導線是怎麼計算的)

這裡我們輸入是按照「dd ff mm」 的格式輸入的,需要通過轉換將其轉換為小數形式,然後在計算三角函式時要化為弧度

這裡我們用的datagridview控制項展示的資料,可以利用split()函式分割裡面的單元格得到度分秒,通過這個公式得到角度

angle = d + f /

60+ m /

3600

;// 度分秒轉換為度

至於計算時的弧度,高中就知道可以這樣完成

radian = angle /

180* math.pi;

// 角度轉弧度

乙個n邊形的內角和是(n-2)*180度,但實際在測量中,肯定得不到準確的這個資料,所以我們需要計算閉合差並將其分配,使內角和等於理論值。這裡的允許誤差是40√n,n是測站數,分配原則是反向平均分配。這裡我肯可以通過角度誤差分配來實現

// 角度誤差分配

private

void

btnang_click

(object sender,

eventargs e)

exang = nowang - rawang;

if(math.

abs(exang)

> error)

else

d**list.rows[i]

.cells[0]

.value =

"校正";}

angle_able =

true;}

}catch

}

在得到座標的增量時,我們需要座標的方位角和測站的距離,距離已知了,所以這裡我們要通過乙個方法實現計算座標的方位角

public

double

getangle

(double lastaziang,

double turnang,

bool rorl)

else

//左角公式

while

(aziang >

360|| aziang <0)

else

if(aziang <0)

}return aziang;

}

座標的增量可以通過dertx = distance * math.cos(azirad)derty = distance * math.sin(azirad)求得,這個azirad就是座標方位角的弧度形式

這裡的寫法比較簡單,其中是在datagridview的單元格中直接先計算放上去的,後面的改正將會在原來的基礎資料上改正

public

void

getvariatedistance

(datagridview d**list,

int num)

}

因為這是乙個閉合導線,所以理論上座標增量的和應該為零(又回到最初的起點),然而因為誤差的存在並不是這樣的,所以我們要把閉合差(√((∑dertx)^ 2)+ (∑derty)^ 2)))按照邊長的比例反其符號分配給每個座標增量,量距導線和測距導線的閉合差一般都小於1/2000,這裡我們可以使用這樣處理

public

void

exvariatedistance

(datagridview d**list,

int num,

double xvariate,

double yvariate,

double distance)

xvariate /=(

(-1)

* distance)

; yvariate /=(

(-1)

* distance)

;for

(i =

0; i < num; i++

) d**list.rows[i]

.cells[4]

.value =

"校正"

; d**list.rows[i]

.cells[5]

.value =

"校正"

;}

這個就是從已知的那個起點座標開始加座標增量,得到每乙個導線點的座標,也就是第二個點的x座標就是x = startx + dertx,y座標是y = starty + derty。後面的點依次加dert。**如下,這裡使用(x|y)這樣的格式顯示

public

void

getpoint

(double bx,

double by,

datagridview d**list,

int num)

}catch

}

做後就完成了,只在豆丁上找了乙個題測試了一下(見開頭)。完整的**沒有貼出來,介面的設計也沒說了,還有一些其他的雜七雜八的功能。這是很早之前寫的,中間一些細節現在也忘了,之前的**寫的不好,但能提供一些參考作用,所以還是記錄下

簡述導線平差計算的五個步驟 閉合導線平差計算步驟

閉合導線平差計算步驟 1 繪製計算草圖。在圖上填寫已知資料和觀測資料。2 角度閉合差的計算與調整 1 計算閉合差 2 計算限差 圖根級 3 若在限差內,則按平均分配原則,計算改正數 4 計算改正後新的角值 3 按新的角值,推算各邊座標方位角。4 按座標正算公式,計算各邊座標增量。5 座標增量閉合差的...

C 窗體程式開機啟動的問題

功能 窗體程式 exe 開機啟動 實現 public void setautorun string filename,bool isautorun catch exception ex finally private void checkbox1 checkedchanged object send...

C 開發Windows窗體應用程式的步驟

使用c 開發應用程式時,一般包括建立專案 介面設計 設定屬性 編寫程式 儲存專案 程式執行等6個步驟。1 建立專案 在visual studio2017開發環境中選擇 檔案 新建 專案 選單,彈出 新建專案 對話方塊,如圖8.1所示。圖8.1 新建專案 對話方塊 選擇 windows窗體應用 net...