BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
Line.h
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Device/Mask/Line.h
6 //! @brief Defines class Line.
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_CORE_MASK_LINE_H
16 #define BORNAGAIN_CORE_MASK_LINE_H
17 
18 #include "Device/Mask/IShape2D.h"
19 
20 //! A line segment.
21 //! @ingroup mask
22 
23 class Line : public IShape2D
24 {
25 public:
26  Line(double x1, double y1, double x2, double y2);
27  Line* clone() const { return new Line(m_x1, m_y1, m_x2, m_y2); }
28 
29  bool contains(double x, double y) const;
30  bool contains(const Bin1D& binx, const Bin1D& biny) const;
31 
32 private:
33  double m_x1, m_y1, m_x2, m_y2;
34 };
35 
36 //! An infinite vertical line.
37 //! @ingroup mask
38 
39 class VerticalLine : public IShape2D
40 {
41 public:
42  VerticalLine(double x);
43  VerticalLine* clone() const { return new VerticalLine(m_x); }
44 
45  bool contains(double x, double y) const;
46  bool contains(const Bin1D& binx, const Bin1D& biny) const;
47 
48  double getXpos() const { return m_x; }
49 
50 private:
51  double m_x;
52 };
53 
54 //! An infinite horizontal line.
55 //! @ingroup mask
56 
57 class HorizontalLine : public IShape2D
58 {
59 public:
60  HorizontalLine(double y);
61  HorizontalLine* clone() const { return new HorizontalLine(m_y); }
62 
63  bool contains(double x, double y) const;
64  bool contains(const Bin1D& binx, const Bin1D& biny) const;
65 
66  double getYpos() const { return m_y; }
67 
68 private:
69  double m_y;
70 };
71 
72 #endif // BORNAGAIN_CORE_MASK_LINE_H
Defines basic class for all 2D shapes.
An infinite horizontal line.
Definition: Line.h:58
bool contains(double x, double y) const
Returns true if point with given coordinates is inside or on border of the shape.
Definition: Line.cpp:85
HorizontalLine * clone() const
Definition: Line.h:61
double m_y
Definition: Line.h:69
double getYpos() const
Definition: Line.h:66
HorizontalLine(double y)
Definition: Line.cpp:83
Basic class for all shapes in 2D.
Definition: IShape2D.h:27
A line segment.
Definition: Line.h:24
double m_x2
Definition: Line.h:33
double m_x1
Definition: Line.h:33
Line(double x1, double y1, double x2, double y2)
Definition: Line.cpp:29
bool contains(double x, double y) const
Returns true if point with given coordinates is inside or on border of the shape.
Definition: Line.cpp:34
double m_y1
Definition: Line.h:33
double m_y2
Definition: Line.h:33
Line * clone() const
Definition: Line.h:27
An infinite vertical line.
Definition: Line.h:40
VerticalLine * clone() const
Definition: Line.h:43
double getXpos() const
Definition: Line.h:48
bool contains(double x, double y) const
Returns true if point with given coordinates is inside or on border of the shape.
Definition: Line.cpp:70
double m_x
Definition: Line.h:51
VerticalLine(double x)
Definition: Line.cpp:68
Definition: Bin.h:20