codac 1.5.6
|
Multi-dimensional paving as representation of a set. More...
#include <codac_Paving.h>
Public Member Functions | |
Basics | |
Paving (const IntervalVector &box, SetValue value=SetValue::UNKNOWN) | |
Creates a paving. | |
~Paving () | |
Paving destructor. | |
Binary tree structure | |
Paving * | get_first_subpaving () |
Points to the first subpaving of the binary tree implementing this paving set. | |
const Paving * | get_first_subpaving () const |
Points to the first subpaving of the binary tree implementing this paving set. | |
Paving * | get_second_subpaving () |
Points to the second subpaving of the binary tree implementing this paving set. | |
const Paving * | get_second_subpaving () const |
Points to the second subpaving of the binary tree implementing this paving set. | |
Paving * | get_root () |
Returns a pointer to the root of the paving structure. | |
const Paving * | get_root () const |
Returns a pointer to the root of the paving structure. | |
Paving * | get_first_leaf (SetValue val, bool without_flag=false) |
Points to the first leaf of the specified value. | |
const Paving * | get_first_leaf (SetValue val, bool without_flag=false) const |
Points to the first leaf of the paving structure. | |
void | bisect (float ratio=0.49) |
Bisects this paving into two subpavings with some ratio bisection. | |
bool | is_leaf () const |
Returns true if this paving is made of two subpavings. | |
Flags | |
bool | flag () const |
Tests whether this paving has been flagged or not. | |
void | set_flag () const |
Flags this paving and all its children. | |
void | reset_flags () const |
Removes the flags of this Paving and all its children. | |
void | reset_paving (SetValue value=SetValue::UNKNOWN) |
Same as building a new Paving object. | |
Extract methods | |
void | get_boxes (std::list< IntervalVector > &l_subpavings, SetValue val, SetValue neg_val=SetValue::DEFAULT) const |
Returns a set of boxes leaves of some value. | |
void | get_pavings_intersecting (SetValue val, const IntervalVector &box_to_intersect, std::vector< const Paving * > &v_subpavings, bool no_degenerated_intersection=false) const |
Returns a set of Paving leaves of some value and intersecting a given box. | |
void | get_neighbours (std::vector< const Paving * > &v_neighbours, SetValue val=SetValue::IN|SetValue::OUT|SetValue::UNKNOWN, bool without_flag=false) const |
Returns the neighbors (adjacent items) of this Paving, having some value. | |
std::vector< ConnectedSubset > | get_connected_subsets (bool sort_by_size=false, SetValue val=SetValue::UNKNOWN|SetValue::IN) const |
Returns the set of connected subsets of this paving. | |
Public Member Functions inherited from codac::Set | |
Set (const IntervalVector &box, SetValue value=SetValue::UNKNOWN) | |
Creates a set. | |
~Set () | |
Set destructor. | |
SetValue | value () const |
Returns the value of this set. | |
int | size () const |
Returns the dimension of the paving. | |
const IntervalVector & | box () const |
Returns the n-dimensional box representing this set. | |
void | set_value (SetValue value) |
Sets the integer value for this set. | |
Public Attributes | |
bool | m_flag = false |
optional flag, can be used by search algorithms | |
Paving * | m_root = nullptr |
pointer to the root | |
Paving * | m_second_subpaving = nullptr |
tree structure | |
Additional Inherited Members | |
Protected Attributes inherited from codac::Set | |
SetValue | m_value |
integer value of this set | |
IntervalVector | m_box |
box representing this set | |
Multi-dimensional paving as representation of a set.
The paving is made of a set of multi-dimensional boxes. The implementation of this paving is made as a binary tree.
codac::Paving::Paving | ( | const IntervalVector & | box, |
SetValue | value = SetValue::UNKNOWN ) |
Creates a paving.
box | n-dimensional box defining the paving |
value | integer of the set, SetValue::UNKNOWN by default |
Paving * codac::Paving::get_first_subpaving | ( | ) |
Points to the first subpaving of the binary tree implementing this paving set.
const Paving * codac::Paving::get_first_subpaving | ( | ) | const |
Points to the first subpaving of the binary tree implementing this paving set.
Paving * codac::Paving::get_second_subpaving | ( | ) |
Points to the second subpaving of the binary tree implementing this paving set.
const Paving * codac::Paving::get_second_subpaving | ( | ) | const |
Points to the second subpaving of the binary tree implementing this paving set.
Paving * codac::Paving::get_root | ( | ) |
Returns a pointer to the root of the paving structure.
const Paving * codac::Paving::get_root | ( | ) | const |
Returns a pointer to the root of the paving structure.
Points to the first leaf of the specified value.
val | the value of the leaf we are looking for |
without_flag | optional research mode: select the first leaf among non-flagged items only |
Points to the first leaf of the paving structure.
val | the value of the leaf we are looking for |
without_flag | optional research mode: select the first leaf among non-flagged items only |
void codac::Paving::bisect | ( | float | ratio = 0.49 | ) |
Bisects this paving into two subpavings with some ratio bisection.
Will create two nodes in the binary tree implementing this set.
ratio | the bisection ratio (default value: 0.49) |
bool codac::Paving::is_leaf | ( | ) | const |
Returns true if this paving is made of two subpavings.
true
if this is a leaf, false
otherwise bool codac::Paving::flag | ( | ) | const |
Tests whether this paving has been flagged or not.
true
if flagged void codac::Paving::reset_paving | ( | SetValue | value = SetValue::UNKNOWN | ) |
Same as building a new Paving object.
value | integer of the set, SetValue::UNKNOWN by default |
void codac::Paving::get_boxes | ( | std::list< IntervalVector > & | l_subpavings, |
SetValue | val, | ||
SetValue | neg_val = SetValue::DEFAULT ) const |
Returns a set of boxes leaves of some value.
l_subpavings | the set of returned objects |
val | the value of the leaves (boxes of the paving) we are looking for |
neg_val | the value for which we reject the leaves, optional argument used for faster execution along the tree |
void codac::Paving::get_pavings_intersecting | ( | SetValue | val, |
const IntervalVector & | box_to_intersect, | ||
std::vector< const Paving * > & | v_subpavings, | ||
bool | no_degenerated_intersection = false ) const |
Returns a set of Paving leaves of some value and intersecting a given box.
val | the value of the leaves we are looking for |
box_to_intersect | the box the returned leaves will intersect |
v_subpavings | the set of returned objects |
no_degenerated_intersection | if true , then the objects for which the intersection amounts to a point will not be returned |
void codac::Paving::get_neighbours | ( | std::vector< const Paving * > & | v_neighbours, |
SetValue | val = SetValue::IN|SetValue::OUT|SetValue::UNKNOWN, | ||
bool | without_flag = false ) const |
Returns the neighbors (adjacent items) of this Paving, having some value.
v_neighbours | the set of leaves to be returned |
val | optional value of the leaves we are looking for, -1 for no restriction |
without_flag | optional research mode: select the leaves among non-flagged items only |
std::vector< ConnectedSubset > codac::Paving::get_connected_subsets | ( | bool | sort_by_size = false, |
SetValue | val = SetValue::UNKNOWN|SetValue::IN ) const |
Returns the set of connected subsets of this paving.
A connected subset is a topological space that cannot be represented as the union of two or more disjoint non-empty open subsets.
sort_by_size | (optional) if true then the subsets will be sort by the number of boxes they are made of |
val | the value of the leaves defining the connected items |