19 DtTopoPoint(
double _x,
double _y,
double _z) : mx(_x), my(_y), mz(_z) {}
21 inline double x()
const {
return mx; }
22 inline void setX(
double _x) { mx = _x; }
23 inline double y()
const {
return my; }
24 inline void setY(
double _y) { my = _y; }
25 inline double z()
const {
return mz; }
26 inline void setZ(
double _z) { mz = _z; }
62 static bool SolveHilltops(
const DtIntMatrix& grid,
int prominenceSpan,
int prominence,
63 vector<int>& hilltopX, vector<int>& hilltopY, vector<int>& groupIndex);
66 static void LocatePositions(
const DtArea& area,
int sampleFactor,
68 int lateralSpacing,
int lateralInterval,
int lateralRange,
69 int metersFire,
int metersCover,
int interval,
70 double heightFire,
double heightCover,
double heightTo,
71 double maxSlopeDegrees,
73 vector<DtTopoPoint>& samplePoints, vector<DtGradeResult>& fireResult, vector<DtGradeResult>& coverResult);
77 static double GradeCoverage(
const DtTopoPoint& pointFrom,
double heightFrom,
78 const vector<DtTopoPoint>& samplePoints,
double heightTo,
const DtHostQueryInterface& losChecker,
79 vector<bool>& covered);
81 static void SelectGrades(vector<int>& grades,
int selectCount,
int spacing, vector<int>& selected);
88 static void FindPotentialPositionsAlongCrossSection(
90 double originHeightMeters,
92 double startCheckOffsetMeters,
93 double startSearchOffsetMeters,
94 double searchIntervalMeters,
95 double viewHeightMeters,
96 double coverHeightMeters,
97 double coverRangeMeters,
99 vector<DtTopoPoint>& viewPoints, vector<DtTopoPoint>& coverPoints);
104 static void FindPotentialPositionsInArea(
106 const DtArea& targetsArea,
107 unsigned int targetsAreaSampleCount,
108 double lateralIntervalMeters,
109 double verticalIntervalMeters,
110 double targetHeightMeters,
111 double viewHeightMeters,
112 double coverHeightMeters,
113 double coverRangeMeters,
115 DtTopoPoint& targetAreaCenter, vector<DtTopoPoint>& viewPoints, vector<DtTopoPoint>& coverPoints);
120 static void ClusterPotentialPositions(
122 const vector<DtTopoPoint>& viewPoints,
123 const vector<DtTopoPoint>& coverPoints,
124 double maxGroupWidth,
125 double maxGroupDepth,
126 vector<DtArea>& clusters,
127 vector<DtTopoPoint>& clusterCenters,
128 vector<double>& clusterDepths,
129 vector<double>& clusterWidths);
132 friend class DtTerrainReasonerTester;
140 static void ConvertAreasToCrossSections(
142 const DtArea& targetsArea,
143 unsigned int targetsAreaSampleCount,
144 double lateralIntervalMeters,
146 vector<double>& startCheckOffsetMeters,
147 vector<double>& startSearchOffsetMeters,
149 vector<DtTopoPoint>& endPoints);
154 static void LineAreaIntersection(
const DtTopoPoint& fromLine,
const DtTopoPoint& toLine,
DtArea area, vector<DtTopoPoint>& intersectionVec);
160 static int ProminenceCircle(
int radius,
DtIntMatrix& circle);
164 static void GradeSinglePosition(
const vector<DtTopoPoint>& samplePoints,
const DtTopoPoint& areaCenter,
166 int metersFire,
int metersCover,
int interval,
167 double heightFire,
double heightCover,
double heightTo,
168 double maxSlopeDegrees,
171 static void SelectGradesImp(vector<int>& grades,
int fromInd,
int toInd,
172 vector<int>& indices,
int top,
173 int selectCount,
int spacing, vector<int>& selected);
186 virtual bool checkLineOfSight(
double topoFromX,
double topoFromY,
double heightAboveFrom,
187 double topoToX,
double topoToY,
double heightAboveTo)
const = 0;
188 virtual double getHeight(
double topoX,
double topoY)
const = 0;
195 void RecordMatch(
int i,
int j);
196 void Translate(vector<int>& _translation);
219 DtSector(
const DtSectorCommon& common,
double degree = 0,
double fireDistance = 0,
double coverDistance = 0);
220 double AddPosition(
double degree,
double fireDistance,
double coverDistance,
DtSector& result);
221 bool Overlapps(
const DtSector& other)
const;
222 DtArea ContainingRectangle()
const;
224 double Width()
const;
225 double Depth()
const {
return maxDistance - minDistance; }
double z() const
Definition: terrainReasonerAlgos.h:25
Definition: terrainReasonerAlgos.h:216
int verticalIndex
Definition: terrainReasonerAlgos.h:40
const DtTopoPoint & OriginPoint() const
Definition: terrainReasonerAlgos.h:207
int mNextSet
Definition: terrainReasonerAlgos.h:199
void setZ(double _z)
Definition: terrainReasonerAlgos.h:26
voidpf uLong int origin
Definition: ioapi.h:42
double MaxGroupWidth() const
Definition: terrainReasonerAlgos.h:208
double my
Definition: terrainReasonerAlgos.h:29
GroupMatch()
Definition: terrainReasonerAlgos.h:194
DtTopoPoint()
Definition: terrainReasonerAlgos.h:20
DtTopoPoint(double _x, double _y, double _z)
Definition: terrainReasonerAlgos.h:19
double MaxGroupDepth() const
Definition: terrainReasonerAlgos.h:209
double maxGroupDepth
Definition: terrainReasonerAlgos.h:213
This class represents a topographic coordinate. It has the exact same interface as DtVector...
Definition: terrainReasonerAlgos.h:16
double Depth() const
Definition: terrainReasonerAlgos.h:225
This class services DtTerrainReasoner. It contains actual implementations of the algorithms used for ...
Definition: terrainReasonerAlgos.h:58
double mx
Definition: terrainReasonerAlgos.h:28
Definition: terrainReasonerAlgos.h:203
double minDegree
Definition: terrainReasonerAlgos.h:228
DtTopoPoint originPoint
Definition: terrainReasonerAlgos.h:211
double y() const
Definition: terrainReasonerAlgos.h:23
DtSectorCommon common
Definition: terrainReasonerAlgos.h:227
This interface represents the host from the perspective of DtTerrainReasonerAlgos. The host is an "owner" of a topographic terrain. This allows DtTerrainReasonerAlgos to be completely ignorant of the fact that actual terrain access requires conversion between topographic and local coordinates, keeping DtTerrainReasonerAlgos detached from VRF code base.
Definition: terrainReasonerAlgos.h:183
This struct represent a view (AKA fire) point or cover point that was graded (0.0 - 100...
Definition: terrainReasonerAlgos.h:37
double grade
Definition: terrainReasonerAlgos.h:42
double x() const
Definition: terrainReasonerAlgos.h:21
DtTopoPoint point
Definition: terrainReasonerAlgos.h:41
Definition: terrainReasonerAlgos.h:191
Definition: terrainUtility.h:15
vector< int > mTranslation
Definition: terrainReasonerAlgos.h:200
DT_DLL_vrfutil bool intersection(const DtRailSegment *currentSegment, const DtRailSegment *nextSegment)
Given two segments, determine if where they meet is an intersection or just a bend in the road...
vector< bool > covered
Definition: terrainReasonerAlgos.h:43
Definition: terrainUtility.h:41
void setX(double _x)
Definition: terrainReasonerAlgos.h:22
double maxDistance
Definition: terrainReasonerAlgos.h:231
Definition: terrainUtility.h:24
void setY(double _y)
Definition: terrainReasonerAlgos.h:24
double maxGroupWidth
Definition: terrainReasonerAlgos.h:212
double minDistance
Definition: terrainReasonerAlgos.h:230
int lateralIndex
Definition: terrainReasonerAlgos.h:39
double maxDegree
Definition: terrainReasonerAlgos.h:229
double mz
Definition: terrainReasonerAlgos.h:30