📄 astronomicalmath.hpp
字号:
inline Bool AstronomicalMath::Date::operator>(SFXDateConstRef date) const
{
return operator>(Date(date));
}
inline Bool AstronomicalMath::Date::operator>(DateConstRef date) const
{
return _days > date._days;
}
inline Bool operator>(SFXDateConstRef date1, AstronomicalMath::DateConstRef date2)
{
return date2.operator<(date1);
}
inline Bool AstronomicalMath::Date::operator<=(SFXDateConstRef date) const
{
return operator<=(Date(date));
}
inline Bool AstronomicalMath::Date::operator<=(DateConstRef date) const
{
return _days <= date._days;
}
inline Bool operator<=(SFXDateConstRef date1, AstronomicalMath::DateConstRef date2)
{
return date2.operator>=(date1);
}
inline Bool AstronomicalMath::Date::operator<(SFXDateConstRef date) const
{
return operator<(Date(date));
}
inline Bool AstronomicalMath::Date::operator<(DateConstRef date) const
{
return _days < date._days;
}
inline AstronomicalMath::Date AstronomicalMath::Date::operator+(DateDurationConstRef duration) const
{
return Date(_days + duration.Get());
}
inline AstronomicalMath::Date AstronomicalMath::Date::operator+(SFXDateDurationConstRef duration) const
{
return operator+(DateDuration(duration));
}
inline AstronomicalMath::Date AstronomicalMath::Date::operator-(DateDurationConstRef duration) const
{
return Date(_days - duration.Get());
}
inline AstronomicalMath::Date AstronomicalMath::Date::operator-(SFXDateDurationConstRef duration) const
{
return operator-(DateDuration(duration));
}
inline AstronomicalMath::DateDuration AstronomicalMath::Date::operator-(DateConstRef date) const
{
return DateDuration(_days - date._days);
}
inline AstronomicalMath::DateDuration AstronomicalMath::Date::operator-(SFXDateConstRef date) const
{
return operator-(Date(date));
}
inline AstronomicalMath::DateConstRef AstronomicalMath::Date::operator+=(DateDurationConstRef duration)
{
_days += duration.Get();
_dateUpdated = false;
_j2000Updated = false;
return *this;
}
inline AstronomicalMath::DateConstRef AstronomicalMath::Date::operator+=(SFXDateDurationConstRef duration)
{
return operator+=(DateDuration(duration));
}
inline AstronomicalMath::DateConstRef AstronomicalMath::Date::operator-=(DateDurationConstRef duration)
{
_days -= duration.Get();
_dateUpdated = false;
_j2000Updated = false;
return *this;
}
inline AstronomicalMath::DateConstRef AstronomicalMath::Date::operator-=(SFXDateDurationConstRef duration)
{
return operator-=(DateDuration(duration));
}
inline Bool operator<(SFXDateConstRef date1, AstronomicalMath::DateConstRef date2)
{
return date2.operator>(date1);
}
inline AstronomicalMath::Date operator+(SFXDateDurationConstRef duration, AstronomicalMath::DateConstRef date)
{
return date.operator+(duration);
}
inline Void AstronomicalMath::DateDuration::Set(SInt32 days, UInt16 hour, UInt16 minute, UInt16 second)
{
_duration = static_cast<Float64>(days) + static_cast<Float64>(hour) / 24.0 + static_cast<Float64>(minute) / 1440.0 + static_cast<Float64>(second) / 86400.0;
}
inline Void AstronomicalMath::DateDuration::Set(Float64 days)
{
_duration = days;
}
inline Void AstronomicalMath::DateDuration::Set(SFXDateDurationConstRef duration)
{
_duration = static_cast<Float64>(duration.ToSInt32()) / 86400.0;
}
inline Void AstronomicalMath::DateDuration::Set(DateDurationConstRef ob)
{
_duration = ob._duration;
}
inline AstronomicalMath::DateDurationConstRef AstronomicalMath::DateDuration::operator=(SFXDateDurationConstRef duration)
{
Set(duration);
return *this;
}
inline AstronomicalMath::DateDurationConstRef AstronomicalMath::DateDuration::operator=(DateDurationConstRef ob)
{
Set(ob);
return *this;
}
inline Float64 AstronomicalMath::DateDuration::Get(Void) const
{
return _duration;
}
inline SInt32 AstronomicalMath::DateDuration::GetDays(Void) const
{
return static_cast<SInt32>(floor(_duration));
}
inline UInt16 AstronomicalMath::DateDuration::GetHour(Void) const
{
Float64Const hour((_duration - floor(_duration)) * 24.0);
return static_cast<UInt16>(floor(hour));
}
inline UInt16 AstronomicalMath::DateDuration::GetMinute(Void) const
{
Float64Const hour((_duration - floor(_duration)) * 24.0);
Float64Const minute((hour - floor(hour)) * 60.0);
return static_cast<UInt16>(floor(minute));
}
inline UInt16 AstronomicalMath::DateDuration::GetSecond(Void) const
{
Float64Const hour((_duration - floor(_duration)) * 24.0);
Float64Const minute((hour - floor(hour)) * 60.0);
Float64Const second((minute - floor(minute)) * 60.0);
return static_cast<UInt16>(floor(second + 0.5));
}
inline SFXDateDuration AstronomicalMath::DateDuration::GetSFXDateDuration(Void) const
{
SInt32Const second(static_cast<SInt32>(floor(_duration * 86400.0 + 0.5)));
return SFXDateDuration(second);
}
inline Bool AstronomicalMath::DateDuration::operator==(SFXDateDurationConstRef duration) const
{
return operator==(DateDuration(duration));
}
inline Bool AstronomicalMath::DateDuration::operator==(DateDurationConstRef duration) const
{
return _duration == duration._duration;
}
inline Bool operator==(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
return duration2.operator==(duration1);
}
inline Bool AstronomicalMath::DateDuration::operator!=(SFXDateDurationConstRef duration) const
{
return operator!=(DateDuration(duration));
}
inline Bool AstronomicalMath::DateDuration::operator!=(DateDurationConstRef duration) const
{
return _duration != duration._duration;
}
inline Bool operator!=(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
return duration2.operator!=(duration1);
}
inline Bool AstronomicalMath::DateDuration::operator>=(SFXDateDurationConstRef duration) const
{
return operator>=(DateDuration(duration));
}
inline Bool AstronomicalMath::DateDuration::operator>=(DateDurationConstRef duration) const
{
return _duration >= duration._duration;
}
inline Bool operator>=(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
return duration2.operator<=(duration1);
}
inline Bool AstronomicalMath::DateDuration::operator>(SFXDateDurationConstRef duration) const
{
return operator>(DateDuration(duration));
}
inline Bool AstronomicalMath::DateDuration::operator>(DateDurationConstRef duration) const
{
return _duration > duration._duration;
}
inline Bool operator>(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
return duration2.operator<(duration1);
}
inline Bool AstronomicalMath::DateDuration::operator<=(SFXDateDurationConstRef duration) const
{
return operator<=(DateDuration(duration));
}
inline Bool AstronomicalMath::DateDuration::operator<=(DateDurationConstRef duration) const
{
return _duration <= duration._duration;
}
inline Bool operator<=(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
return duration2.operator>=(duration1);
}
inline Bool AstronomicalMath::DateDuration::operator<(SFXDateDurationConstRef duration) const
{
return operator<(DateDuration(duration));
}
inline Bool AstronomicalMath::DateDuration::operator<(DateDurationConstRef duration) const
{
return _duration < duration._duration;
}
inline Bool operator<(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
return duration2.operator>(duration1);
}
inline AstronomicalMath::Date AstronomicalMath::DateDuration::operator+(DateConstRef date) const
{
return Date(_duration + date.Get());
}
inline AstronomicalMath::Date AstronomicalMath::DateDuration::operator+(SFXDateConstRef date) const
{
return operator+(Date(date));
}
inline AstronomicalMath::DateDuration AstronomicalMath::DateDuration::operator+(DateDurationConstRef duration) const
{
return DateDuration(_duration + duration._duration);
}
inline AstronomicalMath::DateDuration AstronomicalMath::DateDuration::operator+(SFXDateDurationConstRef duration) const
{
return operator+(DateDuration(duration));
}
inline AstronomicalMath::DateDuration AstronomicalMath::DateDuration::operator-(DateDurationConstRef duration) const
{
return DateDuration(_duration - duration._duration);
}
inline AstronomicalMath::DateDuration AstronomicalMath::DateDuration::operator-(SFXDateDurationConstRef duration) const
{
return operator-(DateDuration(duration));
}
inline AstronomicalMath::DateDurationConstRef AstronomicalMath::DateDuration::operator+=(DateDurationConstRef duration)
{
_duration += duration._duration;
return *this;
}
inline AstronomicalMath::DateDurationConstRef AstronomicalMath::DateDuration::operator+=(SFXDateDurationConstRef duration)
{
return operator+=(DateDuration(duration));
}
inline AstronomicalMath::DateDurationConstRef AstronomicalMath::DateDuration::operator-=(DateDurationConstRef duration)
{
_duration -= duration._duration;
return *this;
}
inline AstronomicalMath::DateDurationConstRef AstronomicalMath::DateDuration::operator-=(SFXDateDurationConstRef duration)
{
return operator-=(DateDuration(duration));
}
inline AstronomicalMath::DateDuration operator-(SFXDateConstRef date1, AstronomicalMath::DateConstRef date2)
{
AstronomicalMath::Date t(date1);
return t.operator-(date2);
}
inline AstronomicalMath::Date operator+(SFXDateConstRef date, AstronomicalMath::DateDurationConstRef duration)
{
return duration.operator+(date);
}
inline AstronomicalMath::DateDuration operator+(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
return duration2.operator+(duration1);
}
inline AstronomicalMath::DateDuration operator-(SFXDateDurationConstRef duration1, AstronomicalMath::DateDurationConstRef duration2)
{
AstronomicalMath::DateDuration t(duration1);
return t.operator-(duration2);
}
// 墿摴孹妏傪寁嶼偡傞
// T : 宱夁儐儕僂僗擭
inline Float64 AstronomicalMath::CalcObliquityOfTheEcliptic(Float64 T)
{
return 23.439291 - 0.000130042 * T;
}
// 堎晞崋偐偳偆偐 (堎晞崋 = true)
inline Bool AstronomicalMath::DifferentSign(Float64 a, Float64 b)
{
return (a < 0.0 && b > 0.0) || (a > 0.0 && b < 0.0);
}
// 曐帩偟偰偄傞 GMT 偱偺擔晅傪庢摼偡傞
inline AstronomicalMath::DateConstRef AstronomicalMath::Star::GetGMTDate(Void) const
{
return _gmtDate;
}
// 曐帩偟偰偄傞墿摴嵗昗傪庢摼偡傞
inline AstronomicalMath::AstronomicalPointConstRef AstronomicalMath::Star::GetEclipticPosition(Void) const
{
return _eclipticPosition;
}
// 曐帩偟偰偄傞帇嵎傪庢摼偡傞
inline Float64 AstronomicalMath::Star::GetParallax(Void) const
{
return _PI;
}
// 懢梲偺墿堒傪寁嶼偡傞 (忢偵 0)
// T : 宱夁儐儕僂僗擭
inline Float64 AstronomicalMath::Sun::CalcEclipticLatitude(Float64 /* T */) const
{
return 0.0;
}
// 懢梲偺帇嵎傪寁嶼偡傞 (懢梲偱偼巊梡偟側偄)
// T : 宱夁儐儕僂僗擭
inline Float64 AstronomicalMath::Sun::CalcParallax(Float64 /* T*/) const
{
return 0.0;
}
// 弌偺夞悢傪庢摼偡傞
inline SInt32 AstronomicalMath::StarRiseSet::GetRiseDateSize(Void) const
{
return _riseDate.GetSize();
}
// 弌偺帪崗傪庢摼偡傞
inline AstronomicalMath::DateConstRef AstronomicalMath::StarRiseSet::GetRiseDate(SInt32 index) const
{
return _riseDate.Get(index);
}
// 擖傝偺夞悢傪庢摼偡傞
inline SInt32 AstronomicalMath::StarRiseSet::GetSetDateSize(Void) const
{
return _setDate.GetSize();
}
// 擖傝偺帪崗傪庢摼偡傞
inline AstronomicalMath::DateConstRef AstronomicalMath::StarRiseSet::GetSetDate(SInt32 index) const
{
return _setDate.Get(index);
}
// 弌杤曽掱幃偺旝暘
inline Float64 AstronomicalMath::StarRiseSet::DiffEquation(DateConstRef gmtDate) const
{
DateDuration h(0, 0, 1, 0), h2(0, 0, 2, 0);
// 弌杤曽掱幃偺堷悢傪丄擔扨埵偲尒傞
return 120.0 * (Equation(gmtDate - h2) - 8.0 * Equation(gmtDate - h) + 8.0 * Equation(gmtDate + h) - Equation(gmtDate + h2));
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -