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); }
227 return math::isNearlyZero(x) && math::isNearlyZero(y) && math::isNearlyZero(z);
230 constexpr ARCCORE_HOST_DEVICE Real
squareNormL2()
const {
return x * x + y * y + z * z; }
232 ARCCORE_HOST_DEVICE Real
normL2()
const {
return _sqrt(squareNormL2()); }
234 ARCCORE_DEPRECATED_2021(
"Use squareNormL2() instead")
235 constexpr ARCCORE_HOST_DEVICE Real abs2()
const {
return x * x + y * y + z * z; }
237 ARCCORE_DEPRECATED_2021(
"Use normL2() instead")
238 ARCCORE_HOST_DEVICE Real abs()
const {
return _sqrt(squareNormL2()); }
240 ARCCORE_HOST_DEVICE
Real3 absolute()
const {
return Real3(math::abs(x), math::abs(y), math::abs(z)); }
246 std::istream& assign(std::istream& i);
248 std::ostream& print(std::ostream& o)
const;
250 std::ostream& printXyz(std::ostream& o)
const;
365 if (!math::isZero(d))
401 return (v1.
x < v2.
x);
407 return t.printXyz(o);
424 return _eq(x,
b.x) && _eq(y,
b.y) && _eq(z,
b.z);
442 constexpr ARCCORE_HOST_DEVICE
static bool _eq(Real a, Real
b)
444 return math::isEqual(a,
b);
447 ARCCORE_HOST_DEVICE
static Real
_sqrt(Real a)
449 return math::sqrt(a);
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe gérant un vecteur de réel de dimension 2.
constexpr ARCCORE_HOST_DEVICE Real2()
Construit le vecteur nul.
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 bool isNearlyZero() const
Indique si l'instance est proche de l'instance nulle.
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.
Real3 & normalize()
Normalise le triplet.
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.
ARCCORE_HOST_DEVICE Real normL2() const
Retourne la norme L2 du triplet .
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 static ARCCORE_HOST_DEVICE bool _eq(Real a, Real b)
Compare les valeurs de a et b avec le comparateur TypeEqualT.
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.
static ARCCORE_HOST_DEVICE Real _sqrt(Real a)
Retourne la racine carrée de a.
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.
-*- 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