Corners incidences
- Now corners are really numbered correctly from 1 to n (before they all
had 0 as corner_index).
- One can retrieve the set of adjacent surface patches from a corner.
Modify the use of macros
The semantic of CGAL_MESH_3_NEW_ROBUST_INTERSECTION_TRAITS is split into
two macros:
- CGAL_MESH_3_NEW_ROBUST_INTERSECTION_TRAITS itself,
- CGAL_MESH_3_NO_LONGER_CALLS_DO_INTERSECT_3
A new file <CGAL/Mesh_3/config.h> is now responsible for the logic like "if
that macro is enabled, then enable that one too".
Protect the use of Robust_intersection_traits_3_new by a macro
The macro is named CGAL_MESH_3_NEW_ROBUST_INTERSECTION_TRAIT.
I have also extended the error message we got if there is a problem with
the intersection returned by the AABB tree.
When CGAL_MESH_3_NEW_ROBUST_INTERSECTION_TRAITS is defined, the
Construct_intersection functor is always called, and Do_intersect_3 no
longer is. An assertion must be removed, because Construct_intersection can
be called on a query object that does not intersect the surface.
r66716 from Mesh_3-experimental-GF
Even if there is an AABB tree dedicated to the bounding polyhedron, copy
the facets of that bounding polyhedron to the global AABB tree.
r62302 from Mesh_3-experimental-GF
The macro CGAL_MESH_3_NEW_ROBUST_INTERSECTION_TRAITS must be defined.
Note : Fix the detection of an empty intersection
see r66579, r66593, r66594 and r66595 of Mesh_3-experimental-GF
Final commit message :
"
Remove a warning
By the way, with static filter for Angle_3, the results are:
== Results ==
K is EPIC
RIT_new is the new implementation of Robust_intersection_3
RIT is the old implementation of Robust_intersection_3
The prefix "s " means timing for Segment_3
The prefix "r " means timing for Ray_3
s K time: 0.121981
r K time: 0.122982
s RIT_new time: 0.118982
r RIT_new time: 0.108983
s RIT time: 2.17967
r RIT time: 2.13168
WITH INTERSECTION:
s K time: 0.202969
r K time: 0.202969
s RIT_new time: 0.46293
r RIT_new time: 0.408938
s RIT time: 3.2655
r RIT time: 3.25051
Conclusion: Robust_intersection_traits_3_new is a great success!
When the intersection is empty, it wins over EPIC by a small percentage
(and wins over RIT by a great factor ~20), and when the intersection is a
point, it wins over Robust_intersection_traits_3 by a factor 8.
"
In global optimizers : vertices that move less than the freeze_ratio (already in documentation) stop moving for the next iterations
(merges lots of commits from Mesh_3-experimental-GF)
This patch tries not to apply the general rule that the size of protecting
balls is a linear interpolation of the size of protecting balls at
corner. When the curve segment is long enough, pick a point at the middle
and choose a new size.
When insert_balls is called recursively, one needs to call its version with
all parameters. The reason is that d_sign is very important, if the curve
is a sub-curve of a cycle, otherwise that may loop!
CGAL_MESH_3_PROTECTION_NON_LINEAR is the default.
One can still deactivate it with the macro
CGAL_MESH_3_NO_PROTECTION_NON_LINEAR.
(r64518, r64580, r64581, r64582 from Mesh_3-experimental-GF merged in one commit)
Make C3t3 conform to its documentation: C3t3::facets_in_complex_end takes a
Surface_patch_index as parameter, like C3t3::facets_in_complex_begin.
(r63143 from Mesh_3-experimental-GF)
between binary I/O formats).
<CGAL/Mesh_vertex_base_3.h>: the operator<< and >> were wrong.
From: Laurent Rineau <Laurent.Rineau__CGAL@normalesup.org>
r61170 from Mesh_3-experimental-GF
parameter to set a minimal size of protecting balls. That parameters is
forwarded through the call chain to the class Protect_edges_sizing_field,
but for the moment it does change anything (other commits will come).
void set_special(bool);
bool is_special() const;
Add a Boolean parameter to C3t3::is_valid(bool), to have a verbose mode
(display an explanation of why the C3t3 is not valid).
AABB_tree documentation, Intersections_3 and Arrangement_on_surface_2.
The merge also introduced a regression for a bug fixed in R68387 which
fixed a bug in Triangle_3 Segment_3 intersections. The relevant
testcase is in triangle_other_intersection_test.cpp.
used. Those were mostly in Polyhedron and HalfedgeDS but some places
in Arrangement_2 used it, too. Neither of the parts of Arrangement_2
have been documented.
In Mesh_domain_with_polyline_features_3, the type FT must be taken from the
geom traits, and not from the base, because the concept MeshDomain_3 does
not ask for the type FT.
Before this patch, Construct_initial_points did not try to intersect with
the bounding polyhedron, but only with the other polyhedra. That can lead
to a crash if the given polyhedra are a bounding one, and a second
polyhedron that is coplanar. Then the initial points are *all* coplanar,
and then tr.dimension()==2 and an assertion is triggered.
Now Construct_initial_points uses construct_intersection_object(), and the
later tries to intersect with all polyhedra, including the bounding one.
was using predicates on intermediate construction, and thus this was not
exact. Now the implementation only uses predicates, that are exact in the
filtered kernel.
| ------------------------------------------------------------------------
| r57979 | lrineau | 2010-08-11 15:24:20 +0200 (Wed, 11 Aug 2010) | 1 line
|
| Global fix of all uses of qt4_generate_moc: the destination file path must be absolute.
| ------------------------------------------------------------------------
| r58026 | stayeb | 2010-08-12 17:40:41 +0200 (Thu, 12 Aug 2010) | 2 lines
|
| Bug fix: ensure that c3t3 contains no in complex cell when starting a new refinement process. We need this because the first refinement of the surface does not update the volume, so c3t3 can't know that in complex cells have been deleted.
|
| ------------------------------------------------------------------------
(That shows it is difficult to avoid to merge the release branch in the
trunk from time to time.)
+ some encroached facet could be missed with the old version of the code (seems to happen in some cases where facet_size > tet_size in the meshing criteria). This leads to a possible crash with the new optimized version of the volume refinement.
+ Add status report in meshing MessageBox
+ Fix a bug which could happened if user stops meshing process early: cells should be scanned to have tets in the mesh and not only facets
+ A message box pops up when optimizer is launched.
+ Optimization can be stop using 'stop' button of this message box
+ todo: add (dynamic) information in message box about status of running optimizer
+ do not update bad tet queue during the first surface refinement
+ rebuild restricted Delaunay uses adjacency informations during volume
refinement (could be disabled by setting macro CGAL_MESH_3_USE_OLD_SURFACE_RESTRICTED_DELAUNAY_UPDATE)
by namespace CGAL { and } //namespace CGAL. in all .h and .cpp files
in a directory.
Apply it to all packages in the trunk
Remove macro definition from the config.h file.
* make_surface_index() of class Polyhedral_mesh_domain_3 is now public
* change default value of Min_dihedral_angle_criterion from 25 to 12
* add command-line applications for various mesh generation examples
From branches/CGAL-3.5-branch/Mesh_3 To trunk/Mesh_3.
r51758 | lrineau
* Fix all \ccPkgHowToCiteCgal at once to turn 08 into 09
r51937 | stayeb
* Fix polyhedral oracle issue: switch to exact intersection computation.
r51957 | stayeb
* cleanup example folder.
r51960 | stayeb
* Remove wrong using namespace statement.
* Minor fix in Polyhedral_mesh_domain_3: internal AABB kd-tree is now built
* Minor fix in mesh_standard_facet_criteria.h: check dimension with >2 instead of ==2 & add some assertions
* Add internal(undocumented) usefull genericity:
+ add Wrapper template parameter (with default value) in Implicit_mesh_domain_3
+ add Wrapper template parameter (with default value) in Labeled_Image_mesh_domain_3
+ add two template parameters (with defaults) in Mesh_criteria_3
- CGAL_MESH_3_DIRTY_DEBUG_SPHERES,
- and CGAL_MESHES_DEBUG_REFINEMENT_POINTS.
- new macro CGAL_MESHES_OUTPUT_STREAM, which is set to std::cout by
default.
- in Mesh_2: new header <CGAL/Mesh_2/Output_stream.h>
- remove subdirectories of include/CGAL/Surface_mesher: files of Criteria/
and Oracles/ are moved one step back.
- repear the polyhedral oracle
- Implicit_oracle.h is now Implicit_surface_oracle.h (and the class has
been renamed too.
- no longer "Kernel_point" trick in Implicit_surface_oracle.h
- *but* "Kernel_point" trick is needed in Polyhedral_oracle.h! :-(
** In Mesh_3:
- repear examples/Mesh_3/polyhedral_surface_mesher.C
- add two input files in ./inputs/*.off (with their medit files)
"cannot_wait_for_CGAL-3.2" to the trunk.
My idea: the branch is the real working version, and I want it to be joined
back to the trunk:
__________________________ cannot_wait_for_CGAL-3.2 branch
/ \
/ \
-------------------------------------------- trunk
S M
The modification of the trunk between the splitting point S and the merging
point M has already been merged into "cannot_wait_for_CGAL-3.2".
The trunk versions of these three packages have been removed already.
Do not worry: I will "svn cp" the branch "cannot_wait_for_CGAL-3.2" into the
trunk, and the trunk will inherit from the logs of the branch.
My idea: the branch is the real working version, and I want it to be joined
back to the trunk:
__________________________ cannot_wait_for_CGAL-3.2 branch
/ \
/ \
-------------------------------------------- trunk
S M
The modification of the trunk between the splitting point S and the merging
point M has already been merged into "cannot_wait_for_CGAL-3.2".
include/CGAL/Mesh_3/Implicit_surface_mesher_visitor.h
This visitor is passed to the Surface_mesher, when it is used from
Mesh_3. This patch makes surface_index() of points on the surface to
be 1, if is was 0.
- replay-skull now run correctly too.
- sliver exuder still crash. :-(