LARS
LARS (Light Augmented Reality System) is an open-source framework for light-based interaction and real-time tracking in multi-robot experiments. Inspired by ARK, LARS extends the augmented reality paradigm to robotic collectives by projecting dynamic visual cues and environments onto the arena, enabling new experimental possibilities for collective robotics research, education, and outreach. LARS features integrated tracking, light projection, and modular experiment control with a user-friendly Qt GUI.
Loading...
Searching...
No Matches
composite_region_2d.h
Go to the documentation of this file.
1// -*-c++-*-
2
7
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 <geom/region_2d.h>
36
37#include <boost/shared_ptr.hpp>
38#include <vector>
39
40namespace rcsc {
41
47 : public Region2D {
48private:
50 std::vector< boost::shared_ptr< const Region2D > > M_regions;
51public:
52
58
65 const Region2D * r2 )
66 {
67 M_regions.push_back( boost::shared_ptr< const Region2D >( r1 ) );
68 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
69 }
70
78 const Region2D * r2,
79 const Region2D * r3 )
80 {
81 M_regions.push_back( boost::shared_ptr< const Region2D >( r1 ) );
82 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
83 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
99 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
100 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
101 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
119 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
120 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
121 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
122 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
142 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
143 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
144 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
145 M_regions.push_back( boost::shared_ptr< const Region2D >( r5 ) );
146 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
168 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
169 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
170 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
171 M_regions.push_back( boost::shared_ptr< const Region2D >( r5 ) );
172 M_regions.push_back( boost::shared_ptr< const Region2D >( r6 ) );
173 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
197 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
198 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
199 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
200 M_regions.push_back( boost::shared_ptr< const Region2D >( r5 ) );
201 M_regions.push_back( boost::shared_ptr< const Region2D >( r6 ) );
202 M_regions.push_back( boost::shared_ptr< const Region2D >( r7 ) );
203 M_regions.push_back( boost::shared_ptr< const Region2D >( r8 ) );
204 }
205
212 {
213 M_regions.push_back( boost::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< boost::shared_ptr< const Region2D > > M_regions;
243public:
244
251 const Region2D * r2 )
252 {
253 M_regions.push_back( boost::shared_ptr< const Region2D >( r1 ) );
254 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
255 }
256
264 const Region2D * r2,
265 const Region2D * r3 )
266 {
267 M_regions.push_back( boost::shared_ptr< const Region2D >( r1 ) );
268 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
269 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
285 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
286 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
287 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
305 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
306 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
307 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
308 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
328 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
329 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
330 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
331 M_regions.push_back( boost::shared_ptr< const Region2D >( r5 ) );
332 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
354 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
355 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
356 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
357 M_regions.push_back( boost::shared_ptr< const Region2D >( r5 ) );
358 M_regions.push_back( boost::shared_ptr< const Region2D >( r6 ) );
359 M_regions.push_back( boost::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( boost::shared_ptr< const Region2D >( r1 ) );
383 M_regions.push_back( boost::shared_ptr< const Region2D >( r2 ) );
384 M_regions.push_back( boost::shared_ptr< const Region2D >( r3 ) );
385 M_regions.push_back( boost::shared_ptr< const Region2D >( r4 ) );
386 M_regions.push_back( boost::shared_ptr< const Region2D >( r5 ) );
387 M_regions.push_back( boost::shared_ptr< const Region2D >( r6 ) );
388 M_regions.push_back( boost::shared_ptr< const Region2D >( r7 ) );
389 M_regions.push_back( boost::shared_ptr< const Region2D >( r8 ) );
390 }
391
398 {
399 M_regions.push_back( boost::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
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
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 bool contains(const Vector2D &point) const
check if union region contains 'point'.
Definition composite_region_2d.cpp:89
virtual double area() const
not implemented yet.
Definition composite_region_2d.cpp:79
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
Region2D()
accessible only from derived classes
Definition region_2d.h:49
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 bool contains(const Vector2D &point) const
check if union region contains 'point'.
Definition composite_region_2d.cpp:57
virtual double area() const
not implemented yet.
Definition composite_region_2d.cpp:47
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:47
abstract 2D region class Header File.