Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::RayTriangle3DIntersection

Calcul l'intersection d'un rayon avec un ensemble de triangles en 3D. Plus de détails...

+ Graphe d'héritage de Arcane::RayTriangle3DIntersection:
+ Graphe de collaboration de Arcane::RayTriangle3DIntersection:

Fonctions membres publiques

 RayTriangle3DIntersection (ITraceMng *tm)
 
void setRays (Real3ConstArrayView origins, Real3ConstArrayView directions)
 Position la liste des rayons dont on souhaite calculer l'intersection.
 
void setTriangles (Real3ConstArrayView coordinates, Int32ConstArrayView indexes)
 Positionne la liste des triangles dont on souhaite calculer l'intersection avec les rayons. Le tableau indexes contient pour chaque triangle les indices dans le tableau coordinates de chaque sommet. Par exemple, indexes[0..2] contient les indices des sommets du 1er triangle, indexes[3..5] ceux du second.
 
void compute ()
 Calcul l'intersection de chaque rayon avec la liste des triangles. Si un rayon intersecte plusieurs triangles, on concerve celui dont la distance par rapport à l'origine du rayon est la plus petite.
 
RealConstArrayView distances ()
 Distance de l'origine d'un rayon à son point d'intersection. Distance (exprimée relativivement à la norme de directions) du point d'intersection d'un rayon par rapport à son origine. Pour le rayon i, son point d'intersection est donc donnée par la formule (origins[i] + distances[i]*directions[i]). La distance est négative si le rayon n'intersecte aucun triangle. Ce tableau est remplit lors de l'appel à compute().
 
Int32ConstArrayView intersectedTriangleIndexes ()
 Indices des triangles intersectés. Indice dans le tableau donnée par setTriangles() du triangle intersecté par chaque rayon. Cet indice vaut (-1) si un rayon n'intersecte pas un triangle. Ce tableau est remplit lors de l'appel à compute().
 
Real checkIntersection (Real3 origin, Real3 direction, Real3 p0, Real3 p1, Real3 p2)
 Calcul l'intersection de la demi-droite [origin,direction) avec le triangle (p0,p1,p2).
 
- Fonctions membres publiques hérités de Arccore::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Construit un accesseur via le gestionnaire de trace m.
 
 TraceAccessor (const TraceAccessor &rhs)
 Constructeur par recopie.
 
TraceAccessoroperator= (const TraceAccessor &rhs)
 Opérateur de recopie.
 
virtual ~TraceAccessor ()
 Libère les ressources.
 
ITraceMngtraceMng () const
 Gestionnaire de trace.
 
TraceMessage info () const
 Flot pour un message d'information.
 
TraceMessage pinfo () const
 Flot pour un message d'information en parallèle.
 
TraceMessage info (char category) const
 Flot pour un message d'information d'une catégorie donnée.
 
TraceMessage pinfo (char category) const
 Flot pour un message d'information parallèle d'une catégorie donnée.
 
TraceMessage info (bool v) const
 Flot pour un message d'information.
 
TraceMessage warning () const
 Flot pour un message d'avertissement.
 
TraceMessage pwarning () const
 
TraceMessage error () const
 Flot pour un message d'erreur.
 
TraceMessage perror () const
 
TraceMessage log () const
 Flot pour un message de log.
 
TraceMessage plog () const
 Flot pour un message de log.
 
TraceMessage logdate () const
 Flot pour un message de log précédé de la date.
 
TraceMessage fatal () const
 Flot pour un message d'erreur fatale.
 
TraceMessage pfatal () const
 Flot pour un message d'erreur fatale en parallèle.
 
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flot pour un message de debug.
 
Trace::eDebugLevel configDbgLevel () const
 Niveau debug du fichier de configuration.
 
TraceMessage info (Int32 verbose_level) const
 Flot pour un message d'information d'un niveau donné
 
TraceMessage linfo () const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
TraceMessage linfo (Int32 relative_level) const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
void fatalMessage (const StandaloneTraceMessage &o) const
 

Fonctions membres publiques statiques

static bool checkBoundingBox (Real3 origin, Real3 direction, Real3 box_min, Real3 box_max)
 

Fonctions membres privées

void _compute2 (Int32 triangle_id, Real3 p0, Real3 p1, Real3 p2)
 

Attributs privés

Real3ConstArrayView m_rays_origin
 
Real3ConstArrayView m_rays_direction
 
Real3ConstArrayView m_triangles_coordinates
 
Int32ConstArrayView m_triangles_indexes
 
RealUniqueArray m_distances
 
Int32UniqueArray m_intersected_triangle_indexes
 

Membres hérités additionnels

- Fonctions membres protégées hérités de Arccore::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
 
Int32 _localVerboseLevel () const
 

Description détaillée

Calcul l'intersection d'un rayon avec un ensemble de triangles en 3D.

Un rayon est une demi-droite et est défini par son origine et sa direction. Il faut positionner les rayons (via setRays()) et la liste des triangles (via setTriangles()) puis appeler la méthode compute(). En retour, on peut récupérer pour chaque rayon la distance (distances()) et le triangle intersecté (intersectedTriangleIndexes()).

Les vues passées en argument (setRays() et setTriangles()) ne doivent pas être modifiées tant que l'instance existe.

Définition à la ligne 67 du fichier BasicRayMeshIntersection.cc.

Documentation des constructeurs et destructeur

