Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Inheriting from Extended_homogeneous

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Inheriting from Extended_homogeneous


Chronological Thread 
  • From: Johannes Ulén <>
  • To:
  • Subject: Re: [cgal-discuss] Inheriting from Extended_homogeneous
  • Date: Tue, 24 Apr 2012 09:14:51 +0200

Thank you for the reply.
Is there a way to change the point construct?

Let me very breifly explain what I want to do and my problem might
become clearer.
1) I want to create a polytope where each vertex starts with boolean
value set to false.
2) For each vertex which is false I do some calculations and perform
an intersection with a halfspace. The polytope is now reshaped and has
more vertices.
3) A certain opertaion will mark a vertex as "true" and I then dont
need to bother with it anymore.

My programing instict tells me that the easiet way to to do this would
be to change point class, but I might be wrong?

-- Johannes


Den 24 april 2012 08:37 skrev Sebastien Loriot (GeometryFactory)
<>:
> On 04/23/2012 02:55 PM,
>
> wrote:
>>
>> I'm trying the add one property to the point class.
>>
>> By help from  StackOverflow I was directed to Manual Chapter 11.5
>> Extensible
>> Kernel using this I wrote the code below.
>>
>> The code  will not compile and I get the error:
>> ‘typename CGAL::Extended_homogeneous::Base’ names
>> 'CGAL::Extended_homogeneous::Base’, which is not a class template|
>>
>> == CODE ==
>> #include<CGAL/Extended_homogeneous.h>
>>
>> template<  typename K_, typename K_Base>
>> class My_base  : public K_Base::template Base<K_>::Type
>> {
>>   typedef typename K_Base::template Base<K_>::Type   OldK;
>>
>> public:
>>   typedef K_                               Kernel;
>>
>>   template<  typename Kernel2>
>>   struct Base { typedef My_base<Kernel2, K_Base>   Type; };
>>  };
>>
>> template<  typename RT_>
>> struct MyKernel  : public
>> CGAL::Type_equality_wrapper<My_base<MyKernel<RT_>,
>> CGAL::Homogeneous<RT_>  >,  MyKernel<RT_>  >
>> {};
>>
>> #include<CGAL/Nef_polyhedron_3.h>
>> typedef MyKernel<CGAL::Gmpz>    Kernel;
>>
>> typedef CGAL::Nef_polyhedron_3<Kernel>  Nef_Polyhedron;
>> typedef Nef_Polyhedron::Plane_3  Plane;
>>
>> int main()
>> {
>>   Nef_Polyhedron half_space(Plane(1,1,1,1), Nef_Polyhedron::EXCLUDED);
>>
>>   return 0;
>> }
>> ====
>>
>> If the inhertiance is changed to "public K_Base::Base::template
>> B<K_>::Type" it
>> will compile but Then I miss the propeties from Extentensions I guess?
>> Because
>> I get the error "Constructor not available for this kernel" when I run the
>> program.
>
>
> The point constructors are not changed by this mechanism. This means that
> only those documented are available. If you want to initialize your extra
> data, you need to first create an object of type My_point and then init a
> point of type MyKernel::Point_3 with it.
>
> The class in the kernel is a kind of interface while My_point is the
> representation.
>
> Sebastien.
>
>
>
>
>
> --
> You are currently subscribed to cgal-discuss.
> To unsubscribe or access the archives, go to
> https://lists-sop.inria.fr/wws/info/cgal-discuss
>



--
- Johannes



Archive powered by MHonArc 2.6.16.

Top of Page