summaryrefslogtreecommitdiffhomepage
path: root/Stars45/RLoc.h
blob: 39cded4aa5861b926e891fea64e132554a23690f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*  Project Starshatter 4.5
    Destroyer Studios LLC
    Copyright © 1997-2004. All Rights Reserved.

    SUBSYSTEM:    Stars.exe
    FILE:         RLoc.h
    AUTHOR:       John DiCamillo


    OVERVIEW
    ========
    Relative Location (RLoc) class declaration
*/

#ifndef RLoc_h
#define RLoc_h

#include "Types.h"
#include "Geometry.h"

// +--------------------------------------------------------------------+

class RLoc
{
public:
   RLoc();
   RLoc(const Point& loc, double d, double dv=5e3);
   RLoc(RLoc* rloc, double d, double dv=5e3);
   RLoc(const RLoc& r);
   ~RLoc();

   // accessors:
   const Point&      Location();
   const Point&      BaseLocation()          const { return base_loc;   }
   RLoc*             ReferenceLoc()          const { return rloc;       }
   double            Distance()              const { return dex;        }
   double            DistanceVar()           const { return dex_var;    }
   double            Azimuth()               const { return az;         }
   double            AzimuthVar()            const { return az_var;     }
   double            Elevation()             const { return el;         }
   double            ElevationVar()          const { return el_var;     }

   void              Resolve();

   // mutators:
   void              SetBaseLocation(const Point& l);
   void              SetReferenceLoc(RLoc* r)         { rloc = r;             }
   void              SetDistance(double d)            { dex = (float) d;      }
   void              SetDistanceVar(double dv)        { dex_var = (float) dv; }
   void              SetAzimuth(double a)             { az = (float) a;       }
   void              SetAzimuthVar(double av)         { az_var = (float) av;  }
   void              SetElevation(double e)           { el = (float) e;       }
   void              SetElevationVar(double ev)       { el_var = (float) ev;  }

private:
   Point             loc;
   Point             base_loc;
   RLoc*             rloc;

   float             dex;
   float             dex_var;
   float             az;
   float             az_var;
   float             el;
   float             el_var;
};

// +--------------------------------------------------------------------+

#endif RLoc_h