eclipsefinder.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // eclipsefinder.h by Christophe Teyssier <chris@teyssier.org>
  2. // adapted form wineclipses.h by Kendrix <kendrix@wanadoo.fr>
  3. // 
  4. // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
  5. //
  6. // Compute Solar Eclipses for our Solar System planets
  7. //
  8. // This program is free software; you can redistribute it and/or
  9. // modify it under the terms of the GNU General Public License
  10. // as published by the Free Software Foundation; either version 2
  11. // of the License, or (at your option) any later version.
  12. #ifndef _ECLIPSEFINDER_H_
  13. #define _ECLIPSEFINDER_H_
  14. #include <vector>
  15. #include "celestiacore.h"
  16. class Eclipse
  17. {
  18. public:
  19.     Eclipse(int Y, int M, int D);
  20.     Eclipse(double JD);
  21.     
  22.     enum Type {
  23.         Solar = 0,
  24.         Moon  = 1
  25.     };
  26. public:
  27.     Body* body;
  28.     std::string planete;
  29.     std::string sattelite;
  30.     astro::Date* date;
  31.     double startTime;
  32.     double endTime;
  33. };
  34. class EclipseFinder
  35. {
  36.  public:
  37.     EclipseFinder(CelestiaCore* core, 
  38.                   const std::string& strPlaneteToFindOn_, 
  39.                   Eclipse::Type type_,
  40.                   double from, 
  41.                   double to )
  42.                    :appCore(core),
  43.                     strPlaneteToFindOn(strPlaneteToFindOn_),
  44.                     type(type_),
  45.                     JDfrom(from),
  46.                     JDto(to),
  47.                     toProcess(true) {};
  48.        
  49.     const std::vector<Eclipse>& getEclipses() { if (toProcess) CalculateEclipses(); return Eclipses_; };
  50.     
  51.  private:
  52.     CelestiaCore* appCore;
  53.     std::vector<Eclipse> Eclipses_;
  54.     std::string strPlaneteToFindOn;   
  55.     Eclipse::Type type;
  56.     double JDfrom, JDto;  
  57.     
  58.     bool toProcess;
  59.     
  60.     int CalculateEclipses();
  61.     bool testEclipse(const Body& receiver, const Body& caster, double now) const;
  62.     double findEclipseSpan(const Body& receiver, const Body& caster, double now, double dt) const;
  63. };
  64. #endif // _ECLIPSEFINDER_H_