Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] How do I construct a WritablePropertyMap?

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] How do I construct a WritablePropertyMap?


Chronological Thread 
  • From: Iason Manolas <>
  • To:
  • Subject: Re: [cgal-discuss] How do I construct a WritablePropertyMap?
  • Date: Thu, 10 Nov 2016 11:41:49 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-phdr: 9a23:ErRRixGbgT9OrM5Wmso74J1GYnF86YWxBRYc798ds5kLTJ76ps6+bnLW6fgltlLVR4KTs6sC0LuN9fi7EjReqb+681k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRoLerpBIHSk9631+ev8JHPfglEnjSwbLd8IRmssQncuMYajZdjJ60s1hbHv3xEdvhMy2h1P1yThRH85smx/J5n7Stdvu8q+tBDX6vnYak2VKRUAzs6PW874s3rrgTDQhCU5nQASGUWkwFHDBbD4RrnQ5r+qCr6tu562CmHIc37SK0/VDq+46t3ThLjlSEKPCM7/m7KkMx9lKBUoByhqRJxwIDafZ+bO+Zlc6zHYd8XX3BMUtpNWyFDBI63cosBD/AGPeZdt4TzpEEBrQC5BQmqGejhzSVHhnnx3a0+yeshChzN0Qs5H9IXrHTUq9H1O7kUUe+r16TIwjDDYOlX2Tf58oTHbhchofSVUL92bMHfx04vFwbfgVWRr4zoJz2V2f4RvGiH6OpgT+Kuh3Q7pAF2pzij3sYsio/ThoIU0F/I7yt5wJwtKdKkR050e9qkHIFXtyGAOIt6WswiQ2B0uCY6170JooS3czQNyJQi3xLQcPuHc4+T4hL/TuqRJi14hH19dLKkmxa961Svyu77VsmqzllKtCRFkt3LtnEDzRDc9s+HSv5780y82jiPzxje5v9YLU0wj6bWKJ4szqQumpYOvknPBCD7lUXwgaSLbEsr4PKo5P7iYrj+pp+TKYt0igbmP6QrgMO/AOA4PhEPX2iH5eiwzbPj8EL5TblQgf02la7ZsJ/eJcsFvKK2HwhV0oM75xa+CTepzsgYkGEZIF5ZfB+LlYvkNlHULPzmEPuyjE6gnThryvzeO73uGJTNLnzNkLf7erZ97lZRyBMqzdBD4JJUDq8OIPTtVULqu9zYCwU2Mw2ww+r9FNp90YYeVXqVAqCFKKPSrUOI5uU3LuaQa48aojL9J+E46P7vln82hUIdfbKy3ZYMc3C5HvFmI12Dbnb2g9cBF30KvgskQ+Dwhl2CS20bWnCpQqhp5i0nEJn0SsDYV4W1ifqA2j26F9tYfCddG1WUGDDpcYuDHPwDYSbXLs56mSEfTuucTZQ830SuqBPi0OggafHF/zUR85Plztl8oePJ0goj8CR9SMWb3WbKRG59miYERiQ9wbtk8nF70UqJhKhkn+RDR5sU/OJMSg58NJjGzuU8Bcq1QRPEZt7OSVCoRZKtDjg1C94w2NQTeF0uJtO5kxqW3za2G6RH0PuQFZks++Td2WLwLoBz0THdxaw5hh4nRMVIcmapj6o6+wnIDJPSiBakkb23f/EcwDLV7zXEinGfuVlRFg92S6TMG34FIVDHqMzwoULEQbjpArsuNk5NyNWJN7BROeHu2F5JTfOmNNXFaH+qgE+xAwyJz/WCdtnEYWIYiQTUE08C2yUa+3GCPBN2Uj64v2XaATpjPV3qakLot+J5rSXoHQcP0wiWYhg5hPKO8RkPiKnERg==

This actually worked!

Iason

On 7 November 2016 at 17:20, Sebastien Loriot (GeometryFactory) <> wrote:

You probably have an face orientation issue.
You can try calling orient_polygon_soup()

http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__repairing__grp.html#gaadc5bac3072b11d2313e40043c729d0a

