8 #include <boost/function.hpp>
9 #include <matrix/vlVector.h>
10 #include <matrix/vlMath.h>
11 #include <vlutil/vlPerformanceStats.h>
36 intersects(orig.
intersects), dataAvailable(orig.dataAvailable), startPoint(orig.startPoint), endPoint(orig.endPoint),
37 intersectionPoint(orig.intersectionPoint), altitudeChecked(orig.altitudeChecked) {};
49 typedef boost::function<IntersectionInformation (const DtVector& start, const DtVector& end, bool altitudeMSL)>
SensorFanWalkerFunction;
62 virtual void setBreakAfterTime(
double);
65 return myBreakAfterTime;
69 virtual void setPrintStats(
bool);
77 return fabs(myAzimuthEnd - myAzimuthStart);
82 return myAzimuthStart;
91 virtual bool isComplete()
const;
110 virtual void init(
const DtVector& start,
double radius,
double circleRadianSamplingRate,
111 double sensorFanLineSamplingRate,
const std::set<double>& altitudes,
double azimuthStart = 0.,
double azimuthEnd = M_2PI,
bool altitudeMSL =
true);
122 virtual void init(
const DtVector& start,
double radius,
double circleRadianSamplingRate,
double azimuthStart = 0.,
double azimuthEnd = M_2PI,
123 double elevationRate = M_DEG2RAD,
double elevationStart = 0.,
double elevationEnd = M_PI_2);
128 virtual bool walk(SensorFanWalkerFunction,
bool continueIfUnavailable =
false);
132 typedef std::vector<IntersectionInformation>
Result;
140 virtual void resetStartingSpoke();
144 return myStartingSpoke;
154 return myElevationRate;
159 return myElevationStart;
164 return myElevationEnd;
170 myElevationStart = s;
183 myStartingSpoke = myOnSpoke;
190 static double calculateDistance(
const DtVector& start,
const DtVector& end);
191 static DtVector calculateEndPointFromRadian(
const DtVector& start,
double radius,
double rad = 0);
193 virtual void addNew(
int onSpoke,
const IntersectionInformation&);
197 virtual void reset();
199 virtual void printStatistics();
203 virtual void setRecordIntersectionPointAsEndPoint(
bool);
206 return mySetRecordIntersectionPointAsEndPoint;
210 virtual void setStopOnFirstClearView(
bool);
213 return myStopOnFirstClearView;
218 virtual void setCalculateAsDome(
bool);
221 return myCalculateAsDome;
224 static DtVector calculatePointFromElevationAngle(
const DtVector& geocentricStart,
double radius,
double azimuth,
double elevation);
230 virtual void setCalculationsHaveBegun(
bool);
233 return myCalculationsHaveBegun;
bool calculationsHaveBegun() const
Definition: sensorFanWalker.h:231
bool printStats() const
Definition: sensorFanWalker.h:70
double myLastStatPrint
Definition: sensorFanWalker.h:253
double azimuthRange() const
Definition: sensorFanWalker.h:75
double myRadius
Definition: sensorFanWalker.h:238
double myElevationStart
Definition: sensorFanWalker.h:271
DtTimedSection myPagingTimeTimer
Definition: sensorFanWalker.h:255
boost::function< IntersectionInformation(const DtVector &start, const DtVector &end, bool altitudeMSL)> SensorFanWalkerFunction
If the altitude is not MSL, the function must do an additional height check at the location and adjus...
Definition: sensorFanWalker.h:49
virtual void updateStartingSpoke()
Call this routine when you have sent off a chunk of data and need to move the counter to the next spo...
Definition: sensorFanWalker.h:181
int myPointsAlongLine
Definition: sensorFanWalker.h:249
bool calculateAsDome() const
Definition: sensorFanWalker.h:219
std::map< int, Result > Results
Definition: sensorFanWalker.h:133
double myWaitingForPageTime
Definition: sensorFanWalker.h:252
DtVector myStart
Definition: sensorFanWalker.h:237
std::set< double > myAltitudes
Definition: sensorFanWalker.h:241
static DtSensorFanWalkerCreatorFcn theSensorFanWalkerCreatorFcn
Definition: sensorFanWalker.h:243
bool myCalculationsHaveBegun
Definition: sensorFanWalker.h:267
int myOnSpoke
Definition: sensorFanWalker.h:246
std::vector< IntersectionInformation > Result
The result map is, by segment (i.e. number of lines along the circle) and step point along that line...
Definition: sensorFanWalker.h:132
void setAzimuthRanges(double s, double e)
Definition: sensorFanWalker.h:174
bool myCalculateAsDome
Definition: sensorFanWalker.h:266
int myStartingSpoke
Definition: sensorFanWalker.h:262
Results myResults
Definition: sensorFanWalker.h:245
bool stopOnFirstClearView() const
Definition: sensorFanWalker.h:211
bool myPrintStats
Definition: sensorFanWalker.h:257
double myAzimuthStart
Definition: sensorFanWalker.h:268
double myBreakAfterTime
Definition: sensorFanWalker.h:260
int myTotalSpokes
Definition: sensorFanWalker.h:250
double mySensorFanLineSamplingRate
Definition: sensorFanWalker.h:240
double myTimeSinceLastBreak
Definition: sensorFanWalker.h:261
int startingSpoke() const
Definition: sensorFanWalker.h:142
const Results & results() const
Definition: sensorFanWalker.h:135
std::vector< int > myAlongSpoke
Definition: sensorFanWalker.h:248
bool myStopOnFirstClearView
Definition: sensorFanWalker.h:265
double myElevationRate
Definition: sensorFanWalker.h:270
double myElevationEnd
Definition: sensorFanWalker.h:272
double elevationEnd() const
Definition: sensorFanWalker.h:162
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
double myCurrentElevation
Definition: sensorFanWalker.h:273
double azimuthStart() const
Definition: sensorFanWalker.h:80
Definition: sensorFanWalker.h:29
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
bool recordIntersectionPointAsEndPoint() const
Definition: sensorFanWalker.h:204
double elevationRate() const
Definition: sensorFanWalker.h:152
double myCircleRadianSamplingRate
Definition: sensorFanWalker.h:239
double azimuthEnd() const
Definition: sensorFanWalker.h:85
DtSensorFanWalker *(* DtSensorFanWalkerCreatorFcn)()
Definition: sensorFanWalker.h:27
bool mySetRecordIntersectionPointAsEndPoint
Definition: sensorFanWalker.h:264
double elevationStart() const
Definition: sensorFanWalker.h:157
double myAzimuthEnd
Definition: sensorFanWalker.h:269
void setElevationRanges(double s, double e)
Sets ranges without re-initializing.
Definition: sensorFanWalker.h:168
int onSpoke() const
Definition: sensorFanWalker.h:147
bool myAltitudeMSL
Definition: sensorFanWalker.h:258
double myIntersectionTime
Definition: sensorFanWalker.h:254
bool myPagedLastTime
Definition: sensorFanWalker.h:256
double breakAfterTime() const
Definition: sensorFanWalker.h:63