Arcane  v3.16.6.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IRayMeshIntersection.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* IRayMeshIntersection.h (C) 2000-2025 */
9/* */
10/* Calcul de l'intersection entre des segments et la surface d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IRAYMESHINTERSECTION_H
13#define ARCANE_CORE_IRAYMESHINTERSECTION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
31{
32 public:
33
34 virtual ~IRayFaceIntersector() {}
35
36 public:
37
52 virtual bool computeIntersection(Real3 origin, Real3 direction,
53 Int32 orig_face_local_id,
54 Int32 face_local_id,
55 Real3ConstArrayView face_nodes,
56 Int32* user_value,
57 Real* distance, Real3* intersection_position) = 0;
58};
59
60/*---------------------------------------------------------------------------*/
61/*---------------------------------------------------------------------------*/
67{
68 public:
69
71 virtual ~IRayMeshIntersection() = default;
72
73 public:
74
76 virtual void build() = 0;
77
78 public:
79
87 virtual void compute(Real3ConstArrayView segments_position,
88 Real3ConstArrayView segments_direction,
89 Int32ConstArrayView orig_faces_local_id,
90 Int32ArrayView user_values,
91 Real3ArrayView intersections,
92 RealArrayView distances,
93 Int32ArrayView faces_local_id) = 0;
94
121 virtual void compute(IItemFamily* ray_family,
122 VariableParticleReal3& rays_position,
123 VariableParticleReal3& rays_direction,
124 VariableParticleInt32& rays_orig_face,
125 VariableParticleInt32& user_values,
126 VariableParticleReal3& intersections,
127 VariableParticleReal& distances,
128 VariableParticleInt32& rays_face) = 0;
129
137 virtual void setFaceIntersector(IRayFaceIntersector* intersector) = 0;
138
141};
142
143/*---------------------------------------------------------------------------*/
144/*---------------------------------------------------------------------------*/
145
146} // namespace Arcane
147
148/*---------------------------------------------------------------------------*/
149/*---------------------------------------------------------------------------*/
150
151#endif
152
Déclarations des types généraux de Arcane.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Interface générique du calcul de l'intersection d'un rayon avec une face.
virtual bool computeIntersection(Real3 origin, Real3 direction, Int32 orig_face_local_id, Int32 face_local_id, Real3ConstArrayView face_nodes, Int32 *user_value, Real *distance, Real3 *intersection_position)=0
Calcul l'intersection entre un rayon et une face.
Calcul de l'intersection entre un ensemble de segments et la surface d'un maillage.
virtual ~IRayMeshIntersection()=default
Libère les ressources.
virtual void build()=0
Construit l'instance.
virtual void compute(IItemFamily *ray_family, VariableParticleReal3 &rays_position, VariableParticleReal3 &rays_direction, VariableParticleInt32 &rays_orig_face, VariableParticleInt32 &user_values, VariableParticleReal3 &intersections, VariableParticleReal &distances, VariableParticleInt32 &rays_face)=0
Calcule l'intersection de rayons.
virtual IRayFaceIntersector * faceIntersector()=0
Intersecteur utilisé (0 si aucun spécifié)
virtual void setFaceIntersector(IRayFaceIntersector *intersector)=0
Positionne le callback d'intersection.
virtual void compute(Real3ConstArrayView segments_position, Real3ConstArrayView segments_direction, Int32ConstArrayView orig_faces_local_id, Int32ArrayView user_values, Real3ArrayView intersections, RealArrayView distances, Int32ArrayView faces_local_id)=0
Calcule l'intersection.
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
MeshVariableScalarRefT< Particle, Real3 > VariableParticleReal3
Grandeur particulaire de type coordonnées.
MeshVariableScalarRefT< Particle, Int32 > VariableParticleInt32
Grandeur particulaire de type entier 32 bits.
MeshVariableScalarRefT< Particle, Real > VariableParticleReal
Grandeur particulaire de type réel.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ConstArrayView< Real3 > Real3ConstArrayView
Equivalent C d'un tableau à une dimension de Real3.
Definition UtilsTypes.h:583
ArrayView< Real3 > Real3ArrayView
Equivalent C d'un tableau à une dimension de Real3.
Definition UtilsTypes.h:554
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:540
double Real
Type représentant un réel.
ArrayView< Real > RealArrayView
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:546
std::int32_t Int32
Type entier signé sur 32 bits.