File: extended_kernel.cpp

package info (click to toggle)
cgal 4.9-1
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 85,584 kB
  • sloc: cpp: 640,841; ansic: 140,696; sh: 708; fortran: 131; makefile: 114; python: 92
file content (37 lines) | stat: -rw-r--r-- 1,120 bytes parent folder | download | duplicates (8)
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
#include <CGAL/Exact_integer.h>
#include <CGAL/Extended_homogeneous.h>
#include <CGAL/Nef_polyhedron_3.h>
#include <CGAL/IO/Nef_polyhedron_iostream_3.h>

typedef CGAL::Exact_integer  NT;
//instead of
//typedef CGAL::Extended_homogeneous<NT>  Kernel;
// workaround for VC++
struct Kernel : public CGAL::Extended_homogeneous<NT> {};

typedef CGAL::Nef_polyhedron_3<Kernel>  Nef_polyhedron;
typedef Nef_polyhedron::RT  RT;
typedef Nef_polyhedron::Point_3  Point_3;
typedef Nef_polyhedron::Plane_3  Plane_3;
typedef Nef_polyhedron::Vertex_const_iterator  Vertex_const_iterator;

int main() {

  Nef_polyhedron N;
  std::cin >> N;

  Vertex_const_iterator v;
  for(v = N.vertices_begin(); v != N.vertices_end(); ++v) {
    Point_3 p(v->point());
    if(p.hx().degree() > 0 || p.hy().degree() > 0 || p.hz().degree() > 0)
      std::cout << "extended vertex at " << p << std::endl;
    else
      std::cout << "standard vertex at " << p << std::endl;

    if(p == Point_3(RT(0,1), RT(0,1), RT(0,1)))
       std::cout << "  found vertex (right,back,top) of the infimaximal box"
                 << std::endl;
  }

  return 0;
}