16 #ifndef __TY_ABSTRACT_REFLECTION_PRUNING_STRATEGY__
17 #define __TY_ABSTRACT_REFLECTION_PRUNING_STRATEGY__
44 virtual std::unique_ptr<TYAbstractReflectionPruningStrategy>
instanciate()
const = 0;
51 virtual void initialize(
const std::vector<const TYSIntersection*>& currentReflectingSegments,
52 const std::deque<OPoint3D>& currentImageSources) = 0;
70 std::unique_ptr<TYAbstractReflectionPruningStrategy>
instanciate()
const override
72 return std::make_unique<TYReflectionNoPruningStrategy>();
75 void initialize(
const std::vector<const TYSIntersection*>& currentReflectingSegments,
76 const std::deque<OPoint3D>& currentImageSources)
override
95 std::unique_ptr<TYAbstractReflectionPruningStrategy>
instanciate()
const override
97 return std::make_unique<TYReflectionVisibilityPruningStrategy>();
100 void initialize(
const std::vector<const TYSIntersection*>& currentReflectingSegments,
101 const std::deque<OPoint3D>& currentImageSources)
override;
Abstract class representing a pruning strategy to prune the tree of reflecting segments during comput...
virtual std::unique_ptr< TYAbstractReflectionPruningStrategy > instanciate() const =0
Instanciate a new pruning strategy of the same type.
virtual bool pruningCriterionMet(const TYSIntersection &nextReflectingSegment) const =0
Check if the tree can be pruned before inserting the next reflecting segment.
virtual void initialize(const std::vector< const TYSIntersection * > ¤tReflectingSegments, const std::deque< OPoint3D > ¤tImageSources)=0
Inform the pruning strategy of the current reflecting segments tree state.
TYAbstractReflectionPruningStrategy()=default
virtual ~TYAbstractReflectionPruningStrategy()=default
Pruning strategy which never prunes the tree of reflecting segments (bruteforce image source method)
std::unique_ptr< TYAbstractReflectionPruningStrategy > instanciate() const override
Instanciate a new pruning strategy of the same type.
bool pruningCriterionMet(const TYSIntersection &nextReflectingSegment) const override
Check if the tree can be pruned before inserting the next reflecting segment.
void initialize(const std::vector< const TYSIntersection * > ¤tReflectingSegments, const std::deque< OPoint3D > ¤tImageSources) override
Inform the pruning strategy of the current reflecting segments tree state.
Pruning strategy which prunes the tree when the reflecting segment to be added in the tree is not vis...
std::unique_ptr< VisibilityCone > _pVisibilityCone
void initialize(const std::vector< const TYSIntersection * > ¤tReflectingSegments, const std::deque< OPoint3D > ¤tImageSources) override
Inform the pruning strategy of the current reflecting segments tree state.
bool pruningCriterionMet(const TYSIntersection &nextReflectingSegment) const override
Check if the tree can be pruned before inserting the next reflecting segment.
std::unique_ptr< TYAbstractReflectionPruningStrategy > instanciate() const override
Instanciate a new pruning strategy of the same type.
TYReflectionVisibilityPruningStrategy()
Data structure for intersections.