Commit Graph

518 Commits

Author SHA1 Message Date
Jane Tournois 122db0e026 don't backup infinite cells 2014-01-16 11:35:04 +01:00
Jane Tournois 8f778be277 comment the assertion that checks if sliver_cache has the same value as the computed sliverity value, because it goes against the cells meta-data backup that we are doing to speed-up and add consistency to revert_move (used when perturber failed to improve the quality of the mesh locally (sliverity may have changed of 10^-15 or so, unfortunately)) 2014-01-16 11:35:04 +01:00
Jane Tournois 14ac2ccc09 add comment 2014-01-16 11:35:03 +01:00
Jane Tournois 0798f093d4 hardcode the use of std::size_t as id_type for PVertex 2014-01-16 11:35:03 +01:00
Jane Tournois 11a8050381 add a template parameter to decide whether we store c3t3 info or not in the cells meta-data backup 2014-01-16 11:35:02 +01:00
Jane Tournois 0609558919 avoid recomputing the c3t3 after each revert_move in sliver perturber.
The meta-data such as sliver_cache and c3t3 info are stored in an
auxiliary data, and restored after revert_move
2014-01-16 11:35:02 +01:00
Jane Tournois 7ad8520d8f Merge branch 'Mesh_3-add_sliver_perturber_criteria-GF-old' into Mesh_3-add_sliver_perturber_criteria-GF 2013-12-10 15:58:46 +01:00
Jane Tournois 3d3bad7734 attempt to fix the bug about CGAL_assertion(!slivers.empty()) in Sliver_perturber.h
there might be inconsistencies (of a few bits) between sliver cached values (64 bits) and values computed on the fly (potentially 80 bit on some 32 bits platforms)
2013-12-10 15:49:52 +01:00
Laurent Rineau 2a345ad60a Fix an assertion when the x86 coprocessor is used
See the comment in the file
2013-12-10 15:20:34 +01:00
Laurent Rineau 675f5b8b14 Fix a warning (unused variable) 2013-12-10 15:20:34 +01:00
Jane Tournois 7061eee190 fix a warning about missing virtual destructor 2013-12-10 14:54:28 +01:00
Jane Tournois 747ef0eade fix access to number_of_cells() and number_of_facets() in C3t3 (these functions are documented) 2013-12-06 10:54:48 +01:00
Jane Tournois a78c94b81b fix compilation of Mesh_3 demo using new features 2013-11-18 16:11:32 +01:00
Laurent Rineau 74e1bad5a4 fix a warning 2013-10-31 11:08:30 +01:00
Laurent Rineau 6561b0d811 Fix warnings
- Twice unused typedefs (because their uses were commented)
- Once member variables initialized in wrong order
2013-10-24 17:22:42 +02:00
Jane Tournois 9f90f2a7de remove useless const in return types 2013-10-24 17:11:42 +02:00
Jane Tournois c557164a44 Merge branch 'Mesh_3-add_sliver_perturber_criteria-GF-old' into Mesh_3-add_sliver_perturber_criteria-GF 2013-10-24 16:28:10 +02:00
Jane Tournois 0a7ea58e1f rename K to Gt because it does not need to be a kernel 2013-10-24 14:22:36 +02:00
Jane Tournois 6f47edcbef fix use of K (defined in Sliver_criterion) 2013-10-24 11:53:54 +02:00
Sébastien Loriot 5f495e579e fix gcc compilation issues 2013-10-24 11:14:04 +02:00
Jane Tournois 145f01a8f6 reset sliver_cache at the end of perturbation to have them free to perturb wrt another criterion now 2013-10-22 12:50:39 +02:00
Jane Tournois a5f7c5ab7f add boolean template parameter to Sliver_criterion, that decides if
the sliver_cache should be updated by operator()(cell_handle).

It can be useful when we write a complex criterion that implies two simpler
criteria for example, and we want the cache to be updated for only one of them
(to avoid inconsistencies)

+ add a sliver_cache reset because valid_move does re-compute the cache
2013-10-21 15:24:24 +02:00
Jane Tournois 064225638b Revert "fix compilation of my previous commit in debug mode"
This reverts commit 36f92c50a3.

And fix it for compilation on debug mode
2013-10-18 14:33:55 +02:00
Jane Tournois 5b50dfad86 make use of the sliver_cache in sliver_criteria
warning : this assumes that sliver_cache stores the value corresponding to this criterion!
2013-10-18 13:01:57 +02:00
Jane Tournois 36f92c50a3 fix compilation of my previous commit in debug mode 2013-10-18 13:00:55 +02:00
Jane Tournois ca249eb5f9 add an operator()(Cell_handle) to Sliver_criterion
this implies changing the template parameters of Sliver_criterion,
which now needs to know the Triangulation type
2013-10-18 12:38:21 +02:00
Jane Tournois ec2b35e398 make sure the same default values as in master are used
- default_value (=12) for perturber,
- max_value (=90) for exuder
2013-10-17 15:48:39 +02:00
Jane Tournois 80f3618be8 complete previous commit 2013-10-17 12:18:04 +02:00
Jane Tournois ae851c9747 remove sliver_bound_ member variable from the perturber and exuder
This variable is now stored exclusively in the sliver_criterion choosen for optimization.
And - remove some default parameters to avoid inconsistencies
2013-10-17 11:19:37 +02:00
Laurent Rineau fcbbe713d5 No longer deprecate Mesh_cell_base_3
Compact_mesh_cell_base_3 has a different API than Mesh_cell_base_3. Unless
one uses the default template parameters, the new API is less
convenient. We cannot deprecate Mesh_cell_base_3 so easily.
2013-10-16 16:34:41 +02:00
Jane Tournois 864fbaae36 Merge remote-tracking branch 'remotes/origin/Mesh_3-fix_perturber-GF' into Mesh_3-add_sliver_perturber_criteria-GF
Conflicts:
	Mesh_3/include/CGAL/Mesh_3/C3T3_helpers.h
2013-10-15 11:56:25 +02:00
Laurent Rineau 1855c174d6 Reverting "a second intrusive list of cells should not be used this would induce some bugs in global optimizers (because modified_cells should be an intrusive list, and we should not modify previous_intrusive and next_intrusive for cells that are not inside this list"
Revert "a second intrusive list of cells should not be used"

