Viewshed 6.1.0
A C++ library for calculation of viewshed, inverse viewshed and visibility indices for both of those analyses.
Loading...
Searching...
No Matches
inverselos.h
1#pragma once
2#include "viewshed_export.h"
3
4#include <vector>
5
6#include "abstractlos.h"
7#include "enums.h"
8
9using viewshed::ValueType;
10
11// using viewshed::Visibility;
12
13namespace viewshed
14{
15 class LoSNode;
16 class LoS;
17 class Point;
18 class CellEvent;
19
24 class DLL_API InverseLoS : public AbstractLoS
25 {
26 public:
27 InverseLoS();
28 InverseLoS( std::vector<LoSNode> losNodes );
29
30 void setLoSNodes( std::vector<LoSNode> losNodes );
31 void setLoSNodes( LoS los );
32 void setViewPoint( std::shared_ptr<Point> vp ) = delete;
33 void setTargetPoint( std::shared_ptr<Point> tp ) = delete;
34 void setTargetPoint( std::shared_ptr<Point> tp, double targetOffset = 0 );
35 void setViewPoint( std::shared_ptr<LoSNode> vp, double observerOffset );
36 void setRemovePointsAfterTarget( bool remove );
37 void prepareForCalculation() override;
38
39 bool isValid() override;
40
41 int numberOfNodes() override;
42 int resultRow() override;
43 int resultCol() override;
44 int targetPointIndex() override;
45
46 LoSNode nodeAt( std::size_t i ) override;
47
48 protected:
49 void sort() override;
50 void findTargetPointIndex() override;
51
52 private:
53 void removePointsAfterViewPoint();
54 void fixDistancesAngles();
55 void removePointsAfterTarget();
56 bool mRemovePointsAfterTarget = false;
57 void setUpTargetLoSNode();
58 };
59
60} // namespace viewshed
LoSNode nodeAt(std::size_t i) override
LoSNode at specific index.
Definition inverselos.cpp:84
int resultRow() override
Row number where the outcome of LoS analysis should be stored.
Definition inverselos.cpp:86
int numberOfNodes() override
Number of LoSNodes in this line-of-sight.
Definition inverselos.cpp:55
void findTargetPointIndex() override
Retrieve index of target point in this LoS.
Definition inverselos.cpp:126
void prepareForCalculation() override
Prepare line-of-sight for calculation. For example inverse LoS needs some preprocessing before being ...
Definition inverselos.cpp:61
int targetPointIndex() override
Index of target point in the line-of-sight.
Definition inverselos.cpp:57
void sort() override
Sort LoSNodes by distance from View point.
Definition inverselos.cpp:59
int resultCol() override
Column number where the outcome of LoS analysis should be stored.
Definition inverselos.cpp:88
Class that represents LoS for classic Viewshed calculation.
Definition los.h:25
std::shared_ptr< Point > vp()
View point for this line-of-sight.
Definition abstractlos.cpp:50
Class representing cell events for Van Kreveld's plane sweep algorithm. Stores cell position (row and...
Definition cellevent.h:17
Representation of single cell that creates a point on LoS.
Definition losnode.h:19
Class that represents LoS for classic Viewshed calculation.
Definition los.h:25
Class that represents important point for viewshed - view point, or inverse viewshed - target point....
Definition point.h:21