|
TRUST 1.9.8
HPC thermohydraulic platform
|
: Un octree permettant de chercher dans l'espace des elements ou des points decrits par des coordonnees reeles. More...
#include <Octree_Double.h>
Public Types | |
| using | int_t = _SIZE_ |
| using | ArrOfInt_t = ArrOfInt_T<_SIZE_> |
| using | IntTab_t = IntTab_T<_SIZE_> |
| using | ArrOfDouble_t = ArrOfDouble_T<_SIZE_> |
| using | DoubleTab_t = DoubleTab_T<_SIZE_> |
Public Member Functions | |
| void | reset () |
| template<class _TAB_TYPE_> | |
| void | build_elements (const _TAB_TYPE_ &coords, const IntTab_t &elements, const double epsilon, const bool include_virtual) |
| Construit un octree a partir d'elements volumiques decrits par des ensembles de sommets. | |
| void | build_nodes (const DoubleTab_t &coords, const bool include_virtual, const double epsilon=0.) |
| construit un octree contenant les points de coordonnees coords. | |
| int_t | search_elements (double x, double y, double z, int_t &index) const |
| cherche les elements ou les points contenus dans l'octree_floor qui contient le point (x,y,z). | |
| int_t | search_elements_box (double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, ArrOfInt_t &elements) const |
| cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee. | |
| int_t | search_elements_box (const ArrOfDouble ¢er, const double radius, ArrOfInt_t &elements) const |
| cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee (centre + ou - radius dans chaque direction) | |
| int | dimension () const |
| const ArrOfInt_t & | floor_elements () const |
Static Public Member Functions | |
| static int_t | search_nodes_close_to (double x, double y, double z, const DoubleTab_t &coords, ArrOfInt_t &node_list, double epsilon) |
| Methode hors classe Cherche parmi les sommets de la liste node_list ceux qui sont a une. | |
| static int_t | search_nodes_close_to (const ArrOfDouble &point, const DoubleTab_t &coords, ArrOfInt_t &node_list, double epsilon) |
| Idem que search_nodes_close_to(double x, double y, double z, . | |
Protected Member Functions | |
| bool | integer_position (double x, int direction, int &ix) const |
| Convertit une coordonnee reelle en coordonnee entiere pour l'octree_int. | |
| bool | integer_position_clip (double xmin, double xmax, int &x0, int &x1, int direction) const |
| template<class _TAB_TYPE_> | |
| void | compute_origin_factors (const _TAB_TYPE_ &coords, const double epsilon, const int include_virtual) |
| methode outil pour build_nodes et build_elements (calcul des facteurs de conversion entre reels et entiers pour Octree_Int | |
Protected Attributes | |
| Octree_Int_32_64< _SIZE_ > | octree_int_ |
| ArrOfDouble | origin_ |
| ArrOfDouble | factor_ |
| int | dim_ = 0 |
: Un octree permettant de chercher dans l'espace des elements ou des points decrits par des coordonnees reeles.
Cet objet est base sur Octree_Int. Astuces: Pour chercher des points a epsilon pres on peut faire: 1) build_nodes(coord, include_virt, 0.) suivi de search_elements_box(center, epsilon, elements);
2) build_nodes(coord, include_virt, epsilon) suivi de search_elements(x,y,z,...) La premiere solution prend plus de temps pour construire l'octree mais la recherche est plus rapide La deuxieme, c'est inverse... et on peut choisir epsilon pour chaque point.
Definition at line 39 of file Octree_Double.h.
| using Octree_Double_32_64< _SIZE_ >::ArrOfDouble_t = ArrOfDouble_T<_SIZE_> |
Definition at line 45 of file Octree_Double.h.
| using Octree_Double_32_64< _SIZE_ >::ArrOfInt_t = ArrOfInt_T<_SIZE_> |
Definition at line 43 of file Octree_Double.h.
| using Octree_Double_32_64< _SIZE_ >::DoubleTab_t = DoubleTab_T<_SIZE_> |
Definition at line 46 of file Octree_Double.h.
| using Octree_Double_32_64< _SIZE_ >::int_t = _SIZE_ |
Definition at line 42 of file Octree_Double.h.
| using Octree_Double_32_64< _SIZE_ >::IntTab_t = IntTab_T<_SIZE_> |
Definition at line 44 of file Octree_Double.h.
| void Octree_Double_32_64< _SIZE_ >::build_elements | ( | const _TAB_TYPE_ & | coords, |
| const IntTab_t & | elements, | ||
| const double | epsilon, | ||
| const bool | include_virtual ) |
Construit un octree a partir d'elements volumiques decrits par des ensembles de sommets.
On stocke dans l'octree les parallelipipdes englobant chaque element (contenant tous les sommets de l'element) plus une marge de epsilon. Si include_virtual=1, on stocke elements.dimension_tot(0) elements, sinon on en stocke elements.dimension(0)
Template car on a besoin de la version float pour lata tools.
Definition at line 31 of file Octree_Double.tpp.
| void Octree_Double_32_64< _SIZE_ >::build_nodes | ( | const DoubleTab_t & | coords, |
| const bool | include_virtual, | ||
| const double | epsilon = 0. ) |
construit un octree contenant les points de coordonnees coords.
Si include_virtual=1, on stocke coords.dimension_tot(0) elements, sinon on en stocke coords.dimension(0) Si epsilon = 0, on construit un octree de points de taille nulle (chaque point se trouve dans un seul octree_floor) Sinon, on construit un octree d'elements cubiques centres sur les coords, de demie-largeur epsilon. Un point peut alors se trouver dans plusieurs octree_floor.
Definition at line 56 of file Octree_Double.cpp.
|
protected |
methode outil pour build_nodes et build_elements (calcul des facteurs de conversion entre reels et entiers pour Octree_Int
epsilon est ajoute aux coordonnees min et max pour la bounding box de l'octree.
Template car on a besoin de la version float pour lata tools.
Definition at line 77 of file Octree_Double.tpp.
|
inline |
Definition at line 59 of file Octree_Double.h.
|
inline |
Definition at line 64 of file Octree_Double.h.
|
inlineprotected |
Convertit une coordonnee reelle en coordonnee entiere pour l'octree_int.
Valeur de retour: 1 si ok, 0 si coordonnee hors de l'octree
Definition at line 86 of file Octree_Double.h.
|
inlineprotected |
Definition at line 103 of file Octree_Double.h.
| void Octree_Double_32_64< _SIZE_ >::reset | ( | ) |
Definition at line 19 of file Octree_Double.cpp.
| Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_elements | ( | double | x, |
| double | y, | ||
| double | z, | ||
| int_t & | index ) const |
cherche les elements ou les points contenus dans l'octree_floor qui contient le point (x,y,z).
Renvoie le nombre n de ces elements. Les indices des elements sont dans floor_elements()[index+i] pour 0 <= i < n
Definition at line 34 of file Octree_Double.cpp.
| Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_elements_box | ( | const ArrOfDouble & | center, |
| const double | radius, | ||
| ArrOfInt_t & | elements ) const |
cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee (centre + ou - radius dans chaque direction)
Definition at line 134 of file Octree_Double.cpp.
| Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_elements_box | ( | double | xmin, |
| double | ymin, | ||
| double | zmin, | ||
| double | xmax, | ||
| double | ymax, | ||
| double | zmax, | ||
| ArrOfInt_t & | elements ) const |
cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee.
Definition at line 104 of file Octree_Double.cpp.
|
static |
Idem que search_nodes_close_to(double x, double y, double z, .
..)
Definition at line 193 of file Octree_Double.cpp.
|
static |
Methode hors classe Cherche parmi les sommets de la liste node_list ceux qui sont a une.
distance inferieure a epsilon du point (x,y,z). node_list contient des indices de sommets dans le tableau coords. La liste des noeuds verifiant le critere est mise dans node_list. On renvoie l'indice dans le tableau coords du sommet le plus proche.
Definition at line 155 of file Octree_Double.cpp.
|
protected |
Definition at line 76 of file Octree_Double.h.
|
protected |
Definition at line 75 of file Octree_Double.h.
|
protected |
Definition at line 73 of file Octree_Double.h.
|
protected |
Definition at line 75 of file Octree_Double.h.