mirror of https://github.com/CGAL/cgal
updated
This commit is contained in:
parent
674df59875
commit
9efb9d1b98
|
|
@ -449,7 +449,7 @@ protected:
|
||||||
}
|
}
|
||||||
} else if (proj_normal1.num_faces() == 3) {
|
} else if (proj_normal1.num_faces() == 3) {
|
||||||
unsigned index = Cgm::get_corner_index(faces_mask1, id);
|
unsigned index = Cgm::get_corner_index(faces_mask1, id);
|
||||||
CGAL_assertion(index < NUM_CORNERS);
|
CGAL_assertion(index < Cgm::NUM_CORNERS);
|
||||||
Arr_vertex_handle v =
|
Arr_vertex_handle v =
|
||||||
m_cgm.m_corner_vertices[id][index];
|
m_cgm.m_corner_vertices[id][index];
|
||||||
/*! \todo Set the entire cyclic chain of 3 vertices, and not just the
|
/*! \todo Set the entire cyclic chain of 3 vertices, and not just the
|
||||||
|
|
@ -492,7 +492,7 @@ protected:
|
||||||
}
|
}
|
||||||
} else if (proj_normal2.num_faces() == 3) {
|
} else if (proj_normal2.num_faces() == 3) {
|
||||||
unsigned index = Cgm::get_corner_index(faces_mask2, id);
|
unsigned index = Cgm::get_corner_index(faces_mask2, id);
|
||||||
CGAL_assertion(index < NUM_CORNERS);
|
CGAL_assertion(index < Cgm::NUM_CORNERS);
|
||||||
Arr_vertex_handle v =
|
Arr_vertex_handle v =
|
||||||
m_cgm.m_corner_vertices[id][index];
|
m_cgm.m_corner_vertices[id][index];
|
||||||
/*! \todo Set the entire cyclic chain of 3 vertices, and not just the
|
/*! \todo Set the entire cyclic chain of 3 vertices, and not just the
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/basic.h>
|
||||||
|
#include <CGAL/Cubical_gaussian_map_3.h>
|
||||||
|
#include <CGAL/IO/Arr_iostream.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
CGAL_BEGIN_NAMESPACE
|
CGAL_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
|
@ -51,18 +55,18 @@ operator<<(std::ostream & os,
|
||||||
* \param os the output stream
|
* \param os the output stream
|
||||||
* \param cgm the Cubical_gaussian_map_3 object
|
* \param cgm the Cubical_gaussian_map_3 object
|
||||||
*/
|
*/
|
||||||
template <class T_Traits,
|
template <class Kernel,
|
||||||
#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM
|
#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM
|
||||||
template <class T>
|
template <class T>
|
||||||
#endif
|
#endif
|
||||||
class T_Dcel>
|
class T_Dcel>
|
||||||
inline
|
inline
|
||||||
std::ostream & operator<<(std::ostream & os,
|
std::ostream & operator<<(std::ostream & os,
|
||||||
const Cubical_gaussian_map_3<T_Traits,T_Dcel> & cgm)
|
const Cubical_gaussian_map_3<Kernel,T_Dcel> & cgm)
|
||||||
{
|
{
|
||||||
typedef Cubical_gaussian_map_3<T_Traits,T_Dcel> Cgm;
|
typedef Cubical_gaussian_map_3<Kernel,T_Dcel> Cgm;
|
||||||
for (unsigned int i = 0; i < Cubical_gaussian_map_3::NUM_FACES; ++i) {
|
for (unsigned int i = 0; i < Cgm::NUM_FACES; ++i) {
|
||||||
const typename Cgm::Arrangement & arr = cgm.get_arrangement(i);
|
const typename Cgm::Arrangement & arr = cgm.arrangement(i);
|
||||||
os << arr;
|
os << arr;
|
||||||
}
|
}
|
||||||
return os;
|
return os;
|
||||||
|
|
@ -72,15 +76,15 @@ std::ostream & operator<<(std::ostream & os,
|
||||||
* \param is the input stream
|
* \param is the input stream
|
||||||
* \param cgm the Cubical_gaussian_map_3 object
|
* \param cgm the Cubical_gaussian_map_3 object
|
||||||
*/
|
*/
|
||||||
template <class T_Traits,
|
template <class Kernel,
|
||||||
#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM
|
#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM
|
||||||
template <class T>
|
template <class T>
|
||||||
#endif
|
#endif
|
||||||
class T_Dcel>
|
class T_Dcel>
|
||||||
inline std::istream & operator>>(std::istream & is,
|
inline std::istream & operator>>(std::istream & is,
|
||||||
Cubical_gaussian_map_3<T_Traits,T_Dcel> & cgm)
|
Cubical_gaussian_map_3<Kernel,T_Dcel> & cgm)
|
||||||
{
|
{
|
||||||
typedef Cubical_gaussian_map_3<T_Traits,T_Dcel> Cgm;
|
typedef Cubical_gaussian_map_3<Kernel,T_Dcel> Cgm;
|
||||||
for (unsigned int i = 0; i < Cubical_gaussian_map_3::NUM_FACES; ++i) {
|
for (unsigned int i = 0; i < Cubical_gaussian_map_3::NUM_FACES; ++i) {
|
||||||
const typename Cgm::Arrangement & arr = cgm.get_arrangement(i);
|
const typename Cgm::Arrangement & arr = cgm.get_arrangement(i);
|
||||||
arr >> is;
|
arr >> is;
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,18 @@
|
||||||
//
|
//
|
||||||
// Author(s) : Efi Fogel <efif@post.tau.ac.il>
|
// Author(s) : Efi Fogel <efif@post.tau.ac.il>
|
||||||
|
|
||||||
#ifndef CGAL_CGM_IOSTREAM_H
|
#ifndef CGAL_POLYHEDRAL_CGM_IOSTREAM_H
|
||||||
#define CGAL_CGM_IOSTREAM_H
|
#define CGAL_POLYHEDRAL_CGM_IOSTREAM_H
|
||||||
|
|
||||||
/*! \file Implmentation of importer and exporter IO operations of a
|
/*! \file Implmentation of importer and exporter IO operations of a
|
||||||
* Polyhedral_cgm object
|
* Polyhedral_cgm object
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/basic.h>
|
||||||
|
#include <CGAL/Polyhedral_cgm.h>
|
||||||
|
#include <CGAL/IO/Cgm_iostream.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
CGAL_BEGIN_NAMESPACE
|
CGAL_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
|
@ -37,11 +41,11 @@ template <class Kernel,
|
||||||
template <class T>
|
template <class T>
|
||||||
#endif
|
#endif
|
||||||
class T_Dcel>
|
class T_Dcel>
|
||||||
inline
|
inline std::ostream & operator<<(std::ostream & os,
|
||||||
std::ostream & operator<<(std::ostream & os,
|
|
||||||
const Polyhedral_cgm<Kernel,T_Dcel> & cgm)
|
const Polyhedral_cgm<Kernel,T_Dcel> & cgm)
|
||||||
{
|
{
|
||||||
os << static_cast<Cubical_gaussian_map_3<Kernel,T_Dcel>(cgm);
|
const Cubical_gaussian_map_3<Kernel,T_Dcel> * tmp = &cgm;
|
||||||
|
os << *tmp;
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,8 +64,7 @@ CGAL_BEGIN_NAMESPACE
|
||||||
/*!
|
/*!
|
||||||
*/
|
*/
|
||||||
template <class PolyhedralCgm,
|
template <class PolyhedralCgm,
|
||||||
class Polyhedron =
|
class Polyhedron = Polyhedral_cgm_polyhedron_3<PolyhedralCgm>,
|
||||||
Polyhedral_cgm_default_polyhedron_3<PolyhedralCgm>,
|
|
||||||
class Visitor = Polyhedral_cgm_initializer_visitor<PolyhedralCgm> >
|
class Visitor = Polyhedral_cgm_initializer_visitor<PolyhedralCgm> >
|
||||||
class Polyhedral_cgm_initializer :
|
class Polyhedral_cgm_initializer :
|
||||||
public Cgm_initializer<typename PolyhedralCgm::Base>
|
public Cgm_initializer<typename PolyhedralCgm::Base>
|
||||||
|
|
@ -712,13 +711,26 @@ public:
|
||||||
} while(hec != hec_begin);
|
} while(hec != hec_begin);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Compute the minkowski sum
|
/*! Compute the minkowski sum of a range of objects of type Polyhedral_cgm
|
||||||
*/
|
*/
|
||||||
template <class CgmIterator>
|
template <class CgmIterator>
|
||||||
void minkowsi_sum(CgmIterator begin, CgmIterator end)
|
void minkowski_sum(CgmIterator begin, CgmIterator end)
|
||||||
|
{
|
||||||
|
Polyhedral_cgm * cgm1 = *begin++;
|
||||||
|
Polyhedral_cgm * cgm2 = *begin;
|
||||||
|
minkowski_sum(cgm1, cgm2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Compute the minkowski sum of 2 objects of type Polyhedral_cgm
|
||||||
|
* \param cgm1 the first Polyhedral_cgm object
|
||||||
|
* \param cgm2 the second Polyhedral_cgm object
|
||||||
|
*/
|
||||||
|
template <>
|
||||||
|
void minkowski_sum<Polyhedral_cgm *>(Polyhedral_cgm * cgm1,
|
||||||
|
Polyhedral_cgm * cgm2)
|
||||||
{
|
{
|
||||||
// Compute the overlays:
|
// Compute the overlays:
|
||||||
overlay(begin, end);
|
overlay(cgm1, cgm2);
|
||||||
|
|
||||||
// Initialize the corners:
|
// Initialize the corners:
|
||||||
init_corners();
|
init_corners();
|
||||||
|
|
@ -748,18 +760,17 @@ public:
|
||||||
// print_stat();
|
// print_stat();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Compute the overlay
|
/*! Compute the overlay of the respective 6 face pairs of 2 Polyhedral_cgm
|
||||||
|
* objects.
|
||||||
|
* \param cgm1 the first Polyhedral_cgm object
|
||||||
|
* \param cgm2 the second Polyhedral_cgm object
|
||||||
*/
|
*/
|
||||||
template <class CgmIterator>
|
void overlay(Polyhedral_cgm * cgm1, Polyhedral_cgm * cgm2)
|
||||||
void overlay(CgmIterator & begin, CgmIterator & end)
|
|
||||||
{
|
{
|
||||||
Polyhedral_cgm * gm1 = *begin++;
|
|
||||||
Polyhedral_cgm * gm2 = *begin;
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < NUM_FACES; ++i) {
|
for (unsigned int i = 0; i < NUM_FACES; ++i) {
|
||||||
Arr & arr = m_arrangements[i];
|
Arr & arr = m_arrangements[i];
|
||||||
Arr & arr1 = gm1->m_arrangements[i];
|
Arr & arr1 = cgm1->m_arrangements[i];
|
||||||
Arr & arr2 = gm2->m_arrangements[i];
|
Arr & arr2 = cgm2->m_arrangements[i];
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
Arr_halfedge_const_iterator hi;
|
Arr_halfedge_const_iterator hi;
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@
|
||||||
|
|
||||||
CGAL_BEGIN_NAMESPACE
|
CGAL_BEGIN_NAMESPACE
|
||||||
|
|
||||||
template<class Cgm,
|
template<class PolyhedralCgm,
|
||||||
class Polyhedron = Polyhedral_cgm_default_polyhedron_3<Cgm> >
|
class Polyhedron = Polyhedral_cgm_polyhedron_3<PolyhedralCgm> >
|
||||||
class Polyhedral_cgm_initializer_visitor {
|
class Polyhedral_cgm_initializer_visitor {
|
||||||
public:
|
public:
|
||||||
typedef typename Polyhedron::Vertex_const_handle
|
typedef typename Polyhedron::Vertex_const_handle
|
||||||
|
|
@ -35,10 +35,10 @@ public:
|
||||||
typedef typename Polyhedron::Facet_const_handle
|
typedef typename Polyhedron::Facet_const_handle
|
||||||
Polyhedron_facet_const_handle;
|
Polyhedron_facet_const_handle;
|
||||||
|
|
||||||
typedef typename Cgm::Arr_vertex_handle Arr_vertex_handle;
|
typedef typename PolyhedralCgm::Arr_vertex_handle Arr_vertex_handle;
|
||||||
typedef typename Cgm::Arr_halfedge_handle Arr_halfedge_handle;
|
typedef typename PolyhedralCgm::Arr_halfedge_handle Arr_halfedge_handle;
|
||||||
typedef typename Cgm::Arr_face_handle Arr_face_handle;
|
typedef typename PolyhedralCgm::Arr_face_handle Arr_face_handle;
|
||||||
typedef typename Cgm::Arr_face_const_handle Arr_face_const_handle;
|
typedef typename PolyhedralCgm::Arr_face_const_handle Arr_face_const_handle;
|
||||||
|
|
||||||
/*! Pass information from a polyhedron vertex to its dual - a cgm-face */
|
/*! Pass information from a polyhedron vertex to its dual - a cgm-face */
|
||||||
virtual void update_dual_vertex(Polyhedron_vertex_const_handle src,
|
virtual void update_dual_vertex(Polyhedron_vertex_const_handle src,
|
||||||
|
|
|
||||||
|
|
@ -199,12 +199,12 @@ struct Polyhedral_cgm_polyhedron_items : public CGAL::Polyhedron_items_3 {
|
||||||
* based on the new items type.
|
* based on the new items type.
|
||||||
*/
|
*/
|
||||||
template <class Cgm>
|
template <class Cgm>
|
||||||
struct Polyhedral_cgm_default_polyhedron_3 :
|
struct Polyhedral_cgm_polyhedron_3 :
|
||||||
public CGAL::Polyhedron_3<CGAL::Polyhedron_traits_with_normals_3<typename Cgm::Kernel>,
|
public CGAL::Polyhedron_3<CGAL::Polyhedron_traits_with_normals_3<typename Cgm::Kernel>,
|
||||||
Polyhedral_cgm_polyhedron_items<Cgm> >
|
Polyhedral_cgm_polyhedron_items<Cgm> >
|
||||||
{
|
{
|
||||||
/*! Constructor */
|
/*! Constructor */
|
||||||
Polyhedral_cgm_default_polyhedron_3() {}
|
Polyhedral_cgm_polyhedron_3() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
CGAL_END_NAMESPACE
|
CGAL_END_NAMESPACE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue