27 Fact* gridAngle (
void) {
return &_gridAngleFact; }
36 QString
mapVisualQML (
void)
const final {
return QStringLiteral(
"SurveyMapVisual.qml"); }
45 void save (QJsonArray& planItems)
final;
51 QString
commandName (
void)
const final {
return tr(
"Survey"); }
81 void _updateWizardMode (
void);
84 void _rebuildTransectsPhase1 (
void)
final;
85 void _recalcCameraShots (
void)
final;
88 enum CameraTriggerCode {
92 CameraTriggerHoverAndCapture
95 QPointF _rotatePoint(
const QPointF& point,
const QPointF& origin,
double angle);
96 void _intersectLinesWithRect(
const QList<QLineF>& lineList,
const QRectF& boundRect, QList<QLineF>& resultLines);
97 void _intersectLinesWithPolygon(
const QList<QLineF>& lineList,
const QPolygonF& polygon, QList<QLineF>& resultLines);
98 void _adjustLineDirection(
const QList<QLineF>& lineList, QList<QLineF>& resultLines);
99 bool _nextTransectCoord(
const QList<QGeoCoordinate>& transectPoints,
int pointIndex, QGeoCoordinate& coord);
100 bool _appendMissionItemsWorker(QList<MissionItem*>& items, QObject* missionItemParent,
int& seqNum,
bool hasRefly,
bool buildRefly);
101 void _optimizeTransectsForShortestDistance(
const QGeoCoordinate& distanceCoord, QList<QList<QGeoCoordinate>>& transects);
102 qreal _ccw(QPointF pt1, QPointF pt2, QPointF pt3);
103 qreal _dp(QPointF pt1, QPointF pt2);
104 void _swapPoints(QList<QPointF>& points,
int index1,
int index2);
105 void _reverseTransectOrder(QList<QList<QGeoCoordinate>>& transects);
106 void _reverseInternalTransectPoints(QList<QList<QGeoCoordinate>>& transects);
107 void _adjustTransectsToEntryPointLocation(QList<QList<QGeoCoordinate>>& transects);
108 bool _gridAngleIsNorthSouthTransects();
109 double _clampGridAngle90(
double gridAngle);
110 bool _imagesEverywhere(
void)
const;
111 bool _triggerCamera(
void)
const;
112 bool _hasTurnaround(
void)
const;
113 double _turnaroundDistance(
void)
const;
114 bool _hoverAndCaptureEnabled(
void)
const;
116 bool _loadV4V5(
const QJsonObject& complexObject,
int sequenceNumber, QString&
errorString,
int version,
bool forPresets);
117 void _saveCommon(QJsonObject& complexObject);
118 void _rebuildTransectsPhase1Worker(
bool refly);
119 void _rebuildTransectsPhase1WorkerSinglePolygon(
bool refly);
121 void _rebuildTransectsFromPolygon(
bool refly,
const QPolygonF& polygon,
const QGeoCoordinate& tangentOrigin,
const QPointF*
const transitionPoint);
127 void _rebuildTransectsPhase1WorkerSplitPolygons(
bool refly);
130 void _PolygonDecomposeConvex(
const QPolygonF& polygon, QList<QPolygonF>& decomposedPolygons);
132 bool _VertexCanSeeOther(
const QPolygonF& polygon,
const QPointF* vertexA,
const QPointF* vertexB);
133 bool _VertexIsReflex(
const QPolygonF& polygon, QList<QPointF>::const_iterator& vertexIter);
136 QMap<QString, FactMetaData*> _metaDataMap;
143 static constexpr const char* _jsonGridAngleKey =
"angle";
144 static constexpr const char* _jsonEntryPointKey =
"entryLocation";
146 static constexpr const char* _jsonV3GridObjectKey =
"grid";
147 static constexpr const char* _jsonV3GridAltitudeKey =
"altitude";
148 static constexpr const char* _jsonV3GridAltitudeRelativeKey =
"relativeAltitude";
149 static constexpr const char* _jsonV3GridAngleKey =
"angle";
150 static constexpr const char* _jsonV3GridSpacingKey =
"spacing";
151 static constexpr const char* _jsonV3EntryPointKey =
"entryLocation";
152 static constexpr const char* _jsonV3TurnaroundDistKey =
"turnAroundDistance";
153 static constexpr const char* _jsonV3CameraTriggerDistanceKey =
"cameraTriggerDistance";
154 static constexpr const char* _jsonV3CameraTriggerInTurnaroundKey =
"cameraTriggerInTurnaround";
155 static constexpr const char* _jsonV3HoverAndCaptureKey =
"hoverAndCapture";
156 static constexpr const char* _jsonV3GroundResolutionKey =
"groundResolution";
157 static constexpr const char* _jsonV3FrontalOverlapKey =
"imageFrontalOverlap";
158 static constexpr const char* _jsonV3SideOverlapKey =
"imageSideOverlap";
159 static constexpr const char* _jsonV3CameraSensorWidthKey =
"sensorWidth";
160 static constexpr const char* _jsonV3CameraSensorHeightKey =
"sensorHeight";
161 static constexpr const char* _jsonV3CameraResolutionWidthKey =
"resolutionWidth";
162 static constexpr const char* _jsonV3CameraResolutionHeightKey =
"resolutionHeight";
163 static constexpr const char* _jsonV3CameraFocalLengthKey =
"focalLength";
164 static constexpr const char* _jsonV3CameraMinTriggerIntervalKey =
"minTriggerInterval";
165 static constexpr const char* _jsonV3CameraObjectKey =
"camera";
166 static constexpr const char* _jsonV3CameraNameKey =
"name";
167 static constexpr const char* _jsonV3ManualGridKey =
"manualGrid";
168 static constexpr const char* _jsonV3CameraOrientationLandscapeKey =
"orientationLandscape";
169 static constexpr const char* _jsonV3FixedValueIsAltitudeKey =
"fixedValueIsAltitude";
170 static constexpr const char* _jsonV3Refly90DegreesKey =
"refly90Degrees";
171 static constexpr const char* _jsonFlyAlternateTransectsKey =
"flyAlternateTransects";
172 static constexpr const char* _jsonSplitConcavePolygonsKey =
"splitConcavePolygons";