Arcane  v3.16.0.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-2022 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-2009 */
9/* */
10/* Calcul de l'intersection entre des segments et la surface d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IRAYMESHINTERSECTION_H
13#define ARCANE_IRAYMESHINTERSECTION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27class IMesh;
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
35{
36 public:
37
38 virtual ~IRayFaceIntersector() {}
39
40 public:
41
56 virtual bool computeIntersection(Real3 origin,Real3 direction,
57 Int32 orig_face_local_id,
58 Int32 face_local_id,
59 Real3ConstArrayView face_nodes,
60 Int32* user_value,
61 Real* distance,Real3* intersection_position) =0;
62};
63
64/*---------------------------------------------------------------------------*/
65/*---------------------------------------------------------------------------*/
71{
72 public:
73
76
77 public:
78
80 virtual void build() =0;
81
82 public:
83
91 virtual void compute(Real3ConstArrayView segments_position,
92 Real3ConstArrayView segments_direction,
93 Int32ConstArrayView orig_faces_local_id,
94 Int32ArrayView user_values,
95 Real3ArrayView intersections,
96 RealArrayView distances,
97 Int32ArrayView faces_local_id) =0;
98
125 virtual void compute(IItemFamily* ray_family,
126 VariableParticleReal3& rays_position,
127 VariableParticleReal3& rays_direction,
128 VariableParticleInt32& rays_orig_face,
129 VariableParticleInt32& user_values,
130 VariableParticleReal3& intersections,
131 VariableParticleReal& distances,
132 VariableParticleInt32& rays_face) =0;
133
141 virtual void setFaceIntersector(IRayFaceIntersector* intersector) =0;
142
145};
146
147/*---------------------------------------------------------------------------*/
148/*---------------------------------------------------------------------------*/
149
150ARCANE_END_NAMESPACE
151
152/*---------------------------------------------------------------------------*/
153/*---------------------------------------------------------------------------*/
154
155#endif
156
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 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 ~IRayMeshIntersection()
Libère les ressources.
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.
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.