17 DtTopoPoint(
double _x,
double _y,
double _z) : mx(_x), my(_y), mz(_z) {}
19 inline double x()
const {
return mx; }
20 inline void setX(
double _x) { mx = _x; }
21 inline double y()
const {
return my; }
22 inline void setY(
double _y) { my = _y; }
23 inline double z()
const {
return mz; }
24 inline void setZ(
double _z) { mz = _z; }
60 static bool SolveHilltops(
const DtIntMatrix& grid,
int prominenceSpan,
int prominence,
61 vector<int>& hilltopX, vector<int>& hilltopY, vector<int>& groupIndex);
64 static void LocatePositions(
const DtArea& area,
int sampleFactor,
66 int lateralSpacing,
int lateralInterval,
int lateralRange,
67 int metersFire,
int metersCover,
int interval,
68 double heightFire,
double heightCover,
double heightTo,
69 double maxSlopeDegrees,
71 vector<DtTopoPoint>& samplePoints, vector<DtGradeResult>& fireResult, vector<DtGradeResult>& coverResult);
75 static double GradeCoverage(
const DtTopoPoint& pointFrom,
double heightFrom,
76 const vector<DtTopoPoint>& samplePoints,
double heightTo,
const DtHostQueryInterface& losChecker,
77 vector<bool>& covered);
79 static void SelectGrades(vector<int>& grades,
int selectCount,
int spacing, vector<int>& selected);
86 static void FindPotentialPositionsAlongCrossSection(
88 double originHeightMeters,
90 double startCheckOffsetMeters,
91 double startSearchOffsetMeters,
92 double searchIntervalMeters,
93 double viewHeightMeters,
94 double coverHeightMeters,
95 double coverRangeMeters,
97 vector<DtTopoPoint>& viewPoints, vector<DtTopoPoint>& coverPoints);
102 static void FindPotentialPositionsInArea(
104 const DtArea& targetsArea,
105 unsigned int targetsAreaSampleCount,
106 double lateralIntervalMeters,
107 double verticalIntervalMeters,
108 double targetHeightMeters,
109 double viewHeightMeters,
110 double coverHeightMeters,
111 double coverRangeMeters,
113 DtTopoPoint& targetAreaCenter, vector<DtTopoPoint>& viewPoints, vector<DtTopoPoint>& coverPoints);
118 static void ClusterPotentialPositions(
120 const vector<DtTopoPoint>& viewPoints,
121 const vector<DtTopoPoint>& coverPoints,
122 double maxGroupWidth,
123 double maxGroupDepth,
124 vector<DtArea>& clusters,
125 vector<DtTopoPoint>& clusterCenters,
126 vector<double>& clusterDepths,
127 vector<double>& clusterWidths);
130 friend class DtTerrainReasonerTester;
138 static void ConvertAreasToCrossSections(
140 const DtArea& targetsArea,
141 unsigned int targetsAreaSampleCount,
142 double lateralIntervalMeters,
144 vector<double>& startCheckOffsetMeters,
145 vector<double>& startSearchOffsetMeters,
147 vector<DtTopoPoint>& endPoints);
158 static int ProminenceCircle(
int radius,
DtIntMatrix& circle);
162 static void GradeSinglePosition(
const vector<DtTopoPoint>& samplePoints,
const DtTopoPoint& areaCenter,
164 int metersFire,
int metersCover,
int interval,
165 double heightFire,
double heightCover,
double heightTo,
166 double maxSlopeDegrees,
169 static void SelectGradesImp(vector<int>& grades,
int fromInd,
int toInd,
170 vector<int>& indices,
int top,
171 int selectCount,
int spacing, vector<int>& selected);
184 virtual bool checkLineOfSight(
double topoFromX,
double topoFromY,
double heightAboveFrom,
185 double topoToX,
double topoToY,
double heightAboveTo)
const = 0;
186 virtual double getHeight(
double topoX,
double topoY)
const = 0;
193 void RecordMatch(
int i,
int j);
194 void Translate(vector<int>& _translation);
217 DtSector(
const DtSectorCommon& common,
double degree = 0,
double fireDistance = 0,
double coverDistance = 0);
218 double AddPosition(
double degree,
double fireDistance,
double coverDistance,
DtSector& result);
219 bool Overlapps(
const DtSector& other)
const;
220 DtArea ContainingRectangle()
const;
222 double Width()
const;
223 double Depth()
const {
return maxDistance - minDistance; }
double z() const
Definition: terrainReasonerAlgos.h:23
Definition: terrainReasonerAlgos.h:214
int verticalIndex
Definition: terrainReasonerAlgos.h:38
const DtTopoPoint & OriginPoint() const
Definition: terrainReasonerAlgos.h:205
int mNextSet
Definition: terrainReasonerAlgos.h:197
void setZ(double _z)
Definition: terrainReasonerAlgos.h:24
voidpf uLong int origin
Definition: ioapi.h:42
double MaxGroupWidth() const
Definition: terrainReasonerAlgos.h:206
double my
Definition: terrainReasonerAlgos.h:27
GroupMatch()
Definition: terrainReasonerAlgos.h:192
DtTopoPoint()
Definition: terrainReasonerAlgos.h:18
DtTopoPoint(double _x, double _y, double _z)
Definition: terrainReasonerAlgos.h:17
double MaxGroupDepth() const
Definition: terrainReasonerAlgos.h:207
double maxGroupDepth
Definition: terrainReasonerAlgos.h:211
This class represents a topographic coordinate. It has the exact same interface as DtVector...
Definition: terrainReasonerAlgos.h:14
double Depth() const
Definition: terrainReasonerAlgos.h:223
This class services DtTerrainReasoner. It contains actual implementations of the algorithms used for ...
Definition: terrainReasonerAlgos.h:56
double mx
Definition: terrainReasonerAlgos.h:26
static void LineAreaIntersection(const DtTopoPoint &fromLine, const DtTopoPoint &toLine, DtArea area, vector< DtTopoPoint > &intersectionVec)
Definition: terrainReasonerAlgos.h:201
double minDegree
Definition: terrainReasonerAlgos.h:226
DtTopoPoint originPoint
Definition: terrainReasonerAlgos.h:209
double y() const
Definition: terrainReasonerAlgos.h:21
DtSectorCommon common
Definition: terrainReasonerAlgos.h:225
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:181
This struct represent a view (AKA fire) point or cover point that was graded (0.0 - 100...
Definition: terrainReasonerAlgos.h:35
double grade
Definition: terrainReasonerAlgos.h:40
double x() const
Definition: terrainReasonerAlgos.h:19
DtTopoPoint point
Definition: terrainReasonerAlgos.h:39
Definition: terrainReasonerAlgos.h:189
Definition: terrainUtility.h:14
vector< int > mTranslation
Definition: terrainReasonerAlgos.h:198
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...
static bool PointInside(const DtTopoPoint &pt, const DtTopoPoint &fromP, const DtTopoPoint &toP)
This group of methods provide some basic geometric operations.
vector< bool > covered
Definition: terrainReasonerAlgos.h:41
Definition: terrainUtility.h:40
void setX(double _x)
Definition: terrainReasonerAlgos.h:20
double maxDistance
Definition: terrainReasonerAlgos.h:229
Definition: terrainUtility.h:23
void setY(double _y)
Definition: terrainReasonerAlgos.h:22
double maxGroupWidth
Definition: terrainReasonerAlgos.h:210
double minDistance
Definition: terrainReasonerAlgos.h:228
int lateralIndex
Definition: terrainReasonerAlgos.h:37
double maxDegree
Definition: terrainReasonerAlgos.h:227
double mz
Definition: terrainReasonerAlgos.h:28
static bool LineIntersection(const DtTopoPoint &from1, const DtTopoPoint &to1, const DtTopoPoint &from2, const DtTopoPoint &to2, DtTopoPoint &intersection)