国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android平臺太陽角度計算軟件的設(shè)計與實(shí)現(xiàn)

2015-12-29 09:16朱瑜紅
關(guān)鍵詞:經(jīng)度仰角緯度

朱瑜紅,鄧 志

(寧夏大學(xué) 物理電氣信息學(xué)院,寧夏 銀川 750021)

Android是一個專為移動終端打造的軟件平臺,其主要包括操作系統(tǒng)、中間件、用戶界面及應(yīng)用程序.Android系統(tǒng)擁有移動終端能便捷使用所需的全部軟件,并且其開放性還保證了該平臺不會阻礙任何移動產(chǎn)業(yè)的創(chuàng)新.正是因?yàn)锳ndroid系統(tǒng)這種開源、完整、免費(fèi)的特性,自它誕生以來迅速得到了大量用戶以及許多廠商的青睞.在Android系統(tǒng)下手機(jī)的各種應(yīng)用異常豐富,例如拍照、導(dǎo)航等,但在這些應(yīng)用中都沒有關(guān)于太陽角度計算的功能.在本文中基于Android系統(tǒng)平臺,利用Google Android SDK和JAVA Eclipse等開發(fā)工具,設(shè)計了一個有關(guān)太陽角度計算的軟件.該軟件可作為一個組件方便的添加到應(yīng)用中,給予這些應(yīng)用更多的功能和實(shí)用性.例如結(jié)合導(dǎo)航功能可以迅速判斷此時此地的太陽角度,進(jìn)而判斷方向,即使在陰雨天也不用擔(dān)心.或者可以將這種功能集成到天氣預(yù)報軟件中,可為軟件增添趣味性.

1 太陽角度計算

1.1 太陽直射點(diǎn)緯度的計算

太陽直射點(diǎn)的緯度為δ(北緯δ取正值,南緯δ取負(fù)值),黃道面與赤道面的二面角為α(α即地理和天文中的“黃赤交角”,α的大小為23.5°),太陽在黃道上的點(diǎn)相對春分點(diǎn)的角度為ω(ω以下簡稱“黃道角”,一年中某天的ω角度可利用這天與春分日的天數(shù)差n表示,對平年近似算式為對閏年近似算式為.直射點(diǎn)緯度δ,黃赤交角α,黃道角ω三者之間的關(guān)系為:sin(δ)=sin(α)*sin(ω),利用該公式即可計算出太陽直射點(diǎn)的緯度.

1.2 地球上某地任意時刻太陽仰角和偏角的計算

建立地心坐標(biāo)系:Z軸方向取從地心指向地軸北極的方向,X軸取赤道面與太陽直射經(jīng)度線平面的交線方向,Y軸取赤道上位于X軸東側(cè)90°角的方向.建立本地坐標(biāo)系:z軸取垂直地面指向正天頂?shù)姆较?,x軸取正南方向,y軸取正東方向.假設(shè)某地在地球上的緯度為θ(北緯θ取正值,南緯θ取負(fù)值),該地某時刻對應(yīng)的時間角為φ(φ為當(dāng)?shù)亟?jīng)度與太陽直射經(jīng)度之間的差值,φ每小時轉(zhuǎn)過的角度為15°,φ的大小可以利用該時刻與當(dāng)?shù)卣鐣r刻的時間差t表示,公式為:φ=15°*t,t的單位為小時,上午 t取負(fù)值,下午t取正值),則地心坐標(biāo)系與本地坐標(biāo)系之間的轉(zhuǎn)化關(guān)系為:

設(shè)當(dāng)天的太陽的直射點(diǎn)緯度為δ,則由兩個坐標(biāo)系的轉(zhuǎn)化關(guān)系可得到太陽直射點(diǎn)位置矢量在本地坐標(biāo)系中的表達(dá)式為:

假設(shè)太陽在本地坐標(biāo)系中的高度角為H(H為太陽與地平線的夾角),方位角為P(P為太陽在地面上的豎直投影點(diǎn)與本地坐標(biāo)系原點(diǎn)連線和本地坐標(biāo)系正南方向之間的夾角,該角在正南方向偏東則取正值,偏西則取負(fù)值),則太陽的直射點(diǎn)位置矢量在本地坐標(biāo)系中的表達(dá)式又為:

本地坐標(biāo)系中的兩個表達(dá)式是完全等價的,因此有:

2 太陽角度計算軟件的設(shè)計

2.1 軟件代碼的組織架構(gòu)

本文設(shè)計的太陽角度計算軟件主要包括以下幾部分:

(1)程序界面,其布局文件為 eslayout文件夾中名為main.xml的文件.在此文件中同時設(shè)置了相對應(yīng)的圖形界面,其布局方式選用相對布局,使用xml語言編寫;

(2)前次使用所記錄的信息,保存在res/raw中,可以實(shí)現(xiàn)快速訪問;

(3)太陽角度計算相關(guān)程序city.java使用java語言編寫,實(shí)現(xiàn)了通過經(jīng)緯度計算得出當(dāng)前時刻的太陽偏角與仰角;

(4)軟件主程序命名為sunangle.java,使用java語言編寫.在此程序中完成對控件的監(jiān)聽,同時進(jìn)行相應(yīng)的操作以及對用戶操作的響應(yīng).