This reverts commit 8674523d10.
2013-10-14 17:16:52 +02:00
Laurent Rineau 924aa6a01e Fix whitespace in recent commits 2013-10-14 17:12:54 +02:00
Laurent Rineau 240385d011 Add expensive assertions to check the circumcenter cache 2013-10-14 17:12:54 +02:00
Jane Tournois 13ed8627c2 fix check_surface_mesh topology criterion
the vertex that is moving should not be taken into account when we compare the list of vertices of the move conflict zone before/after the move
2013-10-14 17:08:00 +02:00
Jane Tournois 8674523d10 a second intrusive list of cells should not be used
this would induce some bugs in global optimizers (because modified_cells should be an intrusive list, and we should not modify previous_intrusive and next_intrusive for cells that are not inside this list
2013-10-14 17:05:05 +02:00
Jane Tournois 14d78bea51 remove set_sliver_value inside debugging code to have the same behavior with and without the macro being defined 2013-10-14 15:55:41 +02:00
Jane Tournois 8744e35474 add more expensive debugging code 2013-10-11 16:29:43 +02:00
Jane Tournois 4a25da8353 add expensive debugging code 2013-10-11 16:19:34 +02:00
Jane Tournois 85beea510e use Sliver_criterion_value functor inside Is_sliver 2013-10-11 15:08:40 +02:00
Laurent Rineau 7ef932d79b add assertion to check cache validity 2013-10-11 15:04:25 +02:00
Jane Tournois 46b39b0377 Merge branch 'Mesh_3-add_sliver_perturber_criteria-GF-old' into Mesh_3-add_sliver_perturber_criteria-GF
Conflicts:
	Mesh_3/include/CGAL/Mesh_3/C3T3_helpers.h
2013-10-10 11:59:09 +02:00
Laurent Rineau 3f88b4d746 Merge remote-tracking branch 'origin/Mesh_3-fix_perturber-GF'
- In Mesh_3, fix the sliver perturber
    - the invalidatation of caches,
    - the topological check (in check_surface_mesh) was not enough.

Tested in CGAL-4.3-Ic-194
2013-10-09 14:51:32 +02:00
Laurent Rineau 2c78278fdc Fix a compilation bug with older version of g++, and Boost Lambda
The error was triggered by the following code in CGAL/Mesh_3/C3T3_helpers.h:

  template <typename CellForwardIterator>
  void reset_circumcenter_cache(CellForwardIterator cells_begin,
                            CellForwardIterator cells_end) const
  {
    namespace bl = boost::lambda;
    std::for_each(cells_begin, cells_end,
                  bl::bind(&Cell::invalidate_circumcenter, *bl::_1) );
  }

See for example test results here:
CGAL-4.3-Ic-193/Polyhedron_Demo/TestReport_lrineau_i686_Linux-2.6_g++-4.1.2_CentOS-5.1.gz
2013-10-08 16:55:58 +02:00
Laurent Rineau 85d880efc1 Constify two methods that can be const 2013-10-08 16:54:34 +02:00
Jane Tournois 72deb04640 fix compilation on windows
(cherry picked from commit 8ec9e7e2cfd51edf026807059343b4220093611e)
2013-10-08 16:51:26 +02:00
Laurent Rineau 8edeb9095f Add more comment debug outputs (for future debugging) 2013-10-08 16:11:19 +02:00
Laurent Rineau 7248da1509 Fix the slivers perturber
The testsuite showed that our previous patch was not correct: the sliver
cache is modified by a call to C3T3_helper::min_sliver_in_c3t3_value() when
its parameter use_cache=false. For that reason, the resetting of sliver
caches was not done at the right place in update_mesh_no_topo_change().
2013-10-08 14:23:05 +02:00
Laurent Rineau 55153e58b1 Fix a warning about unused local typedef 2013-10-04 18:01:17 +02:00
Jane Tournois 245250dfad do not test inside_protecting_balls for ODT and Lloyd because it slows down the algorithm and never happens for Lloyd and ODT (experimentally tested. Maybe it can happen some day...) 2013-10-02 12:59:03 +02:00
Laurent Rineau f06d2057d6 Uniformize my uses of std::setprecision 2013-09-27 17:58:00 +02:00
Laurent Rineau 67b20e8a19 Fix the sliver perturber
- the invalidatation of caches,
- the topological check (in check_surface_mesh) was not enough.
2013-09-27 17:52:57 +02:00
Jane Tournois dd25eb2cfd add simple check to avoid some comparisons 2013-09-26 16:45:12 +02:00
Jane Tournois 00bad608c5 add helper function 2013-09-26 16:18:48 +02:00
Sébastien Loriot a05c50e83a fix backward compatibility of Mesh_3 with intersection API v1 2013-09-25 18:13:11 +02:00
Jane Tournois 8a59b57dc2 Revert "set vertex weight in exuder by using old_v->set_point(p) instead of insert(p)"
This reverts commit f56360f94b.

Note : connectivity can change with "insert", not with "set_point",
so this commit was wrong
2013-09-24 13:58:40 +02:00
Jane Tournois e59c57f08e make sure that global optimizers (lloyd and odt) don't move vertices inside protecting balls 2013-09-23 16:53:44 +02:00
Jane Tournois 85eecc920f make sure that the perturber does not insert any vertex inside a protecting ball 2013-09-23 16:35:09 +02:00
Andreas Fabri 9ed4f837c3 Merge branch 'CGAL-compilable_headers-GF'
The conflict was about whitesapce
Approved by the release manager

Conflicts:
	Polyhedron/include/CGAL/Polyhedron_copy_3.h
2013-09-23 14:50:17 +02:00
Jane Tournois f56360f94b set vertex weight in exuder by using old_v->set_point(p) instead of insert(p) 2013-09-20 17:02:36 +02:00
Jane Tournois c14ea9db07 rename variable because criterion is not necessarily an angle (anymore) 2013-09-20 16:16:57 +02:00
Jane Tournois 6bc75327f5 use new sliver criterion functions before_move and valid_move to decide whether a move should be made or not 2013-09-20 16:04:26 +02:00
Laurent Rineau 45f2b7634f Merge branch 'Mesh_3-fix_assertion_in_the_protection_code-lrineau'
Fix the test of an assertion in <CGAL/Mesh_3/Protect_edges_sizing_field.h>…

Tested in CGAL-4.3-Ic-174.

Approuved for CGAL-4.3 by the Release Manager.
2013-09-18 15:07:56 +02:00
Laurent Rineau 930a7862d4 Fix the patch when CGAL_NO_ASSERTIONS is defined. 2013-09-17 11:10:42 +02:00
Laurent Rineau 7b6fb384d3 Remove extra semi-colons 2013-09-17 11:03:17 +02:00
Laurent Rineau 34b13affef Try to "fix" an assertion that compares a computed value to another
On the paper, dleft_frac must be greater that 1.0. But with rounding
errors, it can be slightly lower. Let's try to compare it with
1.0-2*ulp(1.0).

I do not like that sort of hack but I do not know what to do best.
2013-09-17 10:58:38 +02:00
Andreas Fabri aa1d4e57f2 Remove unused variable name 2013-09-17 09:36:35 +02:00
Jane Tournois 69cc217279 add a boolean option to valid_move to accept a move if the new value is lower than the old one, but above the sliver_bound 2013-09-16 11:28:59 +02:00
Jane Tournois 1a449621b4 fix access to static max_value 2013-09-16 11:25:08 +02:00
Andreas Fabri 6c547e5663 Mainly added includes 2013-09-13 22:24:30 +02:00
Andreas Fabri 3f93665e03 Suppress a VC++ warning with a pragma 2013-09-12 12:49:11 +02:00
Jane Tournois 79f2337237 add more to sliver_criteria to complete before_move and valid_move 2013-09-10 17:27:47 +02:00
Jane Tournois da6870aab6 add functions to the sliver_criterion concept to check if a move should be accepted or not (not degrading criteria) 2013-09-10 15:43:49 +02:00
Jane Tournois 9e38187dd6 replace return type of Sliver_criterion's operator() from double to boost::optional<double>, and updating code consequently
for now we suppose that operator() always returns a valid value
2013-09-10 15:30:38 +02:00
Jane Tournois efd97dd121 add virtual functions to Sliver_criterion and use them :
- get_max_value() to be able to keep the abstract class and derivatives properly
- get_perturbation_unit() to replace "delta" in Sliver_perturber (progressive version of perturber is running for bound = i*delta for i >= 1)
2013-09-10 11:52:08 +02:00
Jane Tournois 3cac42e78e remove use of default constructor 2013-08-29 16:39:30 +02:00
Jane Tournois 5fd466cb53 fixes previous commit constness issues 2013-08-13 12:34:21 +02:00
Jane Tournois ce80651f43 add boost parameter perturbation_vector_ to perturb_mesh_3,
to be able to add your own perturbation, that should be an Abstract_perturbation (see vertex_perturbation.h)
2013-08-12 15:00:58 +02:00
Jane Tournois aefda6b8c1 use SliverCriterion in CGAL::perturb_mesh_3.
a boost parameter sliver_criterion is added to perturb_mesh_3, and
by default, sliver_bound is used in the min_dihedral_criterion, as before
2013-08-09 17:15:28 +02:00
Laurent Rineau 7552d76c1b Revert the following commit for that file
| commit 01ee3e94b6
  | Author: Laurent Rineau <laurent.rineau@cgal.org>
  | Date:   Tue Jun 25 12:53:24 2013 +0200
  |
  |     Use 'std::istream::operator!()' twice to replace 'operator bool()' (C++11 only)
  |
  |     Fixes a compilation error from clang:
  |
  |     include/CGAL/IO/File_binary_mesh_3.h:39:10: error: no viable conversion from 'std::ostream' (aka 'basic_ostream<char>') to 'bool'
  |       return os << c3t3;
  |              ^~~~~~~~~~

The return type of operator<< os std::ostream&, and not bool!
2013-08-07 14:16:39 +02:00
Michael Hemmer 30e0b2d3f3 add missing include 2013-07-25 10:05:24 +02:00
Sébastien Loriot 2dbf0b4bf7 the grid to do inside-test is no longer needed, a better version is now used
the old code can still be accessed in the file:
Operations_on_polyhedra/include/CGAL/Point_inside_polyhedron_3_old.h
2013-07-10 10:42:07 +02:00
Sébastien Loriot 20446fa777 Merge branch 'Mesh_3-using_new_inside_polyhedron-local'
Successfully tested in CGAL-4.3-Ic-85
Approved by the release manager

Conflicts:
	Mesh_3/include/CGAL/Polyhedral_mesh_domain_3.h
2013-07-09 17:34:15 +02:00
Clement Jamin 501484f509 Merge branch 'Mesh_3-fix_documentation-cjamin'
Small feature: https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Small_Features/Documentation_fix_in_Mesh_3
Approved by the release manager
2013-07-08 16:09:53 +02:00
Clement Jamin 98cfba361c Fix Rebind_TDS bug
Conflicts:

	Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h
2013-07-05 10:50:17 +02:00
Clement Jamin 97bef9652a Merge branch 'Mesh_3-fix_documentation-cjamin-old' into Mesh_3-fix_documentation-cjamin 2013-07-04 14:41:33 +02:00
Laurent Rineau e3aad4d079 Fix warnings 2013-06-26 14:49:03 +02:00
Laurent Rineau c6a57e79f1 Fix a warning about unused parameters 2013-06-25 17:43:17 +02:00
Laurent Rineau 01ee3e94b6 Use 'std::istream::operator!()' twice to replace 'operator bool()' (C++11 only)
Fixes a compilation error from clang:

include/CGAL/IO/File_binary_mesh_3.h:39:10: error: no viable conversion from 'std::ostream' (aka 'basic_ostream<char>') to 'bool'
  return os << c3t3;
         ^~~~~~~~~~
2013-06-25 12:53:24 +02:00
Sébastien Loriot 4620b38ffd update include path 2013-06-24 17:27:41 +02:00
Laurent Rineau 27f24bd350 Remove two useless functions 2013-06-24 17:00:04 +02:00
Laurent Rineau 9bee0e2f6a Fix a bug when a cycle is covered by only two balls
When the first point of the cycle is inserted, the radius of its ball is
limited by the third of the distance to a "midpoint" of the cycle.
2013-06-24 16:59:45 +02:00
Jane Tournois 1224038bb2 fix license issues 2013-06-24 14:13:08 +02:00
iyaz 5411669c88 Integrate point inside query to Polyhedral_mesh_domain_3 2013-06-24 13:38:44 +02:00
Sébastien Loriot 0f116f968a use the new return type of Intersect_3 2013-06-21 13:14:46 +02:00
Sébastien Loriot 1a8647a195 fix copy-paste error 2013-06-21 12:49:57 +02:00
Sébastien Loriot 5f43373646 use the new return type of intersection 2013-06-21 12:43:37 +02:00
Sébastien Loriot 02bdcc8603 Revert "remove Robust_intersection_traits_new"
This reverts commit 77b6b2e008.
2013-06-21 12:42:12 +02:00
Sébastien Loriot 77b6b2e008 remove Robust_intersection_traits_new 2013-06-21 12:39:52 +02:00
Sébastien Loriot 483440c8f2 use new return type of intersection 2013-06-21 12:39:20 +02:00