OpenLexocad  27.0
Constraint.h
Go to the documentation of this file.
1 #pragma once
2 #pragma warning(disable : 4251)
3 
5 #include <Geom/Dir.h>
6 #include <Geom/Lin.h>
7 #include <Geom/Lin2d.h>
8 #include <Geom/Pln.h>
9 #include <Geom/Pnt.h>
10 #include <Geom/Pnt2d.h>
11 #include <Geom/Trsf.h>
12 #include <Geom/Trsf2d.h>
13 #include <Geom/Vec.h>
14 #include <Geom/geom_defines.h>
15 
16 #include <list>
17 
18 
19 
20 namespace Geom
21 {
23 {
24 public:
27 
28  void setPoint(const Geom::Pnt& pnt);
29  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
30  const Geom::Pnt& getSolution() const;
31  bool hasSolution() const;
32 
33  const std::list<Geom::AbstractPointConstraint*>& getConstraints() const;
34  void addPointConstraint(Geom::AbstractPointConstraint* constraint);
35  void removeAllConstraints(bool deleting = true);
36  void removePointConstraint(Geom::AbstractPointConstraint* constraint, bool deleting = true);
37 
38 private:
39  std::list<Geom::AbstractPointConstraint*> _constraints;
40  Geom::Pnt _pnt;
41  bool _hasSolution;
42 };
43 
45 {
46 public:
47  PointOnLineConstraint(const Geom::Lin& line);
48  ~PointOnLineConstraint(void);
49 
51  void setPoint(const Geom::Pnt& pnt);
52  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
53  void setTransformation(const Geom::Trsf& t) { _trsf = t; }
54  const Geom::Pnt& getConstraintPoint() const { return _pnt; }
55  const Geom::Lin& getLine() const;
56  Geom::Lin getTransformedLine() const;
57  bool hasPoint() const { return true; };
59 
60 private:
62  Geom::Pnt _pnt;
63  Geom::Trsf _trsf;
64  Geom::Lin _line;
65 };
66 
68 {
69 public:
70  PointOnTwoLinesConstraint(const Geom::Lin& line1, const Geom::Lin& line2);
72 
74  void setPoint(const Geom::Pnt& pnt);
75  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
76  void setTransformation(const Geom::Trsf& t) { _trsf = t; }
77  const Geom::Pnt& getConstraintPoint() const { return _pnt; }
78  bool hasPoint() const { return true; };
80 
81 
82 private:
84  Geom::Pnt _pnt;
85  Geom::Trsf _trsf;
86  Geom::Lin _line1, _line2;
87 };
88 
90 {
91 public:
92  PointOnPlaneConstraint(const Geom::Pln& plane);
94 
96  void setPoint(const Geom::Pnt& pnt);
97  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
98  void setTransformation(const Geom::Trsf& t) { _trsf = t; }
99  const Geom::Pnt& getConstraintPoint() const { return _pnt; }
100  const Geom::Pln& getPlane() const;
101  Geom::Pln getTransformedPlane() const;
102  bool hasPoint() const { return true; };
104 
105 private:
107  Geom::Pnt _pnt;
108  Geom::Trsf _trsf;
109  Geom::Pln _plane;
110 };
111 
113 {
114 public:
115  PointOnRadius(Geom::Pnt firstPoint, Geom::Vec tangent, double radius) : _firstPnt(firstPoint), _tangent(tangent), _radius(radius){};
116  ~PointOnRadius(void);
117 
119  void setPoint(const Geom::Pnt& pnt);
120  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
121  void setTransformation(const Geom::Trsf& t) { _trsf = t; }
122  const Geom::Pnt& getConstraintPoint() const { return _pnt; }
123 
124 
125  bool hasPoint() const { return true; };
127 
128 private:
129  PointOnRadius() {}
130  Geom::Pnt _pnt;
131  Geom::Trsf _trsf;
132  Geom::Pnt _firstPnt;
133  Geom::Vec _tangent;
134  double _radius;
135 };
136 
138 {
139 public:
140  MidpointConstraint(const Geom::Pnt& secondPnt);
141  ~MidpointConstraint(void);
142 
144  void setPoint(const Geom::Pnt& firstPnt);
145  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
146  void setTransformation(const Geom::Trsf& t) { _trsf = t; }
147  const Geom::Pnt& getConstraintPoint() const { return _pnt; }
148  const Geom::Pnt& getSecondPoint() const;
149  bool hasPoint() const { return true; };
151 
152 private:
153  MidpointConstraint() {}
154  Geom::Pnt _pnt;
155  Geom::Trsf _trsf;
156  Geom::Pnt _secondPnt;
157 };
158 
159 // Returns the static point, setPoint doesn't modify the point.
160 // This is used to force the snapping to fixed user defined point
162 {
163 public:
164  StaticPointConstraint(const Geom::Pnt& staticPnt);
165  ~StaticPointConstraint(void);
166 
168  void setPoint(const Geom::Pnt& pnt);
169  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
170  void setTransformation(const Geom::Trsf& t) { _trsf = t; }
171  const Geom::Pnt& getConstraintPoint() const { return _pnt; }
172  const Geom::Pnt& getStaticPoint() const;
173  bool hasPoint() const { return true; };
175 
176 private:
178  Geom::Pnt _staticPnt;
179  Geom::Pnt _pnt;
180  Geom::Trsf _trsf;
181 };
182 
183 
184 
185 // 2d
186 
188 {
189 public:
192 
193  void setPoint2d(const Geom::Pnt2d& pnt);
194  const Geom::Pnt2d& getSolution() const;
195  bool hasSolution() const { return true; };
196 
197  const std::list<Geom::AbstractPoint2dConstraint*>& getConstraints() const;
198  void addPoint2dConstraint(Geom::AbstractPoint2dConstraint* constraint);
199  void removeAllConstraints(bool deleting = true);
200 
201 private:
202  std::list<Geom::AbstractPoint2dConstraint*> _constraints;
203  Geom::Pnt2d _pnt;
204 };
205 
207 {
208 public:
211 
213  void setPoint2d(const Geom::Pnt2d& pnt);
214  void setTransformation(const Geom::Trsf2d& t) { _trsf = t; }
215  const Geom::Pnt2d& getConstraintPoint2d() const { return _pnt; }
216  const Geom::Lin2d& getLine2d() const;
217  Geom::Lin2d getTransformedLine2d() const;
218  bool hasPoint() const { return true; };
220 
221 private:
223  Geom::Pnt2d _pnt;
224  Geom::Trsf2d _trsf;
225  Geom::Lin2d _line;
226 };
227 
229 {
230 public:
231  Midpoint2dConstraint(const Geom::Pnt2d& secondPnt);
232  ~Midpoint2dConstraint(void);
233 
235  void setPoint2d(const Geom::Pnt2d& firstPnt);
236  void setTransformation(const Geom::Trsf2d& t) { _trsf = t; }
237  const Geom::Pnt2d& getConstraintPoint2d() const { return _pnt; }
238  const Geom::Pnt2d& getSecondPoint2d() const;
239  bool hasPoint() const { return true; };
241 
242 private:
244  Geom::Pnt2d _pnt;
245  Geom::Trsf2d _trsf;
246  Geom::Pnt2d _secondPnt;
247 };
248 
249 // Returns the static point, setPoint doesn't modify the point.
250 // This is used to force the snapping to fixed user defined point
252 {
253 public:
254  StaticPoint2dConstraint(const Geom::Pnt2d& staticPnt);
256 
258  void setPoint2d(const Geom::Pnt2d& pnt);
259  void setTransformation(const Geom::Trsf2d& t) { _trsf = t; }
260  const Geom::Pnt2d& getConstraintPoint2d() const { return _pnt; }
261  const Geom::Pnt2d& getStaticPoint2d() const;
262  bool hasPoint() const { return true; };
264 
265 private:
267  Geom::Pnt2d _staticPnt;
268  Geom::Pnt2d _pnt;
269  Geom::Trsf2d _trsf;
270 };
271 
272 // This Class checks that the Point is located in a Rectangle.
273 // There is no Projection or something, the Point must be in Rectangle
275 {
276 public:
277  PointMustBeInRectangleConstraint(const Geom::Pln& plane, double u, double v);
278  virtual ~PointMustBeInRectangleConstraint(void);
279 
281  void setPoint(const Geom::Pnt& pnt);
282  void setPointAndDir(const Geom::Pnt& pnt, const Geom::Dir& dir);
283  void setTransformation(const Geom::Trsf& t) { _trsf = t; }
284  const Geom::Pnt& getConstraintPoint() const;
285  bool hasPoint() const;
286  void setValues(const Geom::Pln& plane, double u, double v);
288 
289 private:
291  Geom::Pnt _pnt;
292  Geom::Trsf _trsf;
293  Geom::Pln _plane;
294  double _u, _v;
295 };
296 
297 
298 } // namespace Geom
Geom::AbstractPoint2dConstraint * clone()
Definition: Constraint.h:240
Definition: Rotation.h:5
Definition: Lin2d.h:51
Definition: Constraint.h:187
void setTransformation(const Geom::Trsf &t)
Definition: Constraint.h:98
const Geom::Pnt2d & getConstraintPoint2d() const
Returns the point based on the applied constraint.
Definition: Constraint.h:215
Geom::AbstractPointConstraint * clone()
Definition: Constraint.h:150
Definition: Pln.h:59
Geom::AbstractPointConstraint * clone()
Definition: Constraint.h:287
Defines a non-persistent 3D Cartesian point.
Definition: Pnt.h:42
bool hasPoint() const
Definition: Constraint.h:57
const Geom::Pnt & getConstraintPoint() const
Returns the point based on the applied constraint.
Definition: Constraint.h:147
void setTransformation(const Geom::Trsf &t)
Definition: Constraint.h:76
const Geom::Pnt & getConstraintPoint() const
Returns the point based on the applied constraint.
Definition: Constraint.h:99
void setTransformation(const Geom::Trsf &t)
Definition: Constraint.h:283
Geom::AbstractPointConstraint * clone()
Definition: Constraint.h:79
bool hasPoint() const
Definition: Constraint.h:102
const Geom::Pnt2d & getConstraintPoint2d() const
Returns the point based on the applied constraint.
Definition: Constraint.h:237
Geom::AbstractPointConstraint * clone()
Definition: Constraint.h:174
const Geom::Pnt & getConstraintPoint() const
Returns the point based on the applied constraint.
Definition: Constraint.h:122
void setTransformation(const Geom::Trsf2d &t)
Definition: Constraint.h:236
#define GEOM_EXPORT
Definition: geom_defines.h:8
Definition: Constraint.h:228
Geom::AbstractPointConstraint * clone()
Definition: Constraint.h:126
const Geom::Pnt2d & getConstraintPoint2d() const
Returns the point based on the applied constraint.
Definition: Constraint.h:260
bool hasPoint() const
Definition: Constraint.h:218
void setTransformation(const Geom::Trsf2d &t)
Definition: Constraint.h:259
Definition: Lin.h:50
Definition: Constraint.h:89
Definition: Trsf.h:58
Definition: Constraint.h:251
Definition: Dir.h:46
void setTransformation(const Geom::Trsf &t)
Definition: Constraint.h:146
Definition: AbstractConstraint.h:25
Geom::AbstractPointConstraint * clone()
Definition: Constraint.h:103
Definition: Constraint.h:274
bool hasPoint() const
Definition: Constraint.h:125
bool hasPoint() const
Definition: Constraint.h:173
Base class of all point constraints.
Definition: AbstractConstraint.h:57
Definition: Constraint.h:112
Definition: Constraint.h:161
Definition: Constraint.h:67
Definition: Constraint.h:137
Geom::AbstractPoint2dConstraint * clone()
Definition: Constraint.h:219
bool hasPoint() const
Definition: Constraint.h:262
bool hasSolution() const
Definition: Constraint.h:195
Definition: Trsf2d.h:46
const Geom::Pnt & getConstraintPoint() const
Returns the point based on the applied constraint.
Definition: Constraint.h:54
Defines a non-persistent vector in 3D space.
Definition: Vec.h:45
Definition: Constraint.h:206
bool hasPoint() const
Definition: Constraint.h:149
PointOnRadius(Geom::Pnt firstPoint, Geom::Vec tangent, double radius)
Definition: Constraint.h:115
Base class of all 2d point constraints.
Definition: AbstractConstraint.h:73
void setTransformation(const Geom::Trsf &t)
Definition: Constraint.h:170
Definition: Constraint.h:22
Geom::AbstractPointConstraint * clone()
Definition: Constraint.h:58
void setTransformation(const Geom::Trsf &t)
Definition: Constraint.h:121
const Geom::Pnt & getConstraintPoint() const
Returns the point based on the applied constraint.
Definition: Constraint.h:171
Definition: Constraint.h:44
const Geom::Pnt & getConstraintPoint() const
Returns the point based on the applied constraint.
Definition: Constraint.h:77
Defines a non-persistent 2D cartesian point.
Definition: Pnt2d.h:33
bool hasPoint() const
Definition: Constraint.h:239
void setTransformation(const Geom::Trsf2d &t)
Definition: Constraint.h:214
void setTransformation(const Geom::Trsf &t)
Definition: Constraint.h:53
Geom::AbstractPoint2dConstraint * clone()
Definition: Constraint.h:263
Definition: AbstractConstraint.h:41
bool hasPoint() const
Definition: Constraint.h:78