2.2 界面布局文件main.xml

此軟件的使用者是廣大用戶,為此設(shè)計出的程序必須具有良好的人機(jī)交互界面,這樣才能便于用戶使用,從而增加用戶的操作興趣,提高軟件的普及率.因此,主界面的實(shí)現(xiàn)從以下幾個方面設(shè)計完成.

2.2.1 城市選擇菜單的創(chuàng)建與布局

2.2.2 經(jīng)緯度輸入文本框的布局

由于//TextView是不可編輯文本框,因此需要調(diào)用setText()函數(shù)來設(shè)置其中的內(nèi)容,并且在相對布局方式中要將其位置設(shè)置在“當(dāng)?shù)鼐暥取?、“?dāng)?shù)亟?jīng)度”的右邊,同時將其文本框中的文字大小設(shè)置為18dp.其默認(rèn)緯度是38.16°,默認(rèn)經(jīng)度是106.1°,為銀川所在經(jīng)緯度.

2.2.3 太陽仰角與偏角顯示布局

2.2.4 當(dāng)前時間顯示布局

2.2.5 Button按鈕控件的布局

2.3 太陽角度計算程序

太陽角度計算主要通過city.java程序?qū)崿F(xiàn),將輸入的經(jīng)緯度經(jīng)過判斷與計算,得到太陽仰角與偏角的數(shù)值,將此數(shù)值返回主程序sunangle.java.

該程序流程圖如圖1所示,在得到相關(guān)數(shù)據(jù)后首先會對經(jīng)緯度的數(shù)值進(jìn)行判斷,如果不在范圍內(nèi),則會輸出太陽仰角為0°,偏角為0°.如果通過判定,則會計算出相應(yīng)的太陽仰角與偏角.

圖1 太陽角度計算程序city.java流程圖

2.4 主程序sunangle.java

主程序流程圖如圖2所示.在程序開始后會有程序監(jiān)聽,其間隔是1000毫秒,即一秒鐘.主要目的是獲取經(jīng)度和緯度的具體數(shù)值,然后會將其實(shí)例化為sunangle.java.

經(jīng)度和緯度數(shù)值的獲取方式有三種,一是讀取經(jīng)度和緯度輸入框中的具體數(shù)值,二是讀取前次使用所保存的數(shù)據(jù),最后一種方法是判斷下拉菜單所選擇的城市,然后讀取相應(yīng)城市的經(jīng)度和緯度.

圖2 主程序sunangle.java流程圖

2.5 界面實(shí)現(xiàn)效果

圖3至圖6是程序運(yùn)行的效果圖.

圖3 程序主界面

圖4 城市選擇

圖5 幫助界面

圖6 程序運(yùn)行界面

3 結(jié)束語

經(jīng)過應(yīng)用演示和測試,本文設(shè)計開發(fā)的太陽角度計算軟件能夠在所有Android操作系統(tǒng)的手機(jī)和移動終端上安裝并穩(wěn)定運(yùn)行,可以為不同需求的用戶提供準(zhǔn)確、便捷的服務(wù).因此本設(shè)計具有較強(qiáng)的實(shí)用性,對其他類似開發(fā)工作也具有一定的參考借鑒意義.

〔1〕劉乾發(fā).基于Java平臺的手機(jī)軟件架構(gòu)的研究與應(yīng)用[D].浙江:浙江大學(xué)軟件學(xué)院,2007.

〔2〕姚顯昊,劉衛(wèi)國.Android的架構(gòu)和應(yīng)用開發(fā)研究[J].計算機(jī)系統(tǒng)應(yīng)用,2008(11):78-81.

〔3〕FrankAbleson,Android 開發(fā)簡介.developer Works.2009(6):130-131.

〔4〕楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機(jī)械工業(yè)出版社,2010.28.

〔5〕高煥堂.Google Android應(yīng)用框架原理與程式設(shè)計[M].(2008-11-29)[2011-03-05],http://d.download.csdn.net/down/820544/carylin.

猜你喜歡
經(jīng)度仰角緯度
緯度未知條件下的抗擾動慣性系初始對準(zhǔn)改進(jìn)方法
用銳角三角函數(shù)解決仰角、俯角問題
對時差計算方法的探討
緯度
月面余經(jīng)度:一個冷門概念及其使用
分段三次Hermite插值計算GNSS系統(tǒng)衛(wèi)星仰角
臉的基本畫法(三)
如何計算地方時
抚顺县| 临湘市| 淮阳县| 津市市| 阜南县| 台中县| 宜君县| 江山市| 精河县| 繁峙县| 滁州市| 宜黄县| 宜君县| 白河县| 彭阳县| 隆化县| 泗阳县| 华安县| 浦东新区| 东乌珠穆沁旗| 邳州市| 襄汾县| 绥德县| 休宁县| 杭锦旗| 贞丰县| 清流县| 迁西县| 东乡族自治县| 嘉峪关市| 禹城市| 古交市| 宁陕县| 兴城市| 崇州市| 历史| 青阳县| 渑池县| 长丰县| 上杭县| 清水河县|