BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
def.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/ba3d/def.h
6 //! @brief Definitions
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_GUI_BA3D_DEF_H
16 #define BORNAGAIN_GUI_BA3D_DEF_H
17 
18 #if defined(__GNUC__) && !defined(__APPLE__)
19 #pragma GCC diagnostic ignored "-Wswitch-enum"
20 #pragma GCC diagnostic ignored "-Wpadded"
21 #pragma GCC diagnostic ignored "-Wfloat-equal"
22 #endif
23 
24 //------------------------------------------------------------------------------
25 // coordinates
26 
27 #include <QVector3D>
28 
29 namespace RealSpace {
30 //------------------------------------------------------------------------------
31 
32 struct Vector3D {
33  float x, y, z;
34 
35  Vector3D();
36  Vector3D(float);
37  Vector3D(float, float, float);
38 
39  Vector3D(const Vector3D&) = default;
40 
41  Vector3D(QVector3D const&);
42  operator QVector3D() const;
43 
44  float length() const;
45  Vector3D normalized() const;
46 
47  Vector3D interpolateTo(const Vector3D&, float) const;
48 
49  static Vector3D const _0, _1, _x, _y, _z;
50 };
51 
52 // products
53 Vector3D cross(const Vector3D&, const Vector3D&);
54 float dot(const Vector3D&, const Vector3D&);
55 
58 Vector3D operator*(const Vector3D&, float);
59 
60 Vector3D operator+(const Vector3D&, const Vector3D&);
61 Vector3D operator-(const Vector3D&, const Vector3D&);
62 
63 //------------------------------------------------------------------------------
64 
65 // range of float
66 struct Range {
67  float min, max;
68  Range(float, float);
69 
70  float size() const;
71  float mid() const;
72 };
73 
74 // range of coordinates
75 struct VectorRange {
76  Range x, y, z;
79 
80  Vector3D size() const;
81  Vector3D mid() const;
82 
83  float length() const;
84 };
85 
86 //------------------------------------------------------------------------------
87 } // namespace RealSpace
88 #endif // BORNAGAIN_GUI_BA3D_DEF_H
float dot(const Vector3D &v1, const Vector3D &v2)
Definition: def.cpp:59
Vector3D cross(const Vector3D &v1, const Vector3D &v2)
Definition: def.cpp:54
Vector3D operator-(const Vector3D &v)
Definition: def.cpp:69
Vector3D operator+(const Vector3D &v)
Definition: def.cpp:64
Vector3D operator*(const Vector3D &v, float f)
Definition: def.cpp:74
float mid() const
Definition: def.cpp:98
float size() const
Definition: def.cpp:93
float min
Definition: def.h:67
float max
Definition: def.h:67
Range(float, float)
Definition: def.cpp:91
Vector3D interpolateTo(const Vector3D &, float) const
Definition: def.cpp:41
static Vector3D const _1
Definition: def.h:49
static Vector3D const _z
Definition: def.h:49
Vector3D normalized() const
Definition: def.cpp:36
static Vector3D const _0
Definition: def.h:49
Vector3D(const Vector3D &)=default
static Vector3D const _y
Definition: def.h:49
float length() const
Definition: def.cpp:31
static Vector3D const _x
Definition: def.h:49
VectorRange(Range, Range, Range)
Definition: def.cpp:105
Vector3D mid() const
Definition: def.cpp:117
float length() const
Definition: def.cpp:122
Vector3D size() const
Definition: def.cpp:112