File: extended_kernel.cpp

package info (click to toggle)
cgal 4.0-5
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 65,068 kB
  • sloc: cpp: 500,870; ansic: 102,544; sh: 321; python: 92; makefile: 75; xml: 2
file content (37 lines) | stat: -rw-r--r-- 1,102 bytes parent folder | download | duplicates (3)
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/Gmpz.h>
#include <CGAL/Extended_homogeneous.h>
#include <CGAL/Nef_polyhedron_3.h>
#include <CGAL/IO/Nef_polyhedron_iostream_3.h>

typedef CGAL::Gmpz  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;
}