SLIP  1.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
neighbors.hpp
Go to the documentation of this file.
1 /*
2  * Copyright(c):
3  * Signal Image and Communications (SIC) Department
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * - University of Poitiers, France http://www.univ-poitiers.fr
6  * - XLIM Institute UMR CNRS 7252 http://www.xlim.fr/
7  *
8  * and
9  *
10  * D2 Fluid, Thermic and Combustion
11  * - University of Poitiers, France http://www.univ-poitiers.fr
12  * - PPRIME Institute - UPR CNRS 3346 http://www.pprime.fr
13  * - ISAE-ENSMA http://www.ensma.fr
14  *
15  * Contributor(s):
16  * The SLIP team,
17  * Benoit Tremblais <tremblais_AT_sic.univ-poitiers.fr>,
18  * Laurent David <laurent.david_AT_lea.univ-poitiers.fr>,
19  * Ludovic Chatellier <ludovic.chatellier_AT_univ-poitiers.fr>,
20  * Lionel Thomas <lionel.thomas_AT_univ-poitiers.fr>,
21  * Denis Arrivault <arrivault_AT_sic.univ-poitiers.fr>,
22  * Julien Dombre <julien.dombre_AT_univ-poitiers.fr>.
23  *
24  * Description:
25  * The Simple Library of Image Processing (SLIP) is a new image processing
26  * library. It is written in the C++ language following as much as possible
27  * the ISO/ANSI C++ standard. It is consequently compatible with any system
28  * satisfying the ANSI C++ complience. It works on different Unix , Linux ,
29  * Mircrosoft Windows and Mac OS X plateforms. SLIP is a research library that
30  * was created by the Signal, Image and Communications (SIC) departement of
31  * the XLIM, UMR 7252 CNRS Institute in collaboration with the Fluids, Thermic
32  * and Combustion departement of the P', UPR 3346 CNRS Institute of the
33  * University of Poitiers.
34  *
35  * The SLIP Library source code has been registered to the APP (French Agency
36  * for the Protection of Programs) by the University of Poitiers and CNRS,
37  * under registration number IDDN.FR.001.300034.000.S.P.2010.000.21000.
38 
39  * http://www.sic.sp2mi.univ-poitiers.fr/slip/
40  *
41  * This software is governed by the CeCILL-C license under French law and
42  * abiding by the rules of distribution of free software. You can use,
43  * modify and/ or redistribute the software under the terms of the CeCILL-C
44  * license as circulated by CEA, CNRS and INRIA at the following URL
45  * http://www.cecill.info.
46  * As a counterpart to the access to the source code and rights to copy,
47  * modify and redistribute granted by the license, users are provided only
48  * with a limited warranty and the software's author, the holder of the
49  * economic rights, and the successive licensors have only limited
50  * liability.
51  *
52  * In this respect, the user's attention is drawn to the risks associated
53  * with loading, using, modifying and/or developing or reproducing the
54  * software by the user in light of its specific status of free software,
55  * that may mean that it is complicated to manipulate, and that also
56  * therefore means that it is reserved for developers and experienced
57  * professionals having in-depth computer knowledge. Users are therefore
58  * encouraged to load and test the software's suitability as regards their
59  * requirements in conditions enabling the security of their systems and/or
60  * data to be ensured and, more generally, to use and operate it in the
61  * same conditions as regards security.
62  *
63  * The fact that you are presently reading this means that you have had
64  * knowledge of the CeCILL-C license and that you accept its terms.
65  */
66 
67 
68 
75 #ifndef SLIP_NEIGHBORS_HPP
76 #define SLIP_NEIGHBORS_HPP
77 
78 #include "DPoint1d.hpp"
79 #include "DPoint2d.hpp"
80 #include "DPoint3d.hpp"
81 #include "DPoint4d.hpp"
82 #include "Block.hpp"
83 
84 namespace slip
85 {
120  {
130  };
131 
132 
137  static slip::block<int,2> n_2c = {{1,-1}};
138 
139  static slip::block<int,1> prev_2c = {{-1}};
140 
141  static slip::block<int,1> next_2c = {{1}};
142 
143 
144 
159 static slip::block<slip::DPoint2d<int>,4> n_4c =
160  {{slip::DPoint2d<int>(0,1),
161  slip::DPoint2d<int>(-1,0),
162  slip::DPoint2d<int>(0,-1),
163  slip::DPoint2d<int>(1,0)}};
164 
173 static slip::block<slip::DPoint2d<int>,8> n_8c =
174  {{slip::DPoint2d<int>(0,1),
175  slip::DPoint2d<int>(-1,1),
176  slip::DPoint2d<int>(-1,0),
177  slip::DPoint2d<int>(-1,-1),
178  slip::DPoint2d<int>(0,-1),
179  slip::DPoint2d<int>(1,-1),
180  slip::DPoint2d<int>(1,0),
181  slip::DPoint2d<int>(1,1)}};
182 
190 static slip::block<slip::DPoint2d<int>,6> n_6co =
191  {{slip::DPoint2d<int>(0,1),
192  slip::DPoint2d<int>(-1,0),
193  slip::DPoint2d<int>(-1,-1),
194  slip::DPoint2d<int>(0,-1),
195  slip::DPoint2d<int>(1,-1),
196  slip::DPoint2d<int>(1,0)}};
197 
198 
205  static slip::block<slip::DPoint2d<int>,6> n_6ce =
206  {{slip::DPoint2d<int>(0,1),
207  slip::DPoint2d<int>(-1,1),
208  slip::DPoint2d<int>(-1,0),
209  slip::DPoint2d<int>(0,-1),
210  slip::DPoint2d<int>(1,0),
211  slip::DPoint2d<int>(1,1)}};
212 
213 
220 static slip::block<slip::DPoint2d<int>,2> prev_4c =
221  {{slip::DPoint2d<int>(-1,0),
222  slip::DPoint2d<int>(0,-1)}};
223 
229 static slip::block<slip::DPoint2d<int>,2> next_4c =
230  {{slip::DPoint2d<int>(0,1),
231  slip::DPoint2d<int>(1,0)}};
232 
238 static slip::block<slip::DPoint2d<int>,4> prev_8c =
239  {{slip::DPoint2d<int>(-1,1),
240  slip::DPoint2d<int>(-1,0),
241  slip::DPoint2d<int>(-1,-1),
242  slip::DPoint2d<int>(0,-1)}};
243 
249  static slip::block<slip::DPoint2d<int>,4> next_8c =
250  {{slip::DPoint2d<int>(0,1),
251  slip::DPoint2d<int>(1,-1),
252  slip::DPoint2d<int>(1,0),
253  slip::DPoint2d<int>(1,1)}};
254 
260  static slip::block<slip::DPoint2d<int>,3> prev_6co =
261  {{slip::DPoint2d<int>(-1,0),
262  slip::DPoint2d<int>(-1,-1),
263  slip::DPoint2d<int>(0,-1)}};
264 
270  static slip::block<slip::DPoint2d<int>,3> next_6co =
271  {{slip::DPoint2d<int>(1,-1),
272  slip::DPoint2d<int>(1,0),
273  slip::DPoint2d<int>(0,1)}};
274 
280  static slip::block<slip::DPoint2d<int>,3> prev_6ce =
281  {{slip::DPoint2d<int>(-1,1),
282  slip::DPoint2d<int>(-1,0),
283  slip::DPoint2d<int>(0,-1)}};
284 
291  static slip::block<slip::DPoint2d<int>,3> next_6ce =
292  {{slip::DPoint2d<int>(1,0),
293  slip::DPoint2d<int>(1,1),
294  slip::DPoint2d<int>(0,1)}};
295 
309  static slip::block<slip::DPoint3d<int>,6> n_6c =
310  {{slip::DPoint3d<int>(-1,0,0),
311  slip::DPoint3d<int>(0,0,1),
312  slip::DPoint3d<int>(0,-1,0),
313  slip::DPoint3d<int>(0,0,-1),
314  slip::DPoint3d<int>(0,1,0),
315  slip::DPoint3d<int>(1,0,0)
316  }};
320  static slip::block<slip::DPoint3d<int>,3> prev_6c =
321  {{slip::DPoint3d<int>(-1,0,0),
322  slip::DPoint3d<int>(0,-1,0),
323  slip::DPoint3d<int>(0,0,-1)
324  }};
328  static slip::block<slip::DPoint3d<int>,3> next_6c =
329  {{slip::DPoint3d<int>(0,0,1),
330  slip::DPoint3d<int>(0,1,0),
331  slip::DPoint3d<int>(1,0,0)
332  }};
333 
340  static slip::block<slip::DPoint3d<int>,18> n_18c =
341  {{slip::DPoint3d<int>(-1,0,0),
342  slip::DPoint3d<int>(-1,0,1),
343  slip::DPoint3d<int>(-1,-1,0),
344  slip::DPoint3d<int>(-1,0,-1),
345  slip::DPoint3d<int>(-1,1,0),
346  slip::DPoint3d<int>(0,0,1),
347  slip::DPoint3d<int>(0,-1,1),
348  slip::DPoint3d<int>(0,-1,0),
349  slip::DPoint3d<int>(0,-1,-1),
350  slip::DPoint3d<int>(1,0,0),
351  slip::DPoint3d<int>(1,0,-1),
352  slip::DPoint3d<int>(1,1,0),
353  slip::DPoint3d<int>(1,0,1),
354  slip::DPoint3d<int>(1,-1,0),
355  slip::DPoint3d<int>(0,0,-1),
356  slip::DPoint3d<int>(0,1,-1),
357  slip::DPoint3d<int>(0,1,0),
358  slip::DPoint3d<int>(0,1,1)
359  }};
366  static slip::block<slip::DPoint3d<int>,26> n_26c =
367  {{slip::DPoint3d<int>(-1,0,0),
368  slip::DPoint3d<int>(-1,0,1),
369  slip::DPoint3d<int>(-1,-1,1),
370  slip::DPoint3d<int>(-1,-1,0),
371  slip::DPoint3d<int>(-1,-1,-1),
372  slip::DPoint3d<int>(-1,0,-1),
373  slip::DPoint3d<int>(-1,1,-1),
374  slip::DPoint3d<int>(-1,1,0),
375  slip::DPoint3d<int>(-1,1,1),
376  slip::DPoint3d<int>(0,0,1),
377  slip::DPoint3d<int>(0,-1,1),
378  slip::DPoint3d<int>(0,-1,0),
379  slip::DPoint3d<int>(0,-1,-1),
380  slip::DPoint3d<int>(1,0,0),
381  slip::DPoint3d<int>(1,0,-1),
382  slip::DPoint3d<int>(1,1,-1),
383  slip::DPoint3d<int>(1,1,0),
384  slip::DPoint3d<int>(1,1,1),
385  slip::DPoint3d<int>(1,0,1),
386  slip::DPoint3d<int>(1,-1,1),
387  slip::DPoint3d<int>(1,-1,0),
388  slip::DPoint3d<int>(1,-1,-1),
389  slip::DPoint3d<int>(0,0,-1),
390  slip::DPoint3d<int>(0,1,-1),
391  slip::DPoint3d<int>(0,1,0),
392  slip::DPoint3d<int>(0,1,1)
393  }};
394 
398  static slip::block<slip::DPoint3d<int>,13> prev_26c =
399  {{slip::DPoint3d<int>(-1,0,0),
400  slip::DPoint3d<int>(-1,0,1),
401  slip::DPoint3d<int>(-1,-1,1),
402  slip::DPoint3d<int>(-1,-1,0),
403  slip::DPoint3d<int>(-1,-1,-1),
404  slip::DPoint3d<int>(-1,0,-1),
405  slip::DPoint3d<int>(-1,1,-1),
406  slip::DPoint3d<int>(-1,1,0),
407  slip::DPoint3d<int>(-1,1,1),
408  slip::DPoint3d<int>(0,-1,1),
409  slip::DPoint3d<int>(0,-1,0),
410  slip::DPoint3d<int>(0,-1,-1),
411  slip::DPoint3d<int>(0,0,-1)
412  }};
413 
417  static slip::block<slip::DPoint3d<int>,13> next_26c =
418  {{
419  slip::DPoint3d<int>(0,0,1),
420  slip::DPoint3d<int>(1,0,0),
421  slip::DPoint3d<int>(1,0,-1),
422  slip::DPoint3d<int>(1,1,-1),
423  slip::DPoint3d<int>(1,1,0),
424  slip::DPoint3d<int>(1,1,1),
425  slip::DPoint3d<int>(1,0,1),
426  slip::DPoint3d<int>(1,-1,1),
427  slip::DPoint3d<int>(1,-1,0),
428  slip::DPoint3d<int>(1,-1,-1),
429  slip::DPoint3d<int>(0,1,-1),
430  slip::DPoint3d<int>(0,1,0),
431  slip::DPoint3d<int>(0,1,1)
432  }};
433 
434 
438  static slip::block<slip::DPoint3d<int>,9> prev_18c =
439  {{slip::DPoint3d<int>(-1,0,0),
440  slip::DPoint3d<int>(-1,0,1),
441  slip::DPoint3d<int>(-1,-1,0),
442  slip::DPoint3d<int>(-1,0,-1),
443  slip::DPoint3d<int>(-1,1,0),
444  slip::DPoint3d<int>(0,-1,1),
445  slip::DPoint3d<int>(0,-1,0),
446  slip::DPoint3d<int>(0,-1,-1),
447  slip::DPoint3d<int>(0,0,-1)
448  }};
449 
453  static slip::block<slip::DPoint3d<int>,9> next_18c =
454  {{
455  slip::DPoint3d<int>(0,0,1),
456  slip::DPoint3d<int>(1,0,0),
457  slip::DPoint3d<int>(1,0,-1),
458  slip::DPoint3d<int>(1,1,0),
459  slip::DPoint3d<int>(1,0,1),
460  slip::DPoint3d<int>(1,-1,0),
461  slip::DPoint3d<int>(0,1,-1),
462  slip::DPoint3d<int>(0,1,0),
463  slip::DPoint3d<int>(0,1,1)
464  }};
465 
466 
475 
486 static slip::block<slip::DPoint4d<int>,8> n_4d_8c =
487 {{slip::DPoint4d<int>(-1,0,0,0),
488  slip::DPoint4d<int>(0,-1,0,0),
489  slip::DPoint4d<int>(0,0,0,1),
490  slip::DPoint4d<int>(0,0,-1,0),
491  slip::DPoint4d<int>(0,0,0,-1),
492  slip::DPoint4d<int>(0,0,1,0),
493  slip::DPoint4d<int>(0,1,0,0),
494  slip::DPoint4d<int>(1,0,0,0)
495 }};
503 static slip::block<slip::DPoint4d<int>,4> prev_4d_8c =
504 {{slip::DPoint4d<int>(-1,0,0,0),
505  slip::DPoint4d<int>(0,-1,0,0),
506  slip::DPoint4d<int>(0,0,-1,0),
507  slip::DPoint4d<int>(0,0,0,-1)
508 }};
516 static slip::block<slip::DPoint4d<int>,4> next_4d_8c =
517 {{slip::DPoint4d<int>(0,0,0,1),
518  slip::DPoint4d<int>(0,0,1,0),
519  slip::DPoint4d<int>(0,1,0,0),
520  slip::DPoint4d<int>(1,0,0,0)
521 }};
522 
524 }//slip::
525 
526 #endif //SLIP_NEIGHBORS_HPP
Provides a class to modelize the difference of slip::Point2d.
Difference of Point3D class, specialization of DPoint<CoordType,DIM> with DIM = 3.
NEIGHBOURHOOD
Choose between different neighbourhood.
Definition: neighbors.hpp:119
Provides a class to modelize the difference of slip::Point3d.
Provides a class to manipulate 1d static and generic arrays.
Difference of Point4D class, specialization of DPoint<CoordType,DIM> with DIM = 4.
Definition: DPoint4d.hpp:99
Provides a class to modelize the difference of 4d points.
Difference of Point2D class, specialization of DPoint<CoordType,DIM> with DIM = 2.
Definition: Array2d.hpp:129
Provides a class to modelize the difference of slip::Point1d.
This is a linear (one-dimensional) static container. This container statisfies the RandomAccessContai...
Definition: Block.hpp:94