1 /***************************************************************************
2                           targetmotionanalysis.h  -  description
3                              -------------------
4     begin                : Sat Mar 16 2002
5     copyright            : (C) 2002 by Michael Bridak
6     email                : michael.bridak@verizon.net
7 $Id: targetmotionanalysis.h,v 1.6 2003/04/20 16:55:49 mbridak Exp $
8  ***************************************************************************/
9 
10 /***************************************************************************
11  *                                                                         *
12  *   This program is free software; you can redistribute it and/or modify  *
13  *   it under the terms of the GNU General Public License as published by  *
14  *   the Free Software Foundation; either version 2 of the License.     *
15  *    .                                   *
16  *                                                                         *
17  ***************************************************************************/
18 
19 #ifndef TARGETMOTIONANALYSIS_H
20 #define TARGETMOTIONANALYSIS_H
21 #define MAXTRACKERS 13
22 
23 #include "boatpositionlog.h"
24 #include "contact.h"
25 
26 /**
27   *@author Michael Bridak
28   */
29 
30 class TargetMotionAnalysis : public BoatPositionLog  {
31 public:
32 	Contact Solution[12];
33 	Uint32 textcolor, black, white, red, green, yellow, mapcolor;//Place to hold color info
34 
35 	double our_heading;
36 	double target_heading;
37 
38 	float our_speed;
39 	float target_speed;
40 
41 	/** an SDL surface to plot our GeoPlot on */
42 	SDL_Surface *GeoPlotScreen;
43 
44   /**  */
45   int plotscale;
46 
47   /** Geoplot centering flag */
48   bool centerGeoPlot;
49 
50 	TargetMotionAnalysis();
51 	~TargetMotionAnalysis();
52 
53   /** Frees a tracker to be used later. */
54   void ClearTracker(int tracker);
55 
56   /** Returns the TRUE if tracker is in use */
57   bool GetTrackerState(int tracker) const;
58 
59   /** Assign a tracker to a target */
60   void AssignTracker(int tracker, int target);
61 
62   /** Assign Target designation and Tracker to trace currently under
63 cursor on SONAR screen.
64  */
65   void DesignateContact();
66 
67   /** Display a GeoPlot for the designated contact based on the
68 position of the boat and the bearing history of the contact.
69  */
70   void DisplayGeoPlot(int xoffset, int yoffset);
71 
72   /** Display the LOS Diagram
73  */
74   void DisplayLOS();
75 
76   /** Creates a speed ruler which we will use to drag around the
77 GeoPlot to test solutions.
78  */
79   void CreateSpeedRuler();
80 
81   /** Plots the amount of error from the expected bearing to target
82 and the actual bearing recieved.
83  */
84   void BearingDevitaionPlot();
85 
86   /** Record the boats current position
87  */
88   void RecordBoatPosition(float latitude, float longitude, double bearing, Uint32 tick);
89 
90   /** Lock Mutex */
91   void Lock();
92 
93   /** Unlock Mutex */
94   void UnLock();
95 
96   /** Initialize the graphics */
97   void InitGraphics();
98 
99   /** No descriptions */
100   void PlotPixel(int x, int y, Uint32 color);
101 
102   /** erases the work screen */
103   void ClearGeoPlot();
104 
105   /** Plot the boats history */
106   void PlotHistory(int scale, int change_scrollx, int change_scrolly);
107 
108   /** Draws a line....What were you expecting? */
109   void DrawLine(int X1,int Y1,int X2,int Y2,Uint32 Color);
110 
111   /** No descriptions */
112   void DrawDot(int x, int y, Uint32 color);
113 
114   /** Increments plotscale to zoom in on the GeoPlot */
115   void IncreasePlotScale();
116 
117   /** Decriment the plotscale to zoom out of GeoPlot */
118   void DecreasePlotScale();
119 
120   /** No descriptions */
121   void ToggleGeoPlotCenter();
122 
123   /** Fill in the initial values for the solution. */
124   void InitializeSolution(float LatYards, float LonYards, int Speed, int Heading);
125 
126 private: // Private attributes
127   /**  */
128   bool trackerstate[MAXTRACKERS];
129 	struct packet {
130 		float LatYards;
131 		float LonYards;
132 		float BearingToTarget;
133 	};
134 
135 
136 
137 	SDL_mutex *MutexLock;
138 };
139 
140 #endif
141