本文整理汇总了C++中wxDateTime::SetYear方法的典型用法代码示例。如果您正苦于以下问题:C++ wxDateTime::SetYear方法的具体用法?C++ wxDateTime::SetYear怎么用?C++ wxDateTime::SetYear使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxDateTime
的用法示例。
在下文中一共展示了wxDateTime::SetYear方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: calculateSun
//.........这里部分代码省略.........
double raris = RADIAN * atan(0.91764 * tan(DEGREE * lris));
if (raris > 360) raris -= 360;
if (raris < 0) raris += 360;
double raset = RADIAN * atan(0.91764 * tan(DEGREE * lset));
if (raset > 360) raset -= 360;
if (raset < 0) raset += 360;
/*
5b. right ascension value needs to be in the same quadrant as L
Lquadrant = (floor( L/90)) * 90
RAquadrant = (floor(RA/90)) * 90
RA = RA + (Lquadrant - RAquadrant)
*/
double lqris = (floor( lris/90)) * 90;
double raqris = (floor(raris/90)) * 90;
raris = raris + (lqris - raqris);
double lqset = (floor( lset/90)) * 90;
double raqset = (floor(raset/90)) * 90;
raset = raset + (lqset - raqset);
/*
5c. right ascension value needs to be converted into hours
RA = RA / 15
*/
raris = raris/15;
raset = raset/15;
/*
6. calculate the Sun's declination
sinDec = 0.39782 * sin(L)
cosDec = cos(asin(sinDec))
*/
double sinDecris = 0.39782 * sin(DEGREE * lris);
double cosDecris = cos(asin(sinDecris));
double sinDecset = 0.39782 * sin(DEGREE * lset);
double cosDecset = cos(asin(sinDecset));
/*
7a. calculate the Sun's local hour angle
cosH = (cos(zenith) - (sinDec * sin(latitude))) / (cosDec * cos(latitude))
if (cosH > 1)
the sun never rises on this location (on the specified date)
if (cosH < -1)
the sun never sets on this location (on the specified date)
*/
double cosZenith = cos(DEGREE * ZENITH_OFFICIAL);
double coshris = (cosZenith - (sinDecris * sin(DEGREE * latit))) / (cosDecris * cos(DEGREE * latit));
double coshset = (cosZenith - (sinDecset * sin(DEGREE * latit))) / (cosDecset * cos(DEGREE * latit));
bool neverrises = false;
if (coshris > 1) neverrises = true;
if (coshris < -1) neverrises = true; //nohal - it's cosine - even value lower than -1 is ilegal... correct me if i'm wrong
bool neversets = false;
if (coshset < -1) neversets = true;
if (coshset > 1) neversets = true; //nohal - it's cosine - even value greater than 1 is ilegal... correct me if i'm wrong
/*
7b. finish calculating H and convert into hours
if if rising time is desired:
H = 360 - acos(cosH)
if setting time is desired:
H = acos(cosH)
H = H / 15
*/
double hris = 360 - RADIAN * acos(coshris);
hris = hris/15;
double hset = RADIAN * acos(coshset);
hset = hset/15;
/*
8. calculate local mean time of rising/setting
T = H + RA - (0.06571 * t) - 6.622
*/
tris = hris + raris - (0.06571 * tris) - 6.622;
tset = hset + raset - (0.06571 * tset) - 6.622;
/*
9. adjust back to UTC
UT = T - lngHour
NOTE: UT potentially needs to be adjusted into the range [0,24) by adding/subtracting 24
*/
double utris = tris - lngHour;
if (utris > 24) utris -= 24;
if (utris <0) utris += 24;
double utset = tset - lngHour;
if (utset > 24) utset -= 24;
if (utset <0) utset += 24;
sunrise = convHrmn(utris);
if (neverrises) sunrise.SetYear(999);
sunset = convHrmn(utset);
if (neversets) sunset.SetYear(999);
/*
Optional:
10. convert UT value to local time zone of latitude/longitude
localT = UT + localOffset
*/
}