All Classes Functions Variables
GreatCircleAdvMath.hpp
1 // ==============================================================
2 //
3 // GreatCircleAdvMath - Advanced great circle math
4 //
5 // This file is a part of Math package and originates from:
6 // http://sf.net/projects/enjomitchsorbit
7 //
8 // Copyright (c) 2011, Szymon "Enjo" Ender
9 //
10 // This module calculates the appropriate launch azimuth given
11 // desired orbital inclination and desired orbit altitude. This
12 // MFD takes the planets rotation into account, which provides a
13 // much more accurate azimuth. The calculations are performed
14 // 'on the fly' (technically and methaphorically), meaning that
15 // you get info about necessary course corrections.
16 //
17 // This file is part of LaunchMFD.
18 //
19 // LaunchMFD is free software: you can redistribute it and/or modify
20 // it under the terms of the GNU General Public License as published by
21 // the Free Software Foundation, either version 3 of the License, or
22 // (at your option) any later version.
23 //
24 // LaunchMFD is distributed in the hope that it will be useful,
25 // but WITHOUT ANY WARRANTY; without even the implied warranty of
26 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 // GNU General Public License for more details.
28 //
29 // You should have received a copy of the GNU General Public License
30 // along with LaunchMFD. If not, see <http://www.gnu.org/licenses/>.
31 // ==============================================================
32 
33 #ifndef GREATCIRCLEADVMATH_HPP_INCLUDED
34 #define GREATCIRCLEADVMATH_HPP_INCLUDED
35 
36 #include <vector>
37 
38 namespace EnjoLib
39 {
40 struct Point;
41 struct ThreeSphericals;
42 struct Geo;
43 
45 {
46  public:
47  std::vector<Point> CalculateGreatCircle( double rad, double latStart, double lonStart, bool numerical = false, double fixedStep = 0.02 );
48  ThreeSphericals Calc3SphericalsAroundHalfGlobe( double latStart, double lonStart, double r );
49 
50  private:
51  void PushGeoBackAsPoint( double rad, const std::vector<Geo> & vGeo, std::vector<Point> * vRet );
52 };
53 }
54 
55 #endif // GREATCIRCLEADVMATH_HPP_INCLUDED