在測繪的實際操作中,我們會遇到這樣的一些閉合導線的計算。閉合導線的計算比較複雜,我們如何利用計算機幫助我們快速地計算,這裡我們使用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...