Commit Graph

198 Commits

Author SHA1 Message Date
Laurent Rineau 96319a1365 reintegrate '^/branches/features/Triangulation_2_UseTraitsInHierarchy-GF' 2012-11-07 14:59:00 +00:00
Sébastien Loriot ef81760b85 macro renaming 2012-11-02 08:58:21 +00:00
Laurent Rineau ef5b895a93 merge from next 2012-11-02 08:49:12 +00:00
Sébastien Loriot 6ff851e791 macro renaming 2012-11-02 08:44:08 +00:00
Sébastien Loriot 6da5e9e84d unrecursive version of propagating_flip and propagate_conflicts
for CDT2 and DT2 using 100 recursive calls before switching to
a local stack in a function.
2012-10-30 13:16:52 +00:00
Sébastien Loriot 720244f8f8 apply the same choice as the one made in r73262 for CDT_2 2012-10-24 21:39:38 +00:00
Sébastien Loriot cd165546fc Remove all alternatives to propagating_flip to keep one that allow to use the call
stack for at most 100 recursive calls and switch to a non-recursive function
that uses a local std::stack to emulate the call stack.

Benchmarks show the following results:

7 runs on 10,000,000 random in unit circle points

43.67074 : Old implementation
43.91474 : use stack for 100 first call then non-recursive with stack
44.07075 : use stack for 100 first call then non-recursive with vector
44.57079 : Local vector
45.0068 : Local stack
45.87886 : Local fixed size array
46.3829 : Local "home-made" small vector
53.41534 : Thread-local vector
2012-10-24 21:35:17 +00:00
Sébastien Loriot a7b02bd716 merge experimental-packages/Triangulation_2-unrecursive 2012-10-24 09:26:32 +00:00
Sébastien Loriot 5c4ae5d477 windows mixes up Fb template parameter with nested Fb type from base class 2012-08-22 06:48:49 +00:00
Laurent Rineau db194534c7 First big patch to fix -Wunused-local-typedefs
-Wunused-local-typedefs is a new warning flag of gcc-4.7, and it will enabled
 by -Wall since gcc-4.8 (not yet released).

The fix is a big set of removals of unused typedefs (or comments, or moves,
depending on the context).
2012-08-01 13:29:16 +00:00
Marc Glisse a758751485 Remove / comment out unused local typedefs. Fix one place where FT was used instead of RT (homogeneous coordinates, probably never compiled). 2012-07-28 06:21:06 +00:00
Sébastien Loriot 3e750c6fd7 temporary hack to work around assertion 2012-07-17 12:08:49 +00:00
Laurent Rineau 49404f75f5 Improved patch
The Constraint_hierarchy is now templated by T, an anonymous type (that is
a Vertex_handle when the constraint hierarchy is used in Ct_plus_2), and a
Compare operator, that have a comparison member function:
  bool operator()(T, T);

In Ct_plus_2, the Compare operator passed to the Constraint_hierarchy
compares the vertices with a Less_xy_2, implemented by Less_x_2, and
Less_y_2.

The test test/Triangulation_2/include/CGAL/_test_cls_hierarchy_2.h has been
tweaked, to check that the type T passed in the hierarchy no longer needs
to have a point() member function, as it was before May 2010 (when GF has
determinized the Cdt_plus_2 using too simple patch).
2012-06-28 09:16:23 +00:00
Andreas Fabri 7cb640d05d The Constraint_hierarchy_2 gets an additional LessXY_2 functor as template argument so that it no longer applies operator<(Point,Point) 2012-06-25 10:11:56 +00:00
Philipp Möller 5f6b09c484 Fix types of loop counters to size_t. 2012-06-20 09:15:34 +00:00
Sébastien Loriot 19857458b6 deprecation warnings 2012-05-28 07:28:03 +00:00
Menelaos Karavelas 9201c1f2c3 implementation and documentation for the Rebind_vertex and Rebind_face small
feature of the TDS_2 concept.
The release manager has approved the commit directly into the next branch.
2012-05-24 14:07:56 +00:00
Laurent Rineau 95bec3999c Use Unique_has_map instead of std::map (patch from Andreas Fabri)
The gain on copies of T2 or T3 is the following:


afabri@klimt /cygdrive/c/cgal/next/Triangulation_3/benchmark/Triangulation_3
$ ./copy 1000000 2
36.806 sec

afabri@klimt /cygdrive/c/cgal/next/Triangulation_3/benchmark/Triangulation_3
$ ./copy 1000000 2
4.865 sec

The benchmarck copy.cpp is the following (not commited):

#define  CGAL_T3_HASH
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h>
#include <CGAL/Timer.h>
#include <CGAL/point_generators_3.h>


#include <iostream>
#include <fstream>
#include <string>
#include <vector>

typedef CGAL::Exact_predicates_inexact_constructions_kernel  K;
typedef CGAL::Delaunay_triangulation_3<K> Delaunay;
typedef K::Point_3                                     Point;
typedef CGAL::Creator_uniform_3<double,Point>  Creator;



int main(int argc, char **argv)
{
  int n=1000000;
  int rep=100;
  if (argc>=2)
    n=atoi(argv[1]);
  if (argc>=3)
    rep=atoi(argv[2]);
  std::vector<Point> points;
  points.reserve(n);  
  CGAL::Random_points_in_sphere_3<Point,Creator> g(1);
  CGAL::copy_n( g, n, std::back_inserter(points));
  Delaunay original;
  original.insert(points.begin(),points.end());
  
  double res = 0;
  for (int r=0;r<rep;++r){
    CGAL::Timer t;    t.start();
    Delaunay delaunay=original;
    t.stop();
    res+=t.time();
  }

  std::cout << res << std::endl;
            
  return 0;
}
2012-03-30 12:37:19 +00:00
Sébastien Loriot 498c0a6e1e Make the insert-by-range function more permissive
The condition is now to be convertible to the point type, pair<point,info>,...
This was the behavior before the insert-by-range-with-info methods were
introduced.
2012-01-24 17:25:20 +00:00
Olivier Devillers 1eb0ad5c1b optimize 2012-01-24 16:24:56 +00:00
Olivier Devillers 8722c292d7 replace inexact_locate by has_inexact_negative_orientation 2012-01-24 09:45:13 +00:00
Sébastien Loriot a7456a2736 merge from next 2012-01-16 15:28:51 +00:00
Laurent Rineau 0e3de8807e Fix performances of Triangulation_2 with EPEC
There was a performance degradation between CGAL-3.7 and CGAL-3.8, when
Triangulation_2 is used with EPEC. This patch fixes the issue. Using a
functor that is specialized for EPEC, in inexact_orientation, to_double is
not called on p.x() but on p.approx().x().
2012-01-16 13:45:16 +00:00
Sébastien Loriot fca9a7bf54 *add operator>> for Constrained_triangulation_2
*update demo
*add save CDT for demo

see the related small feature:
https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Add_read_istream_for_constrained_triangulation.
2012-01-16 13:32:05 +00:00
Laurent Rineau 8f59fd9592 Turn QPL into LGPLv3+ 2012-01-13 16:33:35 +00:00
Laurent Rineau 5b5dd33848 merge changes from next 2012-01-09 12:33:39 +00:00
Sébastien Loriot eddf2131d6 merge from next 2011-12-30 11:09:29 +00:00
Sébastien Loriot 59b50cc467 make static variable in remove thread_safe.
I choose this solution since making the container global variable of
the class penalize classes that do not use remove functions.
The overhead introduced is small (less than 2-3% of the total remove time).
2011-12-29 16:35:40 +00:00
Laurent Rineau 6ed56d75b5 merge from next 2011-10-25 15:48:02 +00:00
Olivier Devillers 5f4f11e2df not turning always in the same manner in a triangle speed up the walk (for long walks) 2011-10-25 11:31:01 +00:00
Sébastien Loriot 91a5327fa8 change LGPLv2 -> LGPLv3 2011-10-10 13:48:25 +00:00
Olivier Devillers ef043927fd too conservative check removed, for fast removal in delaunay 2d 2011-09-06 15:21:27 +00:00
Sébastien Loriot 98ddbf9c7e merge packages Spatial_sorting, Triangulation_2 and Triangulation_3 from branch spatial_sorting-add_info-sloriot 2011-05-24 15:48:31 +00:00
Marc Glisse 19b75ba29c Remove unused lines 2011-04-12 10:08:00 +00:00
Laurent Rineau 5604fef79f Move <CGAL/apply_to_range.h> to trunk/Triangulation_2...
... to avoid that useful file to be removed by error if we remove
trunk/Qt_widget one day (but also because it is more logical).
2011-03-29 09:38:36 +00:00
Laurent Rineau fc2e05e67d Triangulation_2_projection_traits_3 is now a model of DelaunayMeshTraits_2. 2011-03-23 17:28:51 +00:00
Sébastien Loriot 6340a510c5 merge the code for Triangulation_2 to insert range of points with info
protected by macro CGAL_TRIANGULATION_2_DONT_INSERT_RANGE_OF_POINTS_WITH_INFO
2011-01-11 07:40:47 +00:00
Sébastien Loriot 3e04fb16fb merge packages related to projection traits into the trunk. 2011-01-11 07:18:36 +00:00
Sébastien Loriot 5f674516b0 add precondition to dual functions to check that objects are from the triangulation. 2010-12-23 15:55:50 +00:00
Laurent Rineau 96162627aa Merge the following small features in trunk:
https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Remove_cluster
  https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Structural_filtering

Merge also a partial support of:
  https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Rt::vertices_inside_conflict_zone
    (vertices_inside_conflict_zone" is added in Regular_triangulation_3,  without documenting it)
2010-12-10 17:02:10 +00:00
Laurent Rineau 1caaf5665c - triangulate_half_hole was quadratic because std::list::size is a linear
function (not with all compilers, but at least with g++-4.4).

I have a very nasty test case where list_edges.size is more than
700000. With a quadratic function, mmy cruncher computer was not even able
to insert *one* constraint in half a day.


- Remove also the unused variable vb, and the initialization of tempo
(which is re-initialized a second time later, without using its first
value).
2010-11-23 11:07:42 +00:00
Andreas Fabri a9fc8fc464 Remove unused variable 2010-11-22 07:56:00 +00:00
Laurent Rineau 168d31b6d6 Commit that feature directly to trunk:
https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Triangulation_2::mirror_edge%28Edge%29
Code + manual + small test

Why directly to trunk: the patch is very low risk, I have ran the test
suite and the manual testsuite, and there is already a Triangulation_2
package in candidate packages (cannot have two candidates for one package).
2010-11-16 17:27:06 +00:00
Laurent Rineau e90e28169a Apply the same patch as for Constrained_triangulation_2.h in revision 59626
to Constrained_triangulation_plus_2.h:
  |------------------------------------------------------------------------
  |r59626 | lrineau | 2010-11-10 19:42:53 +0100 (Wed, 10 Nov 2010) | 3 lines
  |
  |Fix an infinite loop in CDT<EPIC, TDS, Exact_predicates_tag>
  |Add a test, that know passes, and previously failed.
  |
  |------------------------------------------------------------------------
2010-11-12 10:39:22 +00:00
Laurent Rineau 8aaa43a8eb Cosmetic: minimize the diff between
Constrained_triangulation_2::insert_constraint 
    and
  Constrained_triangulation_plus_2::insert_subconstraint

(Add a comment, adjust the whitespace)
2010-11-12 10:26:33 +00:00
Laurent Rineau ecfd82e287 Fix an infinite loop in CDT<EPIC, TDS, Exact_predicates_tag>
Add a test, that know passes, and previously failed.
2010-11-10 18:42:53 +00:00
Laurent Rineau ea084037e3 Revert those commits:
| ------------------------------------------------------------------------
  | r59165 | afabri | 2010-10-11 15:27:39 +0200 (Mon, 11 Oct 2010) | 1 line
  | Changed paths:
  |    M /trunk/Triangulation_2/include/CGAL/Triangulation_euclidean_traits_xy_3.h
  |    M /trunk/Triangulation_2/include/CGAL/Triangulation_euclidean_traits_xz_3.h
  |    M /trunk/Triangulation_2/include/CGAL/Triangulation_euclidean_traits_yz_3.h
  | 
  | Use the renamed class which now is in the Kernel package
  | ------------------------------------------------------------------------
  | r59159 | afabri | 2010-10-11 15:14:31 +0200 (Mon, 11 Oct 2010) | 1 line
  | Changed paths:
  |    D /trunk/Triangulation_2/include/CGAL/internal/Triangulation_euclidean_traits_projected_3.h
  | 
  | Move implementation of Projection_traits from Triangulation_2 to Kernel
  | ------------------------------------------------------------------------
Now the work is in a branch.
2010-11-04 11:04:12 +00:00
Laurent Rineau 3b66f50862 Make operator<< of Weighted_point compatible with the pretty-mode (of
CGAL::set_pretty_mode).
2010-10-14 13:52:18 +00:00
Andreas Fabri ef9882a4e4 Use the renamed class which now is in the Kernel package 2010-10-11 13:27:39 +00:00
Andreas Fabri 335fd1825f Move implementation of Projection_traits from Triangulation_2 to Kernel 2010-10-11 13:14:31 +00:00