12#ifndef ARCANE_UTILS_REAL3PROXY_H
13#define ARCANE_UTILS_REAL3PROXY_H
17#include "arcane/utils/Real3.h"
18#include "arcane/utils/BuiltInProxy.h"
28typedef BuiltInProxy<Real> RealProxy;
42 : x(value.x,info), y(value.y,info), z(value.z,info), m_value(value), m_info(info) {}
45 : x(f.x), y(f.y), z(f.z), m_value(f.m_value), m_info(f.m_info) {}
47 { x = f.
x; y = f.
y; z = f.
z;
return m_value; }
48 Real3 operator=(Real3 f)
49 { x = f.x; y = f.y; z = f.z;
return m_value; }
52 { x = v; y = v; z = v;
return m_value; }
53 operator Real3()
const
80 { x = ax; y = ay; z = az;
return (*
this); }
83 { x = f.
x; y = f.
y; z = f.
z;
return (*
this); }
101 return math::isNearlyZero(x.getValue()) && math::isNearlyZero(y.getValue()) && math::isNearlyZero(z.getValue());
105 {
return x*x + y*y + z*
z; }
108 {
return _sqrt(abs2()); }
114 std::istream& assign(std::istream& i);
116 std::ostream& print(std::ostream& o)
const;
118 std::ostream& printXyz(std::ostream& o)
const;
143 void operator*= (Real b) { x*=b; y*=b; z*=b; }
147 void operator/= (Real b) { x/=b; y/=b; z/=b; }
175 if (!math::isZero(d))
197 {
return _eq(a.
x,b.
x) && _eq(a.
y,b.
y) && _eq(a.
z,b.
z); }
208 Real3 getValue()
const
213 Real3& getValueMutable()
215 m_info.setReadOrWrite();
224 static bool _eq(Real a,Real b)
227 static Real _sqrt(Real a)
238 return Real3(vec.
x*sca,vec.
y*sca,vec.
z*sca);
249 return Real3(vec.
x*sca,vec.
y*sca,vec.
z*sca);
260 return Real3(vec.
x/sca,vec.
y/sca,vec.
z/sca);
274 return v1.getValue()<v2.getValue();
Real3Proxy & assign(Real3 f)
Copie le triplet f.
RealProxy x
première composante du triplet
Real3Proxy & reset()
Réinitialise le triplet avec les constructeurs par défaut.
Real abs2() const
Retourne la norme au carré du triplet .
friend bool operator!=(Real3Proxy a, Real3Proxy b)
Compare deux triplets. Pour la notion d'égalité, voir operator==()
RealProxy z
troisième composante du triplet
Real3 operator/(Real3 b) const
Créé un triplet qui vaut ce triplet dont chaque composant a été divisée par la composante corresponda...
bool isNearlyZero() const
Compare le triplet avec le triplet nul.
Real3 copy() const
Retourne une copie du triplet.
Real3Proxy(Real3 &value, const MemoryAccessInfo &info)
Construit le triplet (ax,ay,az)
RealProxy y
deuxième composante du triplet
Real3Proxy & addSame(Real b)
Ajoute b à chaque composante du triplet.
Real3 operator-() const
Créé un triplet opposé au triplet actuel.
Real3Proxy & assign(Real ax, Real ay, Real az)
Affecte à l'instance le triplet (ax,ay,az)
Real abs() const
Retourne la norme du triplet .
Real3Proxy & add(Real3 b)
Ajoute b au triplet.
Real3Proxy & divSame(Real b)
Divise chaque composante du triplet par b.
Real3Proxy & sub(Real3 b)
Soustrait b au triplet.
std::ostream & printXyz(std::ostream &o) const
Ecrit le triplet sur le flot o sous la forme (x,y,z)
Real3Proxy(const Real3Proxy &f)
Construit un triplet identique à f.
friend bool operator==(Real3Proxy a, Real3Proxy b)
Compare le triplet à b.
Real3Proxy & mul(Real3 b)
Multiple chaque composante du triplet par la composant correspondant de b.
Real3Proxy & div(Real3 b)
Divise chaque composante du triplet par la composant correspondant de b.
Real3Proxy & mulSame(Real b)
Multiplie chaque composante du triplet par b.
Real3 operator*(Real3 b) const
Créé un triplet qui vaut ce triplet dont chaque composant a été multipliée par la composante correspo...
Real3Proxy & normalize()
Normalise le triplet.
Real3Proxy & subSame(Real b)
Soustrait b à chaque composante du triplet.
Classe gérant un vecteur de réel de dimension 3.
__host__ __device__ double sqrt(double v)
Racine carrée de v.
constexpr __host__ __device__ bool isEqual(const _Type &a, const _Type &b)
Teste l'égalité bit à bit entre deux valeurs.
Real2 operator*(Real sca, const Real2Proxy &vec)
Multiplication par un scalaire.
bool operator<(const Item &item1, const Item &item2)
Compare deux entités.
Real2 operator/(const Real2Proxy &vec, Real sca)
Division par un scalaire.
double Real
Type représentant un réel.
Real y
deuxième composante du triplet
Real z
troisième composante du triplet
Real x
première composante du triplet