Note that in case of non-manifold vertices, those will be duplicated.

Sebastien.



On 11/07/2016 10:00 AM, Iason Manolas wrote:
ah! you are right, it is not valid..
So probably  there is something wrong with the way i build it?

I use the following code to build it:

using Kernel=CGAL::Exact_predicates_inexact_constructions_kernel;
using CGALPolyhedron=CGAL::Polyhedron_3<Kernel>;
using HalfedgeDS=CGALPolyhedron::HalfedgeDS;

template<class HDS>
class  PolyhedronBuilder:public CGAL::Modifier_base<HDS>
{
public:


    Mesh         M;

    PolyhedronBuilder(){}
    explicit PolyhedronBuilder(const Mesh& model):M{model}{}
    void operator()(HDS& hds)
    {
        typedef typename HDS::Vertex    Vertex;
        typedef typename Vertex::Point     Point;

        CGAL::Polyhedron_incremental_builder_3<HDS> B(hds,true);
        B.begin_surface(M.vertices.size(),M.indices.size()/3);

        //add vertices
        for(const auto& vert:M.vertices)

B.add_vertex(Point(vert.Position.x,vert.Position.y,vert.Position.z));

        //add faces
        for(uint i=0;i<M.indices.size()/3;i+=3)
        {
            B.begin_facet();
            B.add_vertex_to_facet(M.indices[i]);
            B.add_vertex_to_facet(M.indices[i+1]);
            B.add_vertex_to_facet(M.indices[i+2]);
            B.end_facet();
        }
        B.end_surface();

    }
};

and then:
PolyhedronBuilder<HalfedgeDS> builder(mesh);
myPolyhedron.delegate(builder);

which was based on
<http://doc.cgal.org/latest/Polyhedron/classCGAL_1_1Polyhedron__incremental__builder__3.html>
.



