12#ifndef ARCANE_UTILS_REAL3_H
13#define ARCANE_UTILS_REAL3_H
17#include "arcane/utils/Numeric.h"
18#include "arcane/utils/Real2.h"
50 ARCCORE_CHECK_AT(i, 3);
65 ARCCORE_CHECK_AT(i, 3);
80 ARCCORE_CHECK_AT(i,3);
95 ARCCORE_CHECK_AT(i,3);
102 ARCCORE_CHECK_AT(i, 3);
136 constexpr ARCCORE_HOST_DEVICE
Real3()
163 constexpr ARCCORE_HOST_DEVICE
explicit Real3(Real v)
190 constexpr ARCCORE_HOST_DEVICE
static Real3 null() {
return Real3(0., 0., 0.); }
191 constexpr ARCCORE_HOST_DEVICE
static Real3 zero() {
return Real3(0., 0., 0.); }
196 constexpr ARCCORE_HOST_DEVICE
Real3 copy()
const {
return (*
this); }
221 ARCCORE_HOST_DEVICE
Real3 absolute()
const {
return Real3(math::abs(x), math::abs(y), math::abs(z)); }
227 std::istream& assign(std::istream& i);
229 std::ostream& print(std::ostream& o)
const;
231 std::ostream& printXyz(std::ostream& o)
const;
370 return (v1.
x < v2.
x);
376 return t.printXyz(o);
393 return _eq(x,
b.x) && _eq(y,
b.y) && _eq(z,
b.z);
408 constexpr ARCCORE_HOST_DEVICE Real
squareNormL2()
const {
return x * x + y * y + z * z; }
412 inline ARCCORE_HOST_DEVICE Real normL2()
const;
415 ARCCORE_DEPRECATED_2021(
"Use math::squareNormL2(const Real3&) instead")
416 constexpr ARCCORE_HOST_DEVICE Real abs2()
const {
return x * x + y * y + z * z; }
419 ARCCORE_DEPRECATED_2021(
"Use math::normL2(const Real3&) instead")
420 inline ARCCORE_HOST_DEVICE Real abs() const;
459 return v.
x * v.
x + v.
y * v.
y + v.
z * v.
z;
468 inline constexpr ARCCORE_HOST_DEVICE
bool isNearlyZero(
const Real3& v)
470 return math::isNearlyZero(v.
x) && math::isNearlyZero(v.
y) && math::isNearlyZero(v.
z);
473 inline ARCCORE_HOST_DEVICE Real normL2(
const Real3& v)
475 return math::sqrt(math::squareNormL2(v));
486 Real d = math::normL2(v);
487 if (!math::isZero(d))
499 return math::mutableNormalize(*
this);
502inline constexpr ARCCORE_HOST_DEVICE
bool Real3::
505 return math::isNearlyZero(*
this);
508inline constexpr ARCCORE_HOST_DEVICE
bool Real3::
511 return math::isEqual(a,
b);
514ARCCORE_HOST_DEVICE
inline Real Real3::
517 return math::sqrt(a);
520inline ARCCORE_HOST_DEVICE Real Real3::
523 return math::normL2(*
this);
526inline ARCCORE_HOST_DEVICE Real Real3::
529 return math::normL2(*
this);
Vue typée sur une liste d'entités d'une connectivité.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe gérant un vecteur de réel de dimension 2.
Classe gérant un vecteur de réel de dimension 3.
Real3(const Real3 &f)=default
Construit un triplet identique à f.
Real3 & operator=(const Real3 &f)=default
Opérateur de recopie.
constexpr ARCCORE_HOST_DEVICE Real3 & div(Real3 b)
Divise chaque composante du triplet par la composant correspondant de b.
constexpr ARCCORE_HOST_DEVICE Real3 & assign(Real3 f)
Copie le triplet f.
constexpr ARCCORE_HOST_DEVICE Real3 operator-(Real3 b) const
Créé un triplet qui vaut b soustrait de ce triplet.
constexpr ARCCORE_HOST_DEVICE void operator/=(Real b)
Divise chaque composante du triplet par le réel b.
constexpr ARCCORE_HOST_DEVICE Real3 & addSame(Real b)
Ajoute b à chaque composante du triplet.
constexpr ARCCORE_HOST_DEVICE Real3 operator-() const
Créé un triplet opposé au triplet actuel.
friend constexpr ARCCORE_HOST_DEVICE Real3 operator*(Real sca, Real3 vec)
Multiplication par un scalaire.
friend constexpr ARCCORE_HOST_DEVICE Real3 operator*(Real3 vec, Real sca)
Multiplication par un scalaire.
ARCCORE_HOST_DEVICE Real3 absolute() const
Valeur absolue composante par composante.
friend constexpr ARCCORE_HOST_DEVICE bool operator<(Real3 v1, Real3 v2)
Opérateur de comparaison.
constexpr ARCCORE_HOST_DEVICE Real3 & operator+=(Real3 b)
Ajoute b au triplet.
constexpr ARCCORE_HOST_DEVICE Real squareNormL2() const
Retourne la norme L2 au carré du triplet .
constexpr ARCCORE_HOST_DEVICE bool operator==(Real3 b) const
Compare composant pas composante l'instance courante à b.
constexpr ARCCORE_HOST_DEVICE Real3(const Real3POD &f)
Construit un triplet identique à f.
constexpr ARCCORE_HOST_DEVICE Real3 operator/(Real3 b) const
Créé un triplet qui vaut ce triplet dont chaque composant a été divisée par la composante corresponda...
constexpr ARCCORE_HOST_DEVICE Real3 & assign(Real ax, Real ay, Real az)
Affecte à l'instance le triplet (ax,ay,az)
constexpr ARCCORE_HOST_DEVICE Real3()
Construit le vecteur nul.
constexpr ARCCORE_HOST_DEVICE Real3 & add(Real3 b)
Ajoute b au triplet.
constexpr ARCCORE_HOST_DEVICE Real3 & reset()
Réinitialise le triplet avec les constructeurs par défaut.
constexpr ARCCORE_HOST_DEVICE Real3(Real v)
Construit l'instance avec le triplet (v,v,v).
constexpr ARCCORE_HOST_DEVICE Real3 & sub(Real3 b)
Soustrait b au triplet.
constexpr ARCCORE_HOST_DEVICE Real3 copy() const
Retourne une copie du triplet.
friend std::istream & operator>>(std::istream &i, Real3 &t)
Lit le triplet t à partir du flot o.
constexpr ARCCORE_HOST_DEVICE Real3 & mulSame(Real b)
Multiplie chaque composante du triplet par b.
constexpr ARCCORE_HOST_DEVICE Real3 & subSame(Real b)
Soustrait b à chaque composante du triplet.
constexpr ARCCORE_HOST_DEVICE Real3 & operator*=(Real3 b)
Multiple chaque composante du triplet par la composant correspondant de b.
constexpr ARCCORE_HOST_DEVICE Real3 & operator=(Real v)
Affecte à l'instance le triplet (v,v,v).
constexpr ARCCORE_HOST_DEVICE Real3 operator+(Real3 b) const
Créé un triplet qui vaut ce triplet ajouté à b.
constexpr ARCCORE_HOST_DEVICE bool operator!=(Real3 b) const
Compare deux triplets. Pour la notion d'égalité, voir operator==()
constexpr ARCCORE_HOST_DEVICE Real3 & operator-=(Real3 b)
Soustrait b au triplet.
friend constexpr ARCCORE_HOST_DEVICE Real3 operator/(Real3 vec, Real sca)
Division par un scalaire.
constexpr ARCCORE_HOST_DEVICE void operator*=(Real b)
Multiple chaque composante du triplet par le réel b.
constexpr ARCCORE_HOST_DEVICE Real3(Real ax, Real ay, Real az)
Construit le triplet (ax,ay,az)
constexpr ARCCORE_HOST_DEVICE Real3(const Real2 &f)
Construit un triplet identique à f.
constexpr ARCCORE_HOST_DEVICE Real3 & operator/=(Real3 b)
Divise chaque composante du triplet par la composant correspondant de b.
constexpr ARCCORE_HOST_DEVICE Real3 & divSame(Real b)
Divise chaque composante du triplet par b.
constexpr ARCCORE_HOST_DEVICE Real3 operator*(Real3 b) const
Créé un triplet qui vaut ce triplet dont chaque composant a été multipliée par la composante correspo...
constexpr ARCCORE_HOST_DEVICE Real3 & mul(Real3 b)
Multiple chaque composante du triplet par la composant correspondant de b.
friend std::ostream & operator<<(std::ostream &o, Real3 t)
Ecrit le triplet t sur le flot o.
Espace de nom pour l'utilisation des accélérateurs.
constexpr ARCCORE_HOST_DEVICE Real squareNormL2(const Real2 &v)
Retourne la norme au carré du couple .
Real2 & mutableNormalize(Real2 &v)
Normalise le couple.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Real y
deuxième composante du couple
Real x
première composante du couple
ARCCORE_HOST_DEVICE Real operator()(Integer i) const
ARCCORE_HOST_DEVICE Real operator[](Integer i) const
Real y
deuxième composante du triplet
Real z
troisième composante du triplet
ARCCORE_HOST_DEVICE Real & operator()(Integer i)
ARCCORE_HOST_DEVICE void setComponent(Integer i, Real value)
Positionne la i-ème composante à value.
ARCCORE_HOST_DEVICE Real & operator[](Integer i)
Real x
première composante du triplet