◆ RayTriangle3DIntersection()

Arcane::RayTriangle3DIntersection::RayTriangle3DIntersection ( ITraceMng tm)
inline

Définition à la ligne 71 du fichier BasicRayMeshIntersection.cc.

Documentation des fonctions membres

◆ _compute2()

void Arcane::RayTriangle3DIntersection::_compute2 ( Int32  triangle_id,
Real3  p0,
Real3  p1,
Real3  p2 
)
private

Définition à la ligne 182 du fichier BasicRayMeshIntersection.cc.

◆ checkBoundingBox()

bool Arcane::RayTriangle3DIntersection::checkBoundingBox ( Real3  origin,
Real3  direction,
Real3  box_min,
Real3  box_max 
)
static

Définition à la ligne 310 du fichier BasicRayMeshIntersection.cc.

◆ checkIntersection()

Real Arcane::RayTriangle3DIntersection::checkIntersection ( Real3  origin,
Real3  direction,
Real3  p0,
Real3  p1,
Real3  p2 
)

Calcul l'intersection de la demi-droite [origin,direction) avec le triangle (p0,p1,p2).

La direction n'a pas besoin d'être normalisée.

La position du point d'intersection est P = origin + t * direction où t est la valeur retournée par cette fonction. Cette valeur est négative si si aucun point d'intersection n'est trouvé.

Définition à la ligne 211 du fichier BasicRayMeshIntersection.cc.

Références Arcane::math::dot(), et Arcane::math::vecMul().

Référencé par Arcane::BasicRayFaceIntersector::computeIntersection().

◆ compute()

void Arcane::RayTriangle3DIntersection::compute ( )

Calcul l'intersection de chaque rayon avec la liste des triangles. Si un rayon intersecte plusieurs triangles, on concerve celui dont la distance par rapport à l'origine du rayon est la plus petite.

Définition à la ligne 150 du fichier BasicRayMeshIntersection.cc.

Références Arccore::Array< T >::fill(), Arccore::TraceAccessor::info(), Arccore::Array< T >::resize(), et Arccore::ConstArrayView< T >::size().

◆ distances()

RealConstArrayView Arcane::RayTriangle3DIntersection::distances ( )
inline

Distance de l'origine d'un rayon à son point d'intersection. Distance (exprimée relativivement à la norme de directions) du point d'intersection d'un rayon par rapport à son origine. Pour le rayon i, son point d'intersection est donc donnée par la formule (origins[i] + distances[i]*directions[i]). La distance est négative si le rayon n'intersecte aucun triangle. Ce tableau est remplit lors de l'appel à compute().

Définition à la ligne 111 du fichier BasicRayMeshIntersection.cc.

◆ intersectedTriangleIndexes()

Int32ConstArrayView Arcane::RayTriangle3DIntersection::intersectedTriangleIndexes ( )
inline

Indices des triangles intersectés. Indice dans le tableau donnée par setTriangles() du triangle intersecté par chaque rayon. Cet indice vaut (-1) si un rayon n'intersecte pas un triangle. Ce tableau est remplit lors de l'appel à compute().

Définition à la ligne 123 du fichier BasicRayMeshIntersection.cc.

◆ setRays()

void Arcane::RayTriangle3DIntersection::setRays ( Real3ConstArrayView  origins,
Real3ConstArrayView  directions 
)
inline

Position la liste des rayons dont on souhaite calculer l'intersection.

Définition à la ligne 79 du fichier BasicRayMeshIntersection.cc.

◆ setTriangles()

void Arcane::RayTriangle3DIntersection::setTriangles ( Real3ConstArrayView  coordinates,
Int32ConstArrayView  indexes 
)
inline

Positionne la liste des triangles dont on souhaite calculer l'intersection avec les rayons. Le tableau indexes contient pour chaque triangle les indices dans le tableau coordinates de chaque sommet. Par exemple, indexes[0..2] contient les indices des sommets du 1er triangle, indexes[3..5] ceux du second.

Définition à la ligne 91 du fichier BasicRayMeshIntersection.cc.

Documentation des données membres

◆ m_distances

RealUniqueArray Arcane::RayTriangle3DIntersection::m_distances
private

Définition à la ligne 143 du fichier BasicRayMeshIntersection.cc.

◆ m_intersected_triangle_indexes

Int32UniqueArray Arcane::RayTriangle3DIntersection::m_intersected_triangle_indexes
private

Définition à la ligne 144 du fichier BasicRayMeshIntersection.cc.

◆ m_rays_direction

Real3ConstArrayView Arcane::RayTriangle3DIntersection::m_rays_direction
private

Définition à la ligne 139 du fichier BasicRayMeshIntersection.cc.

◆ m_rays_origin

Real3ConstArrayView Arcane::RayTriangle3DIntersection::m_rays_origin
private

Définition à la ligne 138 du fichier BasicRayMeshIntersection.cc.

◆ m_triangles_coordinates

Real3ConstArrayView Arcane::RayTriangle3DIntersection::m_triangles_coordinates
private

Définition à la ligne 140 du fichier BasicRayMeshIntersection.cc.

◆ m_triangles_indexes

Int32ConstArrayView Arcane::RayTriangle3DIntersection::m_triangles_indexes
private

Définition à la ligne 141 du fichier BasicRayMeshIntersection.cc.


La documentation de cette classe a été générée à partir du fichier suivant :