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);
63 double breakAfterTime()
const
65 return myBreakAfterTime;
69 virtual void setPrintStats(
bool);
70 bool printStats()
const
75 double azimuthRange()
const
77 return fabs(myAzimuthEnd - myAzimuthStart);
80 double azimuthStart()
const
82 return myAzimuthStart;
85 double azimuthEnd()
const
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();
142 int startingSpoke()
const
144 return myStartingSpoke;
152 double elevationRate()
const
154 return myElevationRate;
157 double elevationStart()
const
159 return myElevationStart;
162 double elevationEnd()
const
164 return myElevationEnd;
168 void setElevationRanges(
double s,
double e)
170 myElevationStart = s;
174 void setAzimuthRanges(
double s,
double e)
181 virtual void updateStartingSpoke()
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);
204 bool recordIntersectionPointAsEndPoint()
const
206 return mySetRecordIntersectionPointAsEndPoint;
210 virtual void setStopOnFirstClearView(
bool);
211 bool stopOnFirstClearView()
const
213 return myStopOnFirstClearView;
218 virtual void setCalculateAsDome(
bool);
219 bool calculateAsDome()
const
221 return myCalculateAsDome;
224 static DtVector calculatePointFromElevationAngle(
const DtVector& geocentricStart,
double radius,
double azimuth,
double elevation);
230 virtual void setCalculationsHaveBegun(
bool);
231 bool calculationsHaveBegun()
const
233 return myCalculationsHaveBegun;