On 7 November 2016 at 10:24, Sebastien Loriot (GeometryFactory)
< <mailto:>> wrote:

    Could you check P.is_valid() returns true before calling
    compute_normals?

    On 11/04/2016 03:58 PM, Iason Manolas wrote:

        This
        <https://github.com/IasonManolas/Thesis/blob/meshScene/mypolyhedron.h
        <https://github.com/IasonManolas/Thesis/blob/meshScene/mypolyhedron.h>>
        is my code.
        Do you think there could be something wrong with my cgal
        distribution?

        Iason


        On 4 November 2016 at 16:17, Iason Manolas <
        <mailto:>
        <mailto: <mailto:>>> wrote:


        CGAL::Polyhedron_3<CGAL::Exact_predicates_inexact_constructions_kernel>

            On 4 November 2016 at 16:10, Sebastien Loriot (GeometryFactory)
            < <mailto:>
        <mailto: <mailto:>>> wrote:

                What is your polyhedron type?

                Sebastien.

                On 11/04/2016 02:59 PM, Iason Manolas wrote:

                    My program crashes when I call compute_vertex_normals.
                    The stack calling the function that crashes is:
                    4.In *compute_normal.h*at line 183:
        *(!is_border**(he,pmesh))*
                    3.In *helpers.h* at line 45: *face(hd,g)*
                    2.In *graph_traits_Polyhedron_3.h* at line: 420:
        *h->face();*
                    1.In H*alfedgeDS_halfedge_base.h* at line 327:*face()*

                    The error I get in Qt creator is SIGSEGV

        <http://stackoverflow.com/questions/2454192/whats-sigsegv-segmentation-fault-in-qt
        <http://stackoverflow.com/questions/2454192/whats-sigsegv-segmentation-fault-in-qt>

        <http://stackoverflow.com/questions/2454192/whats-sigsegv-segmentation-fault-in-qt
        <http://stackoverflow.com/questions/2454192/whats-sigsegv-segmentation-fault-in-qt>>>
                    which after searching found out that propably means:
        "Trying
                    to access
                    pointer with invalid value."
                    My guess was that I had not correctly initialized the
                    Polyhedron but
                    everything seems fine..

                    Any idea why this happens?

                    Best Regards,
                    Iason Manolas

                    On 1 November 2016 at 10:53, Andreas Fabri
                    <
        <mailto:>
                    <mailto:
        <mailto:>>
                    <mailto:
        <mailto:>

                    <mailto:
        <mailto:>>>> wrote:

                        You must
                        #include <boost/property_map/property_map.hpp>

                        and write


        compute_vertex_normals(P,boost::make_assoc_property_map(normals))


                        On 01/11/2016 09:45, Iason Manolas wrote:

                            Thanks for your response Sebastien.

                            After reading your code  I wrote:
                            using

        vd=boost::graph_traits<CGALPolyhedron>::vertex_descriptor;
                            std::map<vd,Kernel::Vector_3>* normals;


        CGAL::Polygon_mesh_processing::compute_vertex_normals(P,normals);
                    (since
                            I want to compute vertex and not face normals)

                            But I get:



        /usr/include/CGAL/Polygon_mesh_processing/compute_normal.h:228:
                            error:
                            no matching function for call to


        ‘put(std::map<CGAL::internal::In_place_list_iterator<CGAL::HalfedgeDS_in_place_list_vertex<CGAL::I_Polyhedron_vertex<CGAL::HalfedgeDS_vertex_base<CGAL::HalfedgeDS_list_types<CGAL::Epick,


        CGAL::I_Polyhedron_derived_items_3<CGAL::Polyhedron_items_3>,
                            std::allocator<int> >, CGAL::Boolean_tag<true>,
                            CGAL::Point_3<CGAL::Epick> > > >,


        std::allocator<CGAL::HalfedgeDS_in_place_list_vertex<CGAL::I_Polyhedron_vertex<CGAL::HalfedgeDS_vertex_base<CGAL::HalfedgeDS_list_types<CGAL::Epick,


        CGAL::I_Polyhedron_derived_items_3<CGAL::Polyhedron_items_3>,
                            std::allocator<int> >, CGAL::Boolean_tag<true>,
                            CGAL::Point_3<CGAL::Epick> > > > > >,
                            CGAL::Vector_3<CGAL::Epick> >&,

        CGAL::HDS_graph_traits<CGAL::Polyhedron_3<CGAL::Epick>

                                ::vertex_descriptor&,



        CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double,
                            CGAL::Epick>, CGAL::Epick>::Vector_3&)’
                                 put(vnm, v, vec);
                                    ^
                            That propably means that the put fuction cannot
                    recognize vnm ( I
                            passed) as a valid argument?



                            On 1 November 2016 at 09:50, Sebastien Loriot
                    (GeometryFactory)
                            <
        <mailto:> <mailto:
        <mailto:>>
                    <mailto:
        <mailto:> <mailto:
        <mailto:>>>
                            <mailto:
        <mailto:>
                    <mailto:
        <mailto:>> <mailto:
        <mailto:>
                    <mailto:
        <mailto:>>>>> wrote:

                                A writable property map, as describe in the
                    concept of the
                            boost web
                                site is a mecanism that allow to generically
                    associate a
                            property
                                (the value type) to a given object (the
        key).

                                If you want to associate a normal to a
        facet of a
                            Polyhedron, here
                                is a simple example (not tested):


                                struct Poly_normal_map{

                                  typedef Polyhedron::Facet_handle key_type;
                                  typedef Kernel::Vector_3 value_type;
                                  typedef
        boost::writable_property_map_tag category;

                                  std::map<Polyhedron::Facet_handle,
                    Kernel::Vector_3>* normals;

                                  Poly_normal_map() : normals(NULL)
                                  {}


        Poly_normal_map(std::map<Polyhedron::Facet_handle,

         Kernel::Vector_3>& n)
                                    : normals(*n)
                                  {}

                                  friend void put(Poly_normal_map pnm,

        Polyhedron::Facet_handle fh,
                                                  const Kernel::Vector_3& n
                                  {
                                    CGAL_assertion(pnm.normals!=0);
                                    pnm.normals.insert(
        std::make_pair(fh, n) );
                                  }
                                };

                                std::map<Polyhedron::Facet_handle,
                    Kernel::Vector_3> normals;
                                Poly_normal_map vpm(normals); //vpm is you
                    writable property map


                                If you want to make the property map
        read-write,
                    you can add
                                a get function:

                                  friend const value_type&
        get(Poly_normal_map pnm,

                     Polyhedron::Facet_handle fh)
                                  {
                                    CGAL_assertion(pnm.normals!=0);
                                    return pnm.normals[fh];
                                  }

                                and update the category tag.

                                Note that the code I've written is roughly
                    equivalent to using a
                                boost::associative_property_map



        (http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>>


        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>>>



        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>>


        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/associative_property_map.html>>>>)
                                :

                                std::map<Polyhedron::Facet_handle,
                    Kernel::Vector_3> normals;
                                boost::associative_property_map<
                                         std::map<Polyhedron::Facet_handle,
                                                  Kernel::Vector_3> >
        vpm(normals);

                                If you're not stuck with Polyhedron_3,
        you can
                    use class
                                Surface_mesh that comes with its own
        property
                    mechanism
                                as illustrated in this example:




        http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>>


        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>>>



        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>>


        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html
        <http://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2compute_normals_example_8cpp-example.html>>>>

                                Sebastien.



                                On 10/31/2016 12:46 PM, Iason Manolas wrote:

                                    Hi,

                                    I am new to CGAL. I have constructed a
                            CGAL::Polyhedron_3 and
                                    now I want
                                    to compute the normal vector for
        each of its
                    vertices. So I
                                    found the
                                    Polygon Mesh Processing package which
                    happens to have a
                            function



        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>>


        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>>>



        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>>


        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>

        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e
        <http://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__normal__grp.html#gad46aaf003999b2939f3f9e4f6fa58d0e>>>>>
                                    doing exactly what I want . In the above
                    link I found
                            out that the
                                    second argument was of type
        VertexNormalMap
                    which is a
                            model of
                                    WritablePropertyMap. There was a link



        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>>


        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>>>



        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>>


        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>

        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html
        <http://www.boost.org/doc/libs/1_62_0/libs/property_map/doc/WritablePropertyMap.html>>>>>
                                    to boost libraries explaining(?) what
                    writable property
                            map is .

                                    Unfortunately this is my first encounter
                    with property
                            maps and
                                    consequently I am a bit confused..
                                    I also had a look at cgal's
        explanation of
                    property maps
                            page

                    <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>
                    <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>>

        <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>
                    <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>>>

                    <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>
                    <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>>

        <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>
                    <http://doc.cgal.org/latest/Property_map/index.html
        <http://doc.cgal.org/latest/Property_map/index.html>>>> >, but I
                                    did not
                                    understand much..

                                    Could anyone suggest a way of
        creating the
                    property map
                            I need?

                                    Best Regards,
                                    Iason



                                --
                                You are currently subscribed to
        cgal-discuss.
                                To unsubscribe or access the archives, go to

        https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>
                    <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>>

        <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>
                    <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>>>

        <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>
                    <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>>

        <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>
                    <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>>>>




                        --
                        Andreas Fabri, PhD
                        Chief Officer, GeometryFactory
                        Editor, The CGAL Project

                        phone: +33.492.954.912 <tel:%2B33.492.954.912>
        <tel:%2B33.492.954.912>
                    <tel:%2B33.492.954.912>    skype: andreas.fabri

                        --
                        You are currently subscribed to cgal-discuss.
                        To unsubscribe or access the archives, go to
                        https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>
                    <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>>
                        <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>
                    <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>>>





                --
                You are currently subscribed to cgal-discuss.
                To unsubscribe or access the archives, go to
                https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>
                <https://sympa.inria.fr/sympa/info/cgal-discuss
        <https://sympa.inria.fr/sympa/info/cgal-discuss>>






    --
    You are currently subscribed to cgal-discuss.
    To unsubscribe or access the archives, go to
    https://sympa.inria.fr/sympa/info/cgal-discuss
    <https://sympa.inria.fr/sympa/info/cgal-discuss>





--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss






Archive powered by MHonArc 2.6.18.

Top of Page