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