LIBRCSC Docs
Documentation for HELIOS's BASE LIBRCSC library for RoboCup 2D Simulation League.
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
composite_region_2d.h
Go to the documentation of this file.
1// -*-c++-*-
2
8/*
9 *Copyright:
10
11 Copyright (C) Hidehisa Akiyama
12
13 This code is free software; you can redistribute it and/or
14 modify it under the terms of the GNU Lesser General Public
15 License as published by the Free Software Foundation; either
16 version 3 of the License, or (at your option) any later version.
17
18 This library is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 Lesser General Public License for more details.
22
23 You should have received a copy of the GNU Lesser General Public
24 License along with this library; if not, write to the Free Software
25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26
27 *EndCopyright:
28 */
29
31
32#ifndef RCSC_GEOM_COMPOSITE_REGION2D_H
33#define RCSC_GEOM_COMPOSITE_REGION2D_H
34
35#include <rcsc/geom/region_2d.h>
36
37#include <memory>
38#include <vector>
39
40namespace rcsc {
41
47 : public Region2D {
48private:
50 std::vector< std::shared_ptr< const Region2D > > M_regions;
51public:
52
57 { }
58
65 const Region2D * r2 )
66 {
67 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
68 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
69 }
70
78 const Region2D * r2,
79 const Region2D * r3 )
80 {
81 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
82 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
83 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
84 }
85
94 const Region2D * r2,
95 const Region2D * r3,
96 const Region2D * r4 )
97 {
98 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
99 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
100 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
101 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
102 }
103
113 const Region2D * r2,
114 const Region2D * r3,
115 const Region2D * r4,
116 const Region2D * r5 )
117 {
118 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
119 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
120 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
121 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
122 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
123 }
124
135 const Region2D * r2,
136 const Region2D * r3,
137 const Region2D * r4,
138 const Region2D * r5,
139 const Region2D * r6 )
140 {
141 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
142 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
143 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
144 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
145 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
146 M_regions.push_back( std::shared_ptr< const Region2D >( r6 ) );
147 }
148
160 const Region2D * r2,
161 const Region2D * r3,
162 const Region2D * r4,
163 const Region2D * r5,
164 const Region2D * r6,
165 const Region2D * r7 )
166 {
167 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
168 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
169 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
170 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
171 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
172 M_regions.push_back( std::shared_ptr< const Region2D >( r6 ) );
173 M_regions.push_back( std::shared_ptr< const Region2D >( r7 ) );
174 }
175
188 const Region2D * r2,
189 const Region2D * r3,
190 const Region2D * r4,
191 const Region2D * r5,
192 const Region2D * r6,
193 const Region2D * r7,
194 const Region2D * r8 )
195 {
196 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
197 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
198 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
199 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
200 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
201 M_regions.push_back( std::shared_ptr< const Region2D >( r6 ) );
202 M_regions.push_back( std::shared_ptr< const Region2D >( r7 ) );
203 M_regions.push_back( std::shared_ptr< const Region2D >( r8 ) );
204 }
205
212 {
213 M_regions.push_back( std::shared_ptr< const Region2D >( r ) );
214 return *this;
215 }
216
221 virtual
222 double area() const;
223
229 virtual
230 bool contains( const Vector2D & point ) const;
231};
232
233
239 : public Region2D {
240private:
242 std::vector< std::shared_ptr< const Region2D > > M_regions;
243public:
244
251 const Region2D * r2 )
252 {
253 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
254 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
255 }
256
264 const Region2D * r2,
265 const Region2D * r3 )
266 {
267 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
268 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
269 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
270 }
271
280 const Region2D * r2,
281 const Region2D * r3,
282 const Region2D * r4 )
283 {
284 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
285 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
286 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
287 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
288 }
289
299 const Region2D * r2,
300 const Region2D * r3,
301 const Region2D * r4,
302 const Region2D * r5 )
303 {
304 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
305 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
306 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
307 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
308 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
309 }
310
321 const Region2D * r2,
322 const Region2D * r3,
323 const Region2D * r4,
324 const Region2D * r5,
325 const Region2D * r6 )
326 {
327 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
328 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
329 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
330 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
331 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
332 M_regions.push_back( std::shared_ptr< const Region2D >( r6 ) );
333 }
334
346 const Region2D * r2,
347 const Region2D * r3,
348 const Region2D * r4,
349 const Region2D * r5,
350 const Region2D * r6,
351 const Region2D * r7 )
352 {
353 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
354 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
355 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
356 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
357 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
358 M_regions.push_back( std::shared_ptr< const Region2D >( r6 ) );
359 M_regions.push_back( std::shared_ptr< const Region2D >( r7 ) );
360 }
361
374 const Region2D * r2,
375 const Region2D * r3,
376 const Region2D * r4,
377 const Region2D * r5,
378 const Region2D * r6,
379 const Region2D * r7,
380 const Region2D * r8 )
381 {
382 M_regions.push_back( std::shared_ptr< const Region2D >( r1 ) );
383 M_regions.push_back( std::shared_ptr< const Region2D >( r2 ) );
384 M_regions.push_back( std::shared_ptr< const Region2D >( r3 ) );
385 M_regions.push_back( std::shared_ptr< const Region2D >( r4 ) );
386 M_regions.push_back( std::shared_ptr< const Region2D >( r5 ) );
387 M_regions.push_back( std::shared_ptr< const Region2D >( r6 ) );
388 M_regions.push_back( std::shared_ptr< const Region2D >( r7 ) );
389 M_regions.push_back( std::shared_ptr< const Region2D >( r8 ) );
390 }
391
398 {
399 M_regions.push_back( std::shared_ptr< const Region2D >( r ) );
400 return *this;
401 }
402
407 virtual
408 double area() const;
409
410
416 virtual
417 bool contains( const Vector2D & point ) const;
418
419};
420
421}
422
423#endif
inersection set of 2D regions
Definition: composite_region_2d.h:239
IntersectedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5, const Region2D *r6, const Region2D *r7)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:345
IntersectedRegion2D & add(const Region2D *r)
add new region.
Definition: composite_region_2d.h:397
IntersectedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:298
virtual bool contains(const Vector2D &point) const
check if union region contains 'point'.
IntersectedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:263
IntersectedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:279
virtual double area() const
not implemented yet.
IntersectedRegion2D(const Region2D *r1, const Region2D *r2)
construct with 2 regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:250
IntersectedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5, const Region2D *r6)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:320
IntersectedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5, const Region2D *r6, const Region2D *r7, const Region2D *r8)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:373
abstract 2D region class
Definition: region_2d.h:43
union set of 2D regions
Definition: composite_region_2d.h:47
UnitedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5, const Region2D *r6, const Region2D *r7)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:159
UnitedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5, const Region2D *r6)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:134
virtual double area() const
not implemented yet.
virtual bool contains(const Vector2D &point) const
check if union region contains 'point'.
UnitedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:77
UnitedRegion2D(const Region2D *r1, const Region2D *r2)
construct with 2 regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:64
UnitedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:112
UnitedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4, const Region2D *r5, const Region2D *r6, const Region2D *r7, const Region2D *r8)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:187
UnitedRegion2D()
create empty region set
Definition: composite_region_2d.h:56
UnitedRegion2D(const Region2D *r1, const Region2D *r2, const Region2D *r3, const Region2D *r4)
construct with regions. all arguments must be a dynamically allocated object.
Definition: composite_region_2d.h:93
UnitedRegion2D & add(const Region2D *r)
add new region.
Definition: composite_region_2d.h:211
2D point vector class
Definition: vector_2d.h:46
abstract 2D region class Header File.