穆傳周 王佳帥 馮德義


摘 要:作為測(cè)繪工程專業(yè)的本科生,測(cè)量、繪圖、計(jì)算是三大基本功。在這三個(gè)當(dāng)中,測(cè)量數(shù)據(jù)計(jì)算相對(duì)比較繁瑣,也是十分重要的部分,因?yàn)橐淮當(dāng)?shù)據(jù)就是一個(gè)大型工程根基,如果數(shù)據(jù)錯(cuò)誤,那么造成的損失不言而喻。基于這一點(diǎn),相關(guān)人員開發(fā)了多款適用于測(cè)繪計(jì)算的計(jì)算器,為測(cè)繪工作者的數(shù)據(jù)計(jì)算帶來了福音,減輕了很大的工作量。
關(guān)鍵詞:Java GUI編程;測(cè)繪計(jì)算器;角度測(cè)量;高差測(cè)量
引言:
市面上的計(jì)算器都是工藝成品,那么如何通過計(jì)算機(jī)程序開發(fā)出一款計(jì)算器?基于Java GUI開發(fā)的適用于測(cè)繪行業(yè)的計(jì)算器相對(duì)比較繁瑣,不僅僅是簡(jiǎn)單的加減乘除。由于測(cè)繪數(shù)據(jù)[1]所涉及到的范圍比較廣,其中包括角度計(jì)算、三角函數(shù)計(jì)算、對(duì)數(shù)計(jì)算、冪次方、弧度制轉(zhuǎn)化等等,但是本篇文章只涉及簡(jiǎn)單的角度計(jì)算,方位角計(jì)算和高差計(jì)算。
1.角度測(cè)量計(jì)算器
目前來說,市面上關(guān)于測(cè)繪的計(jì)算器各式各樣,如CASIO(卡西歐)、得力DELI、TI(德州儀器)、SHARP(夏普)、Canon (佳能)、COMIX(齊心)等。他們的功能都很全面,本部分只對(duì)計(jì)算器的角度計(jì)算開發(fā)功能進(jìn)行說明,首先我們對(duì)計(jì)算器適用范圍進(jìn)行選擇,選擇我們需要的角度測(cè)量。
對(duì)于窗體這部分內(nèi)容,不再進(jìn)行贅述。主要談?wù)勅绾螌?shí)現(xiàn)角度計(jì)算。其實(shí),測(cè)繪中的角度計(jì)算和我們?nèi)粘I钪械氖M(jìn)制計(jì)算有相似之處,相似之處在于他們的計(jì)算過程都是些數(shù)值加減運(yùn)算,這個(gè)比較簡(jiǎn)單。不同之處就是角度計(jì)算中度分秒的轉(zhuǎn)化問題,以及度分秒之間的計(jì)算順序和計(jì)算方法。舉個(gè)簡(jiǎn)單的例子,如果我們第一次測(cè)量一個(gè)水平角,為了方便通常將儀器進(jìn)行置零處理,此時(shí)記錄第一個(gè)角度值為0°0000,轉(zhuǎn)動(dòng)儀器測(cè)得第二個(gè)水平角值為58°2536,這個(gè)時(shí)候角差我們就可以很方便計(jì)算出來,就是第二個(gè)角的讀數(shù),如果此時(shí)再測(cè)第三個(gè)水平角的話,可能計(jì)算起來就沒有那么方便了,假設(shè)讀數(shù)第三個(gè)角為98°4924,此時(shí)計(jì)算第二個(gè)角的讀數(shù)則為98°4924-58°2536=73°2348。這其中計(jì)算需要注意的第一個(gè)為順序問題為先從秒開始計(jì)算,然后算分最后算度,而不是整體數(shù)值計(jì)。其次,我們需要明白度分秒的轉(zhuǎn)換1°=60,1=60,這個(gè)和我們正常的十進(jìn)制計(jì)算還是有區(qū)別的。
基于以上兩點(diǎn)對(duì)如何實(shí)現(xiàn)進(jìn)行深入地解釋說明。首先,對(duì)計(jì)算器的布局進(jìn)行設(shè)計(jì),通過組合工具完成計(jì)算器的基本操作。下面進(jìn)行兩步,第一設(shè)計(jì)運(yùn)算順序,第二設(shè)計(jì)計(jì)算方法。計(jì)算順序,首先保證輸入的數(shù)據(jù)正確,最主要的就是分和秒需要小于60,這里只需要使用if進(jìn)行條件判斷即可。其次保證我們得先從秒開始計(jì)算,然后計(jì)算分,最后進(jìn)行度的加減運(yùn)算。這一步可以使用數(shù)組來存儲(chǔ)我們測(cè)得的數(shù)據(jù),然后利用for循環(huán)從存儲(chǔ)數(shù)組的最后一個(gè)數(shù)來執(zhí)行運(yùn)算操作,依次往下進(jìn)行執(zhí)行分和度的計(jì)算。那么,在角度測(cè)量的過程中,除了測(cè)簡(jiǎn)單的水平角,有時(shí)還需要計(jì)算方位角,那么方位角的觀測(cè)也是可以用程序操作來實(shí)現(xiàn)計(jì)算程序,具體如下。
首先定義一個(gè)方位角大小,然后根據(jù)其他方位角的坐標(biāo)和方向值,進(jìn)行依次計(jì)算,例如規(guī)定αab = 15°,∠bap = 90°,∠apq = 127°,∠pqh = 131°,求qh的方位角。知道αab = 15°,∠bap = 90°即可算出直線ap的方位角為105°,此時(shí)需要求pq的方位角,但是此時(shí)我們知道ap和q不是共起點(diǎn),這是需要我們ap方位角加180°,變成共起點(diǎn)的方位角,算的pa的方位角為285°,在進(jìn)行qh的方位角計(jì)算,這個(gè)時(shí)候也需要對(duì)pq方位角進(jìn)行轉(zhuǎn)化,轉(zhuǎn)化成與qh是共起點(diǎn)的,最終算得的qh方位角大小為101°,通過以上說明,我們需要將文字變成代碼的形式執(zhí)行。在這個(gè)程序當(dāng)中需要進(jìn)行一個(gè)while進(jìn)行判斷,如果兩條直線是共起點(diǎn),那么則進(jìn)行相應(yīng)的角度加減運(yùn)算,如果兩條直線不是共起點(diǎn),那么他們的方位角需要分情況進(jìn)行討論,如果這個(gè)角是大于180°,轉(zhuǎn)化成共起點(diǎn)方位角時(shí)需要減去180°;如果這個(gè)叫小于180°,則需要加上180°,這部分通過while的重復(fù)判斷執(zhí)行最終算出集結(jié)果。
2.高差測(cè)量計(jì)算器
在使用計(jì)算器進(jìn)行高差測(cè)量計(jì)算時(shí),我們需要選擇高差測(cè)量。相對(duì)于前面的角度測(cè)量,高差測(cè)量相對(duì)來說要簡(jiǎn)單得多,只需要簡(jiǎn)單的操作即可。在測(cè)量過程中可能會(huì)有超限誤差的存在[2],普通的計(jì)算器是無法識(shí)別這種錯(cuò)誤,但是基于Java編程開發(fā)的計(jì)算器可以起到提醒作用,操作如下。
我們選擇高差測(cè)量之后,就需要進(jìn)行對(duì)限差進(jìn)行規(guī)定。這里只需要簡(jiǎn)單的定義即可,定義限差之后,只需要對(duì)我們算出的數(shù)值進(jìn)行一個(gè)判斷。這里簡(jiǎn)單的以四等水準(zhǔn)測(cè)量為例,進(jìn)行操作說明。首先,既然四等水準(zhǔn)測(cè)量,那么我們就可以得到閉合容許差值為6*√4=12mm,紅黑面的讀數(shù)之差不大于3mm。算出容許差和限差之后,我們定義一個(gè)數(shù)int x = 12,int y = 3;然后進(jìn)行其他讀數(shù)。讀的的其他黑紅面數(shù)據(jù)為2198, 6888;1600,6388; 我們通過計(jì)算發(fā)現(xiàn),紅黑面的差值一個(gè)是-3,一個(gè)是-1,都在允許范圍之內(nèi)(小于3mm),這個(gè)時(shí)候計(jì)算器會(huì)正常運(yùn)行,不出錯(cuò)誤。如多說計(jì)算結(jié)果出錯(cuò)了,超出了限差,那么此時(shí)計(jì)算器就會(huì)提示數(shù)據(jù)出錯(cuò)。這些都是一些簡(jiǎn)單的小操作,只是對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的加減操作和數(shù)據(jù)結(jié)果進(jìn)行判斷選擇,避免計(jì)算錯(cuò)誤的出現(xiàn)。
3.結(jié)語(yǔ)
通過簡(jiǎn)單的案例說明,由此解釋編程給我們帶來的便捷,可能通過以上簡(jiǎn)單程序不足以說明程序優(yōu)于人工,但是當(dāng)我們遇到大的工程或者繁瑣計(jì)算時(shí),所設(shè)計(jì)的計(jì)算還是十分方便的。在方位角的計(jì)算程序中,while選擇就減少很多不必要的麻煩,自動(dòng)判斷角度執(zhí)行加減變化還是不變。總之,通過Java GUI編寫的簡(jiǎn)易測(cè)量計(jì)算器為我們的計(jì)算帶來很大便捷。
參考文獻(xiàn):
[1]張龍. 網(wǎng)絡(luò)資源測(cè)繪數(shù)據(jù)表達(dá)與分析技術(shù)研究[D].戰(zhàn)略支援部隊(duì)信息工程大學(xué),2018.
[2]溫浩興,許謙,王娜.南山26米射電望遠(yuǎn)鏡軌道高差測(cè)量及其對(duì)指向精度的影響[J].天文研究與技術(shù),2019,16(02):158-166.