summaryrefslogtreecommitdiffhomepage
path: root/Stars45/RLoc.h
blob: 9cb6e174050db88883a6b372f697263c5d74efe9 (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