complex.cc 2.66 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright (C) 2008 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of the Olena Library.  This library is free
// software; you can redistribute it and/or modify it under the terms
// of the GNU General Public License version 2 as published by the
// Free Software Foundation.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this library; see the file COPYING.  If not, write to
// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
// Boston, MA 02111-1307, USA.
//
// As a special exception, you may use this file as part of a free
// software library without restriction.  Specifically, if other files
// instantiate templates or use macros or inline functions from this
// file, or you compile this file and link it with other files to
// produce an executable, this file does not by itself cause the
// resulting executable to be covered by the GNU General Public
// License.  This exception does not however invalidate any other
// reasons why the executable file might be covered by the GNU General
// Public License.

/// \file tests/core/complex.cc
/// \brief Test of mln::complex.

#include <iostream>

#include <mln/core/complex.hh>


int main()
{
  using namespace mln;

40
  /* A 2-d (simplicial) complex and its adjacency graph.
41
42

              v0      e3     v3
43
44
45
46
47
48
49
                o-----------o                v0----e3----v3      
               / \ ,-----. /                / \    |    /   
              / . \ \ t2/ /                /   \   t2  /    
          e0 / / \ e1\ / / e4             e0.  ,e1  `e4  
            / /t1 \ \ ' /                /   t1  \   /      
           / `-----' \ /                /    |    \ /       
          o-----------o                v1----e2----v2
50
51
       v1      e2      v2

52
53
54
55
       v = vertex
       e = edge
       t = triangle
  */
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78


  complex<2> c;

  // 0-faces (points).
  face_handle<0, 2> v0 = c.add_face();
  face_handle<0, 2> v1 = c.add_face();
  face_handle<0, 2> v2 = c.add_face();
  face_handle<0, 2> v3 = c.add_face();
 
  // 1-faces (segments).
  face_handle<1, 2> e0 = c.add_face(v0 + v1);
  face_handle<1, 2> e1 = c.add_face(v0 + v2);
  face_handle<1, 2> e2 = c.add_face(v1 + v2);
  face_handle<1, 2> e3 = c.add_face(v0 + v3);
  face_handle<1, 2> e4 = c.add_face(v2 + v3);

  // 2-faces (triangles).
  face_handle<2, 2> t0 = c.add_face(e0 + e1 + e2);
  face_handle<2, 2> t1 = c.add_face(e1 + e3 + e4);

  std::cout << c << std::endl;
}