www.cemf.ir
plane.hpp
Go to the documentation of this file.
1 /*------------------------------- phasicFlow ---------------------------------
2  O C enter of
3  O O E ngineering and
4  O O M ultiscale modeling of
5  OOOOOOO F luid flow
6 ------------------------------------------------------------------------------
7  Copyright (C): www.cemf.ir
8  email: hamid.r.norouzi AT gmail.com
9 ------------------------------------------------------------------------------
10 Licence:
11  This file is part of phasicFlow code. It is a free software for simulating
12  granular and multiphase flows. You can redistribute it and/or modify it under
13  the terms of GNU General Public License v3 or any other later versions.
14 
15  phasicFlow is distributed to help others in their research in the field of
16  granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
17  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 
19 -----------------------------------------------------------------------------*/
20 
21 #ifndef __plane_hpp__
22 #define __plane_hpp__
23 
24 #include "infinitePlane.hpp"
25 #include "line.hpp"
26 
27 namespace pFlow
28 {
29 
30 class plane
31 :
32  public infinitePlane
33 {
34 private:
35 
38 
41 
44 
47 
48 public:
49 
51  plane(){}
52 
53  plane(
54  const realx3& p1,
55  const realx3& p2,
56  const realx3& p3,
57  const realx3& p4);
58 
60  plane(const plane&) = default;
61 
63  plane(plane&&) = default;
64 
66  plane& operator = (const plane&) = default;
67 
69  plane& operator =( plane&&)=default;
70 
72  ~plane()=default;
73 
75  const realx3& p1()const
76  {
77  return p1_;
78  }
79 
81  const realx3& p2()const
82  {
83  return p2_;
84  }
85 
87  const realx3& p3()const
88  {
89  return p3_;
90  }
91 
93  const realx3& p4()const
94  {
95  return p4_;
96  }
97 
99  line line1()const
100  {
101  return line(p1_,p2_);
102  }
103 
105  line line2()const
106  {
107  return line(p2_,p3_);
108  }
109 
111  line line3()const
112  {
113  return line(p3_,p4_);
114  }
115 
117  line line4()const
118  {
119  return line(p4_,p1_);
120  }
121 
122  // return the parallel plane to this plane
123  plane parallelPlane(real distance)const;
124 
126  {
127  return infinitePlane(normal(), d());
128  }
129 
130 
131  static
132  bool validPlane4(
133  const realx3& p1,
134  const realx3& p2,
135  const realx3& p3,
136  const realx3& p4);
137 
138 };
139 
140 }
141 
142 #endif //__plane_hpp__
pFlow::plane::p4_
realx3 p4_
Fourth point.
Definition: plane.hpp:46
pFlow::infinitePlane::normal
const INLINE_FUNCTION_HD auto & normal() const
Definition: infinitePlane.hpp:155
pFlow::real
float real
Definition: builtinTypes.hpp:45
pFlow::plane
Definition: plane.hpp:30
pFlow::line
Definition: line.hpp:36
pFlow::plane::plane
INLINE_FUNCTION_HD plane()
Definition: plane.hpp:51
pFlow::plane::line2
INLINE_FUNCTION_HD line line2() const
Definition: plane.hpp:105
pFlow::infinitePlane
Definition: infinitePlane.hpp:32
pFlow::plane::line4
INLINE_FUNCTION_HD line line4() const
Definition: plane.hpp:117
pFlow::plane::line3
INLINE_FUNCTION_HD line line3() const
Definition: plane.hpp:111
pFlow::plane::p3_
realx3 p3_
Third point.
Definition: plane.hpp:43
pFlow::plane::p1_
realx3 p1_
First point.
Definition: plane.hpp:37
pFlow::plane::validPlane4
static bool validPlane4(const realx3 &p1, const realx3 &p2, const realx3 &p3, const realx3 &p4)
Definition: plane.cpp:57
pFlow::infinitePlane::infinitePlane
INLINE_FUNCTION_HD infinitePlane()
Default.
Definition: infinitePlane.hpp:51
pFlow
Definition: demGeometry.hpp:27
pFlow::plane::p3
const INLINE_FUNCTION_HD realx3 & p3() const
Definition: plane.hpp:87
pFlow::plane::parallelPlane
plane parallelPlane(real distance) const
Definition: plane.cpp:47
pFlow::plane::~plane
INLINE_FUNCTION_HD ~plane()=default
pFlow::plane::p2
const INLINE_FUNCTION_HD realx3 & p2() const
Definition: plane.hpp:81
pFlow::plane::operator=
INLINE_FUNCTION_HD plane & operator=(const plane &)=default
pFlow::plane::line1
INLINE_FUNCTION_HD line line1() const
Definition: plane.hpp:99
infinitePlane.hpp
pFlow::infinitePlane::d
const INLINE_FUNCTION_HD auto & d() const
Definition: infinitePlane.hpp:161
pFlow::plane::infPlane
infinitePlane infPlane() const
Definition: plane.hpp:125
pFlow::plane::p2_
realx3 p2_
Second point.
Definition: plane.hpp:40
pFlow::plane::p1
const INLINE_FUNCTION_HD realx3 & p1() const
Definition: plane.hpp:75
INLINE_FUNCTION_HD
#define INLINE_FUNCTION_HD
Definition: pFlowMacros.hpp:55
pFlow::triple< real >
line.hpp
pFlow::plane::p4
const INLINE_FUNCTION_HD realx3 & p4() const
Definition: plane.hpp:93