資源簡介
該算法能夠根據地球上任意位置計算其日出、日落時間,能夠計算該地在指定時間的太陽高度角、方位角,能夠計算日地距離、太陽位置等。
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Windows.Forms;
using?System.IO;
namespace?Common
{
????public?class?CalcCommon
????{
????????public?static?string?rootPath?=?Application.StartupPath;
????????public?static?string?GetWeather
????????{
????????????get
????????????{
????????????????return?Path.Combine(rootPath?“Plugins\\Weather\\Weather.txt“);
????????????}
????????}
????????#region?光照計算
????????public?static?void?CalcSunLight(DateTime?now?double?lon?double?lat?out?double?Hs?out?double?As)
????????{
????????????SunTimes.Instance.CalculateSunHsAs(now?lon?lat?out?Hs?out?As);
????????}
????????#endregion
????}
????///?
????///?計算日出日落時間
????///?例如:CalculateSunRiseSetTimes((double)28.2172898?(double)113.0589294
????///????????????????System.DateTime.Now.AddDays(31)?ref??sunrise?ref?sunrest?ref?yesrise?ref?yesset);
????///?
????public?class?SunTimes
????{
????????#region?變量
????????private?object?mLock?=?new?object();
????????private?const?double?mDR?=?Math.PI?/?180;
????????private?const?double?mK1?=?15?*?mDR?*?1.0027379;
????????private?int[]?mRiseTimeArr?=?new?int[2]?{?0?0?};
????????private?int[]?mSetTimeArr?=?new?int[2]?{?0?0?};
????????private?double?mRizeAzimuth?=?0.0;
????????private?double?mSetAzimuth?=?0.0;
????????private?double[]?mSunPositionInSkyArr?=?new?double[2]?{?0.0?0.0?};
????????private?double[]?mRightAscentionArr?=?new?double[3]?{?0.0?0.0?0.0?};
????????private?double[]?mDecensionArr?=?new?double[3]?{?0.0?0.0?0.0?};
????????private?double[]?mVHzArr?=?new?double[3]?{?0.0?0.0?0.0?};
????????private?bool?mIsSunrise?=?false;
????????private?bool?mIsSunset?=?false;
????????#endregion
????????#region?單例模型
????????private?static?readonly?SunTimes?mInstance?=?new?SunTimes();????//?The?singleton?instance
????????private?SunTimes()?{?}
????????public?static?SunTimes?Instance
????????{
????????????get?{?return?mInstance;?}
????????}
????????#endregion
????????#region?公有成員
????????public?static?double?Sin(double?x)
????????{
????????????return?Math.Sin(x);
????????}
????????public?static?double?Cos(double?x)
????????{
????????????return?Math.Cos(x);
????????}
????????public?static?double?Tan(double?x)
????????{
????????????return?Math.Tan(x);
????????}
????????public?static?double?PI
????????{
????????????get?{?return?Math.PI;?}
????????}
????????///?
????????///?計算日升日落時間,如果時間不合法,則返回false
????????///?
????????///?Latitude?coordinates.
????????///?Longitude?coordinates.
????????///?Date?for?which?to?calculate.
????????///?Sunrise?time?(output)
????????///?Sunset?time?(output)
????????///?Whether?or?not?the?sun?rises?at?that?day
????????///?
- 上一篇:c#做的學生選課系統代碼完整
- 下一篇:2014年廣州溫度風速風向統計
評論
共有 條評論