畢業(yè)論文:簡易日照分析計算器的算法研究和軟件實現(xiàn)
目錄
摘要: 3
關(guān)鍵詞 3
ABSTRACT 4
KEY WORDS 4
1 引言: 5
2 需求和可行性分析 5
3 日照分析計算器的基本原理: 5
3.1 太陽赤緯Δ: 5
3.2 太陽高度角Α: 6
3.3 太陽方位角Β: 6
4 對日照分析模型的基本建模 6
4.1 對取光點的建模(HOUSE) 7
4.2 對遮擋建筑物的建模(OBSTACLE) 7
4.3 對太陽光線的建模(SUNLIGHT) 7
5 本軟件中設(shè)計的相關(guān)類的重要屬性和方法說明: 7
5.1 COORDINATE類(極坐標) 8
5.2 DATE類(日期) 8
5.3 TIME類(時刻) 8
5.4 LOCATION類(地理位置) 8
5.5 HOUSE類(住房即采光點) 8
5.6 OBSTACLE類(遮擋建筑物) 8
5.7 SUNLIGHT類(日光) 9
5.8 SHADOW類(日影) 9
5.9 DAYSHADOW類(每日日照) 9
5.10 YEARSHADOW類(年日照) 9
6 對單時刻日照情況的分析 9
6.1 太陽赤緯計算公式的實現(xiàn): 9
6.2 太陽高度角公式的實現(xiàn): 11
6.3 太陽方位角公式的實現(xiàn)(SUNLIGHE類中): 11
6.4 日影長度的計算: 12
6.5 取光點特殊時刻的光照情況的判定: 12
4.5.1太陽高度角小于等于0 13
4.5.2太陽高度角為90度時 13
4.5.3無遮擋物情況 13
4.5.4太陽光線方向與取光點取光方向垂直甚至于與取光方向相背 13
6.6 判定一般情況下日照: 14
4.6.1確定遮擋物中心的極徑s(Obstacle類中) 14
4.6.2確定遮擋物四個角點的位置(Obstacle類中): 14
4.6.3區(qū)分單雙面遮擋情況: 16
4.6.4單面遮擋情況下的日照分析: 17
4.6.5雙面遮擋情況的日照分析: 18
7 對取光建筑物日照分析的時間分析: 20
7.1 采樣時間間隔的選取 20
7.2 將日照分析拓展到一日,并統(tǒng)計特定日期的總?cè)照諘r間: 21
7.3 將日照分析拓展到一年,并統(tǒng)計特定年份的總?cè)照諘r間: 22
8 交互界面和使用實例 22
9 小結(jié) 23
10 本軟件使用說明 25
參考文獻: 26
摘要:本文旨在研究開發(fā)一個可面向普通用戶的日照分析軟件中的關(guān)鍵算法,要求依據(jù)算法設(shè)計出的日照分析軟件實用簡便快捷,且又有一定的可用性、精確性。文中對該類軟件的需求背景作了簡要闡述。從介紹一些日照分析中的關(guān)鍵概念和公式入手,經(jīng)由用開發(fā)語言實現(xiàn)公式,到運用公式分析住宅特定時刻日照環(huán)境,再到對住宅時間段內(nèi)日照環(huán)境的統(tǒng)計概述,最后將功能整合以供使用。本文中對日照的分析主要采用棒影法結(jié)合幾何計算方法對建筑物日照與否進行判斷,然后加入時間參數(shù)進行統(tǒng)計整合實現(xiàn)對住宅日照優(yōu)劣的判定。
關(guān)鍵詞:日照;采光;住宅環(huán)境;軟件算法
Abstract
This article aims to research and development of a regular user of sunshine for the key algorithm analysis software, algorithm design requirements based on analysis of software utilities out of the sunshine simple and quick, and has some availability, accuracy. In this article, the demand for this type of software are briefly described the background. Introduce some sunshine from the analysis of the key con
……(新文秘網(wǎng)http://m.120pk.cn省略2711字,正式會員可完整閱讀)……
的情況, 在分析中,本文將建筑物窗臺或稱取光處建模為一個質(zhì)點。為使數(shù)據(jù)和公式中的角度相統(tǒng)一,也為了緊接著的各種相對位置的計算方便,不妨以取光點為坐標原點,以正南方向為坐標極軸,以太陽方位角的計量方法為模板建立極坐標系,即以正南為0°,向西增加為正,向東減少為負,最后合并于正北,為±180°。
4.1 對取光點的建模(House)
按照此方法可進行取光點的建模,如下
1.取光方向,記為House.toward,為取光點方向即窗戶朝向在上述
坐標系中的表示。
2.取光點高度在日照分析中參與的運算簡單,無需建立高度坐標,在本分析中,取光點高度記為h。
3. 取光點的地理位置統(tǒng)一在House.l中,l為Location模型(模型內(nèi)容見附錄Location類程序清單),記錄了當?shù)亟?jīng)緯度。到此取光點的建模完成。
4.2 對遮擋建筑物的建模(Obstacle)
本文將遮擋建筑物簡化為長方體,以便于分析的實現(xiàn)且與實際常見的建筑物較為相符。建模如下:
1. 與取光點的水平方向關(guān)系;建模中仍以上述建立的極坐標為坐標系,
以障礙物中心為障礙物的實點,建立角度,記為 Obstacle. direction。
2. 與取光點的水平距離:模型中仍以障礙物中心為障礙物的實點,計算
該點與取光點的水平距離,記為Obstacle.s,由于這段距離中有部分位于建筑物中,不易測量,可由計算取得,故將Obstacle.s減去這部分處于建筑物中的距離后得到的可測量值記為Obstacle.distance
3. 障礙物的擺設(shè)方向:建模中以建筑物長邊的面的朝向作為建模對象,
基準仍為上述坐標系,并規(guī)定以偏南面的長面為取值對象,記為Obstacle. toward,即-90°
4. 遮擋物的長、寬、高分別記為Obstacle..length、Obstacle.width、
Obstacle.height。
4.3 對太陽光線的建模(Sunlight)
本文中分析太陽光線是視陽光為平行直線,建模如下:
1.太陽光線的屬性受時間和地理位置的影響,建模中時間分兩項計,
即日期Sunlight .date和每日的太陽時Sunlight .time(具體見附錄Date類和Time類的程序清單),由于本文分析是地理位置是隨取光點而定的,故無需再為此建模
2.太陽赤緯角、太陽高度角、太陽方位角分別記為Sunlight.declination、Sunlight.h、Sunlight.s
5 本軟件中設(shè)計的相關(guān)類的重要屬性和方法說明:
5.1 Coordinate類(極坐標)
主要涉及極坐標的創(chuàng)建、運算和坐標系轉(zhuǎn)換等
屬性:angle 極角, r 極徑
方法:Coordinate()、Coordinate(double a,double r) 創(chuàng)建方法
set(double a,double r) 用極坐標值更改記錄
set(double a,double b,int i) 用點坐標值更改記錄
getangle() 、 getr() 獲取屬性值
5.2 Date類(日期)
主要涉及日期的創(chuàng)建、運算
屬性:year 年份、month 月份、day 日、 date 積日(即一年中的第幾天)
方法:Date(int y,int m,int d) 一般創(chuàng)建方法
Date(int y,int date) 用年和積日的創(chuàng)建方法,只有年和積日兩個屬性可用
getdate()、getyear() 獲取積日和年份屬性值
5.3 Time類(時刻)
主要涉及時間的創(chuàng)建、運算等,為24小時制
屬性:hour 時、minute 分、second 秒 time 小數(shù)計時間
方法:Time(int y,int m,int d) 一般創(chuàng)建方法
Time(float t) 用小數(shù)計時間的創(chuàng)建方法,只有hour和time兩個屬性可用
gettime()、gethour() 獲取time和hour屬性
toString() 產(chǎn)生時間字符串
5.4 Location類(地理位置)
主要涉及地理坐標的創(chuàng)建等
屬性:latitude 緯度longitude 經(jīng)度
方法:getlatitude()、getlongitude() 獲取緯度值和經(jīng)度值
5.5 House類(住房即采光點)
主要涉及采光點模型的創(chuàng)建等
屬性:l 記錄住房的地理位置為Location的對象
height 采光點高度 toward 采光方向,正南為0向西增加向東減少
方法:House(double latitude,double longitude,float h,double d) 創(chuàng)建方法
getlocation() 、getheight()、gettoward()獲取屬性值
5.6 Obstacle類(遮擋建筑物)
主要涉及遮擋建筑物的創(chuàng)建、運算等
屬性:lenght,width ,height遮擋物的長寬高
direction 遮擋物相對采光點位角,正南為0,向西增加,向東減少
toward 遮擋物長面朝向,正南為0,向西增加,向東減少
house 作為參照物的采光點
A,B,C,D遮擋物4個角點的極坐標
s 遮擋建筑物與采光點的實際中心距離
方法:Obstacle(float lenght,float width,float height,double direction,double toward,float distance,House house) 創(chuàng)建方法
gethouse()、gets()、getdirection()、gettoward()、getlenght()、getwidth()、getheight()獲取屬性值
getminAngle() 求出做小極角角點
getma*Angle() 求出最大極角角點
getminr() 求出最小極徑角點
onlyface() 判斷是否是單面遮擋
getr(double angle) 求遮擋面上對應(yīng)極角的點的極徑
5.7 Sunlight類(日光)
主要涉及實現(xiàn)天陽數(shù)據(jù)的計算和陽光模型的創(chuàng)建等
屬性:h 太陽高度角、 s 太陽方位角、 declination太陽赤緯
time 時刻、date 日期
方法:Sunlight(Location l,Date d,Time t)創(chuàng)建方法
gettime()、getdate()、geth()、gets()、getdeclination()獲取屬性值
5.8 Shadow類(日影)
主要涉及日影創(chuàng)建和單時刻日照分析等
屬性:obstacle遮擋建筑物對象 cover遮擋與否的判斷值
time 時間 date 日期
方法:Shadow(Date d,Time t,Obstacle o)創(chuàng)建方法
ifcover() 獲取cover值true為無日照,false為有日照
5.9 DayShadow類(每日日照)
主要涉及對一天的日照統(tǒng)計等
屬性:time1[]記錄日照起始點、time2[] 記錄日照結(jié)束點
alltime 統(tǒng)計當日總?cè)照諘r長、n記錄日照時間段數(shù)目
date 日期、obstacle遮擋物
方法:DayShadow(Date d,Obstacle o)創(chuàng)建方法
getalltime() 獲取當日日照時長
toString() 生成描述字符串
5.10 YearShadow類(年日照)
主要涉及對一年的日照統(tǒng)計等
屬性:year 年份、alltimeofyear 年內(nèi)日照時長、n 本年天數(shù)
a,b,c,d記錄春秋分,夏至日,大寒日,冬至日日照時長
obstacle遮擋建筑物信息
方法:YearShadow(int y,Obstacle o)創(chuàng)建方法
toString() 產(chǎn)生描述性字符串
6 對單時刻日照情況的分析
在本文的日照分析的基本方法是先判定單一時刻取光點的日照情況,而后加入時間參數(shù),從而對建筑物的日照時間進行統(tǒng)計,很明顯對但一時刻的日照情況的分析是本軟件的核心步驟,以下將單一時刻日照分析的實現(xiàn)做詳細分析。
6.1 太陽赤緯計算公式的實現(xiàn):
按照上述太陽赤緯角的公式用JAVA語言可表述為(Sunlighe類中)
Double n=79.6764+0.2422*(d.getyear()-1985)-(int)((d.getyear()-1985) /4);
double T=d.getdate()-n;
double a=2*Math.PI*T/(365.2422);
declination=(0.3723+23.2567*Math.sin(a)+0.1149*Math.sin(2*a)-0.1712*Math.sin(3*a) -0.758*Math.cos(a)+0.3656*Math.cos(2*a)+0.0201*Math.cos(3*a))*Math.PI/(double)180;
其中declination即為原式中的太陽赤緯δ,a為原式中的θ,a為原式中的θ,n為原式中的N0,T為原式中的t ,d.getdate()為原式中的n。
到此重心轉(zhuǎn)移到了積日d.getdate()的計算。積日得計算又涉及到平年和閏年得區(qū)分,按照規(guī)定能被400整除或能被4整除但不能被100整除的為閏年,否者為平年,閏年的2月有29天,平年的2月為28天,故d.getdate()的算法可如下進行(Date類中):
if(year%4==0&&year%100!=0||year%400==0){
switch (month){
case 1: date=day;break;
case 2: date=31+day;break;
case 3: date=31+29+day;break;
case 4: date=31+29+day+31;break;
case 5: date=31+29+day+31+30;break;
case 6: date=31+29+day+31+30+31;break;
case 7: date=31+29+day+31+30+31+30;break;
case 8: date=31+29+day+31+30+31+30+31;break;
case 9: date=31+29+day+31+30+31+30+31+31;break;
case 10: date=31+29+day+31+30+31+30+31+31+30;break;
case 11: date=31+29+day+31+30+31+30+31+31+30+31;break;
case 12: date=31+29+day+31+30+31+30+31+31+30+31+30;break;
}
} else{
switch (month){
case 1: date=day;break;
case 2: date=31+day;break;
case 3: date=31+28+day;break;
case 4: date=31+28+day+31;break;
case 5: date=31+28+day+31+30;break;
case 6: date=31+28+day+31+30+31;break;
case 8: date=31+28+day+31+30+31+30+31;break;
case 9: date=31+28+day+31+30+31+30+31+31;break;
case 10: date=31+28+day+31+30+31+30+31+31+30;break;
case 11: date=31+28+day+31+30+31+30+31+31+30+31;break;
case 12: date=31+28+day+31+30+31+30+31+31+30+31+30;break;
}
}
其中數(shù)據(jù)date即為原始公式中的n即積日,至此太陽赤緯的計算得以實現(xiàn)。
6.2 太陽高度角公式的實現(xiàn):
按照太陽高度角的計算公式t=15°(n-12)和sinα=sin φ sin δ+cos φ cos δ cos t用程序可表達為(Sunlighe類中):
double ta=15*(t.gettime()-12)*Math.PI/(double)180;
double sinh=Math.sin (l.getlatitude())*Math.sin(declination)
+Math.cos (l.getlatitude())
* Math.co ……(未完,全文共42340字,當前僅顯示7616字,請閱讀下面提示信息。收藏《畢業(yè)論文:簡易日照分析計算器的算法研究和軟件實現(xiàn)》)