Commit Graph

677 Commits

Author SHA1 Message Date
Jane Tournois 2ac22ab592 fix "may be uninitialized" warning 2020-12-11 16:49:56 +01:00
Maxime Gimeno 4607a0fbdf Fix warning 2020-12-11 14:09:39 +01:00
Jane Tournois 3837f2c1f4 dimension can be 3 even if both end vertices are on patches or feature curves 2020-12-08 14:52:09 +01:00
Jane Tournois 6708614baa add debug code 2020-12-08 14:41:41 +01:00
Laurent Rineau 7c4a61e27a Merge pull request #5052 from maxGimeno/CGAL-Fix_warnings_5_1-maxGimeno
Fixes for warnings in 5.1
2020-10-09 16:50:14 +02:00
Maxime Gimeno e8566f2185 Fix ref warnings in tet_remesh 2020-10-05 12:47:45 +02:00
Sebastien Loriot c54622e9b4
Merge pull request #4976 from janetournois/Tet_remeshing-speedup-GF
Tetrahedral Remeshing - speedup
2020-10-02 15:29:24 +02:00
Sebastien Loriot 47d2189f8e
Merge pull request #3268 from afabri/PMP-visitor-GF
PMP::triangulate_faces() Add a visitor that allows to map each triangle to its original face
2020-10-02 15:26:05 +02:00
Jane Tournois 49d541e8a3 remove trivial operator= which violates the rule of three/five/zero 2020-09-24 17:57:24 +02:00
Jane Tournois c9f260e66a fix unused typedef warning 2020-09-18 14:48:59 +02:00
Jane Tournois 365d7e1bb0 remove unneeded typedefs 2020-09-15 16:06:26 +02:00
Jane Tournois bfd4e9915f rename named parameter graph_visitor to visitor 2020-09-15 15:42:24 +02:00
Jane Tournois 66fa7d1d1d remove remeshing_visitor and use graph_visitor instead 2020-09-15 15:00:06 +02:00
Sébastien Loriot 9650869e2b add missing macros + license statement 2020-09-10 12:17:59 +02:00
Sébastien Loriot c70102e7fa remove BOOST_FOREACH 2020-09-10 12:17:59 +02:00
Jane Tournois 362d00f2bc remove trailing whitespaces (and extra ;) 2020-09-08 13:32:27 +02:00
Jane Tournois ec40f42210 avoid using operator[] 2020-09-07 17:48:37 +02:00
Jane Tournois 9d91c3f304 improve verbosity in the end 2020-09-03 15:12:03 +02:00
Jane Tournois f85ae5783a use cache value in cells
now that the cos formula is fixed, this trick works!
2020-09-03 12:05:31 +02:00
Jane Tournois 6af45bb316 fix cosine formula 2020-09-03 11:51:41 +02:00
Jane Tournois 8fae3519b7 fix comments 2020-09-03 11:26:38 +02:00
Jane Tournois 87e5978a00 use only one small_vector and avoid lots of allocations 2020-08-21 15:44:55 +02:00
Jane Tournois 16cfce5e77 sliver value caching must be wrong, because it degrades min dihedral angle 2020-08-21 11:27:05 +02:00
Jane Tournois 73b6a47947 use only one small_vector and avoid multiple allocations 2020-08-21 09:46:50 +02:00
Jane Tournois 198a60dd03 Merge remote-tracking branch 'cgal/master' into Tet_remeshing-speedup-GF 2020-08-20 12:48:12 +01:00
Jane Tournois df044c4fb2 fix collapse of edges on surface with only one vertex on a feature 2020-08-13 17:39:46 +02:00
Jane Tournois 915dd02ea1 use the cache value of cells to avoid computing more than once the Dihedral_angle_cosine
of a cell
2020-08-07 16:08:42 +02:00
Jane Tournois 12a3aa7605 avoid divisions - everything is >= 0 2020-08-07 15:42:19 +02:00
Jane Tournois 0b29434c15 operator< depends on the sign, and can be computed on square(cos(angle))
the comparison is < or > depending on the sign
2020-08-07 15:31:13 +02:00
Jane Tournois 79159faa00 replace cos double value with a struct
operator< can be improved in the future
2020-08-07 12:44:15 +02:00
Jane Tournois 32441a4a2a re-introduce sliver_value() for cos 2020-08-06 10:07:59 +02:00
Jane Tournois 7ba6059074 replace tangent with cosine
when abcd is positively oriented, cos(dihedral_angle(abcd)) is
monotonically decreasing from 1 to -1 between 0 and PI,
so we now deal with maximum cos
2020-08-06 10:01:22 +02:00
Jane Tournois a8155850e1 do not use tan when the criterion is AVERAGE_ANGLE_BASED 2020-08-04 17:40:58 +02:00
Jane Tournois 05b572d8e7 fix order of points to always have positive orientation 2020-08-04 16:57:04 +02:00
Laurent Rineau ee1ebabf88 Merge pull request #4881 from janetournois/Tet_remeshing-fix_compare_subdomains-jtournois
Tetrahedral remeshing - fix compare_subdomains()
2020-08-04 16:25:42 +02:00
Jane Tournois f15efb78f9 reorder points to always have positive orientation 2020-08-04 14:35:53 +02:00
Laurent Rineau 1454dd6e24 Fix typo 2020-08-03 17:11:23 +02:00
Jane Tournois a93d3ef9bd use tan(min dihedral angle) instead of min dihedral angle
this is cheaper and atan is monotonic so the comparison leads
to the same conclusion
2020-08-03 13:42:11 +02:00
Laurent Rineau 962b681abd Merge pull request #4871 from janetournois/Tet_remeshing-add_smoothing_of_features-jtournois
Tetrahedral remeshing - smoothing along 1D features
2020-07-31 15:52:56 +02:00
Jane Tournois 03c278b0ce make smoothing more verbose 2020-07-31 15:14:14 +02:00
Jane Tournois 57a1b128f5 Merge branch 'Tet_remeshing-add_smoothing_of_features-jtournois' into Tet_remeshing-speedup-GF 2020-07-31 11:37:43 +02:00
Jane Tournois b17fefdd4a Merge branch 'Tet_remeshing-fix_compare_subdomains-jtournois' into Tet_remeshing-speedup-GF 2020-07-31 09:23:01 +01:00
Jane Tournois 012a78e81c be lazy in computing incident_cells(vh)
try computing incident_cells(v) only once per vertex.
Each flip invalidates the vertices that take part into it,
but the economy is about 25% time
2020-07-30 17:06:04 +02:00
Jane Tournois 6851c7c3ef break as soon as an edge is found,
filter with infinite vertex,
and use cpp11 for loop
2020-07-29 17:17:28 +02:00
Jane Tournois 80c7ec54a7 avoid computing incident_cells(vh) at each loop 2020-07-29 12:22:20 +02:00
Jane Tournois 82a0f6152c avoid multiplication of calls to incident_cells(vh)
by extracting it from the loop
2020-07-28 12:33:18 +02:00
Jane Tournois 993e4b599a Use a small_vector as the third template arguments of the flat_set
That will avoid the memory allocation at each call of the function.
2020-07-28 10:34:10 +02:00
Jane Tournois 9e82356213 fix compare_subdomains
compared std::vector were not made unique!
always different in presence of different numbers of incident cells
2020-07-24 16:54:29 +02:00
Laurent Rineau 10f958c8e5
Merge pull request #4863 from janetournois/Tet_remeshing-fix_peeling_slivers-jtournois 2020-07-24 16:22:45 +02:00
Jane Tournois 5698056d6c fix counting of vertices moves 2020-07-24 11:19:51 +02:00
Jane Tournois 702976d242 separate smoothing of feature vertices (dim 1) and surface vertices (dim 2) 2020-07-24 10:49:56 +02:00
Jane Tournois f3699e9625 use new named parameters API for doc of smooth_constrained_edges 2020-07-23 17:23:03 +02:00
Jane Tournois 32edd68ab0 Merge remote-tracking branch 'cgal/master' into Tet_remeshing-add_smoothing_of_features-jtournois
# Conflicts:
#	Tetrahedral_remeshing/doc/Tetrahedral_remeshing/NamedParameters.txt
#	Tetrahedral_remeshing/include/CGAL/tetrahedral_remeshing.h
2020-07-23 17:08:12 +02:00
Jane Tournois 1ec3f51544 fix typo in debug code 2020-07-23 16:26:47 +02:00
Jane Tournois 42b272d8ca reintroduce smoothing along polyline features
introduce named parameter smooth_constrained_edges
2020-07-23 12:19:58 +02:00
Jane Tournois a5e193e736 check inversion before moving for smoothing along features 2020-07-22 13:18:41 +02:00
Jane Tournois 92d3754d02 fix peeling condition
sliver, blade, cap... should be peelable
a condition on area of boundary facets compared to internal facets is valid
2020-07-21 16:38:34 +02:00
Jane Tournois fe87eeb8ac change macro from DEBUG to VERBOSE 2020-07-21 16:37:10 +02:00
Mael Rouxel-Labbé 93f1cd99ca Merge remote-tracking branch 'cgal/master' into CGAL-Improve_NP_doc_presentation-GF 2020-07-16 09:53:31 +02:00
Mael Rouxel-Labbé d567a0d9d0 Fix doc warnings 2020-07-16 09:52:32 +02:00
Jane Tournois f48154aa9e fix maybe uninitialized warning 2020-07-07 14:20:44 +02:00
Jane Tournois 36386b0bab fix unused parameter warnings 2020-07-06 15:08:33 +02:00
Jane Tournois 036d044419 move debug code to debug macro (not verbose) 2020-07-03 08:21:24 +02:00
Jane Tournois 1fef3c6f7d add debug code 2020-07-03 07:36:14 +02:00
Jane Tournois 74835a9484 move set_index after setting Surface_patch_index 2020-07-03 07:33:01 +02:00
Jane Tournois 48ca4bcb42 dimension is just the max(dimension(v1), dimension(v2)) 2020-07-02 14:37:09 +02:00
Jane Tournois 460b1f29a6 Merge branch 'master' into Tet_remeshing-from_c3t3_input-jtournois
# Conflicts:
#	Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_adaptive_remeshing_impl.h
2020-07-01 08:01:05 +02:00
Jane Tournois 2ae4e28de7 do not collapse when the cells set for collapse does not represent a manifold surface
trying to make the cells set manifold is not easy, and quite costly, so let's just
check whether the cells set surface is manifold and cancel the collapse if not
2020-07-01 07:52:55 +02:00
Jane Tournois 33b1283030 remove capitals
Co-authored-by: Sebastien Loriot <sloriot.ml@gmail.com>
2020-06-26 15:58:44 +02:00
Jane Tournois 92f9802123 protect is_valid() tests with DEBUG macro
they are verbose and that's annoying
2020-06-26 15:58:44 +02:00
Jane Tournois c5081c7880 doc 2020-06-26 15:58:44 +02:00
Jane Tournois 8253c30e0f ref manual 2020-06-26 15:58:44 +02:00
Jane Tournois 6f610a4b6d do not use Tr::Tr_Base (not documented) but Triangulation_3
as input for convert_to_triangulation_3
2020-06-26 15:58:43 +02:00
Jane Tournois 5734200c51 add convert_to_base_triangulation
change the API and avoid tetrahedral_isotropic_remeshing(c3t3)
2020-06-26 15:58:43 +02:00
Jane Tournois 96e966509f missing comma
Co-authored-by: Mael <mael.rouxel.labbe@geometryfactory.com>
2020-06-26 15:58:43 +02:00
Jane Tournois 44d5a331fe doc improvement
Co-authored-by: Mael <mael.rouxel.labbe@geometryfactory.com>
2020-06-26 15:58:43 +02:00
Jane Tournois f8dc62ac57 missing comma
Co-authored-by: Mael <mael.rouxel.labbe@geometryfactory.com>
2020-06-26 15:58:43 +02:00
Jane Tournois 7e457ea8b9 fix typo
Co-authored-by: Mael <mael.rouxel.labbe@geometryfactory.com>
2020-06-26 15:58:34 +02:00
Jane Tournois 121fbbbb1c add example to the user manual 2020-06-26 15:54:17 +02:00
Jane Tournois 3385d3643c add doc for tetrahedral_isotropic_remeshing(c3t3)
and an example to run mesh_3 + remeshing in a row
2020-06-26 15:54:17 +02:00
Jane Tournois 7c97c86039 set Index in vertex_base
to have consistent typeq between what is stored in Index (a boost::variant)
and the dimension of the lowest-dimensional feature to which it belongs
2020-06-26 15:53:02 +02:00
Jane Tournois 2a3dba9156 make build_triangulation() more generic with Surface_patch_index instead of int
this is necessary to be able to remesh a C3t3 with a Surface_patch_index that
is not convertible to `int`
It is the case with meshes generated from images, which often use
std::pair<Subdomain_index, Subdomain_index>
2020-06-26 15:53:02 +02:00
Jane Tournois 5308db7bd8 fix the "peeling" of slivers
when only one facet of the sliver was on a surface,
it could happen that the 3 others where deeply traversing the volume,
leading to a sharp hole on the surface.
This should be fixed

+ add to the complex the new surface facets, after peeling
2020-06-26 06:39:15 +02:00
Jane Tournois c84e8cec42 update number_of_facets and number_of_cells of the c3t3 before init_c3t3() 2020-06-25 08:38:14 +02:00
Jane Tournois 1b25bd2c39 add_to_complex(v1, v2) can be used only if edge is not already in the complex 2020-06-25 08:19:12 +02:00
Jane Tournois ab05dde7c2 fix the list of authors
and add a longer "short description"
2020-06-12 08:08:56 +02:00
Mael Rouxel-Labbé f6d4c0ce42 Update NPs of Tetrahedral Remeshing 2020-06-03 19:12:30 +02:00
Sébastien Loriot 802eb6add5 add missing empty line 2020-05-28 08:01:01 +02:00
Sébastien Loriot 25b0dc5108 fix compilation issues 2020-05-27 19:04:46 +02:00
Sébastien Loriot e8b3abdc51 mimic Mesh_triangulation_3 2020-05-27 18:54:19 +02:00
Sébastien Loriot 9333cdb5b3 improvements 2020-05-27 18:45:00 +02:00
Sébastien Loriot f386790eaa add new concepts to ease the reading + few doc fixes 2020-05-27 18:38:38 +02:00
Sébastien Loriot 8b3c1eeb48 fix doc issues 2020-05-27 16:24:25 +02:00
Jane Tournois d2c88507e7 remove commented code 2020-05-18 14:50:35 +02:00
Jane Tournois 7eb640c655 warning "may be used uninitialized" 2020-05-15 14:53:47 +02:00
Jane Tournois b6912d92ea fix warnings
- move #define a better location
- conversion double/size_t
- unused parameters
- automatic conversion int/boolean
2020-05-15 13:54:19 +02:00
Jane Tournois c9fab91c9a fix conversion warnings
and constify what should be
2020-05-14 08:45:48 +02:00
Sébastien Loriot 41d1898abf fix warning 2020-05-13 18:45:54 +02:00
Jane Tournois 916d09f451 prevent surface from self-folding during collapse
collapse_preserves_surface_star() checks that normals to the surface
do not get inverted and the surface stars do not "fold" on themselves
2020-05-13 07:47:07 +02:00
Jane Tournois 83e007f59e fix conversion warnings and comment unused code 2020-05-07 08:54:44 +02:00
Jane Tournois a9b461c156 fix warnings 2020-05-07 06:31:14 +02:00
Jane Tournois 9f40dac8d9 fix warnings (conversion, initialization order, brackets...)
and minor cleaning
2020-05-06 16:26:48 +02:00
Jane Tournois 1482f32514 add missing helper functions 2020-05-06 15:23:34 +02:00
Jane Tournois cb2a346427 add make_cells_set_manifold
the surface of `cells_to_insert` may be non manifold
using this function improves the chances to build a valid triangulation

+ use the boolean return value of build_triangulation()
2020-05-06 15:23:04 +02:00
Jane Tournois 8ec09f40fc remove dependency on Skin_surface_3
by replacing Triangulation_incremental_builder_3 by
build_triangulation() from tet_soup_to_c3t3.h
(which is part of Mesh_3 as C3T3)
2020-05-04 16:09:27 +02:00
Jane Tournois ab1063194c fix conversion warnings 2020-05-04 07:51:03 +02:00
Jane Tournois b91eed1bfb more doc reviews 2020-05-04 07:39:31 +02:00
Jane Tournois 891c162c56 doc reviews 2020-05-04 07:32:55 +02:00
Jane Tournois 3f275b8fcb add missing include 2020-04-24 16:03:28 +02:00
Jane Tournois 09f98fc5cd remove trailing whitespaces 2020-04-24 13:51:25 +02:00
Jane Tournois 0039cf45cc fix compilation with some C3t3 types 2020-04-24 08:02:07 +02:00
Jane Tournois 206499d4aa fix the code when Surface_patch_index is pair<Subdomain_index, Subdomain_index> 2020-04-23 06:36:46 +02:00
Jane Tournois f4f3ec034f fix the code when Surface_patch_index is pair<Subdomain_index, Subdomain_index> 2020-04-23 06:32:19 +02:00
Jane Tournois adaa8e02bb remove extra template parameter 2020-04-22 15:50:43 +02:00
Jane Tournois 288c520cd0 fix more warnings 2020-04-22 07:20:47 +02:00
Laurent Rineau 3790250916 Fix a warning 2020-04-21 17:09:13 +02:00
Laurent Rineau fe1f731e22 Fix timestamps 2020-04-21 17:08:57 +02:00
Jane Tournois 4396909ea6 fix conversion warnings (and some indentation) 2020-04-20 14:51:31 +02:00
Jane Tournois 081b811cb0 fix warnings 2020-04-20 14:17:00 +02:00
Jane Tournois 96bab4d9e3 fix warning about double brackets
and use range iterators
2020-04-20 07:20:55 +02:00
Jane Tournois fbd1952169 use base class is_facet_on_surface() function 2020-04-17 16:46:43 +02:00
Jane Tournois 3d181f5fe2 use range iterators 2020-04-17 16:44:00 +02:00
Jane Tournois c951383f48 fix internal c3t3 when input is not a C3T3
because add_to_complex(cell) does not do anything when subdomain_index
is not null, we need to remove cell from c3t3 first
2020-04-17 16:33:01 +02:00
Jane Tournois dacca12c3f reorder Cb and Vb consistently with the ones of T3 and Tds 2020-04-17 15:05:19 +02:00
Jane Tournois 9a886d8f27 rename tetrahedral_adaptive_remeshing() to tetrahedral_isotropic_remeshing()
because it is not adaptive yet
the adaptive version will come later, with a named parameter
2020-04-17 09:32:36 +02:00
Jane Tournois 07f6879513 uniformize IO and add namespace 2020-04-17 09:06:34 +02:00
Jane Tournois 5b5595c08c add _3 to vertex base and cell base names 2020-04-17 06:52:30 +02:00
Jane Tournois 9dd3733efb complete IO test with both ascii and binary, save and load 2020-04-16 08:38:41 +02:00
Jane Tournois e2cd7c7a33 use base class operators << and >> for Remeshing cell base 2020-04-16 07:41:44 +02:00
Jane Tournois 07b221e703 move IO header 2020-04-16 07:41:00 +02:00
Jane Tournois 49d72dc30c get all inherited functions from Triangulation_3 2020-04-16 07:39:46 +02:00
Jane Tournois 0fae00577d explicitely use CGAL::NULL_VECTOR instead of Vector_3() 2020-04-15 11:42:21 +02:00
Jane Tournois 0a0f8a631a add missing initialization 2020-04-15 11:33:54 +02:00
Jane Tournois 807eac022d fix maybe uninitialized warning - important if default constructed is not 0,0,0 2020-04-14 15:25:57 +02:00
Jane Tournois 29350cb260 fix the update of c3t3 facets in the flip step 2020-04-14 15:09:59 +02:00
Jane Tournois 54d72e9533 remove (too) expensive assertion 2020-04-14 08:30:24 +02:00
Jane Tournois 9660846c03 reintroduce collapse/flip/smooth 2020-04-14 08:23:02 +02:00
Jane Tournois 32dfc3380a keep c3t3 number of facets valid during collapse
using add_to_complex(facet) and remove_from_complex(facet) increment
and decrement the number

this commit removes before collapse facets that will disappear from
triangulation
2020-04-14 08:22:05 +02:00
Jane Tournois 6220e11b59 avoid creation of degenerate cells with split() 2020-04-14 08:16:18 +02:00
Jane Tournois 844d7d697a Merge branch 'Tetrahedral_remeshing-new-jtournois' of github.com:janetournois/cgal into Tetrahedral_remeshing-new-jtournois 2020-04-14 05:41:19 +01:00
Jane Tournois d5a061a326 create single function for both dumps too ascii and medit 2020-04-14 06:38:13 +02:00
Sébastien Loriot 608272d2a5 fix compilation errors and a warning 2020-04-13 10:46:09 +02:00
Jane Tournois 2aac945e2f dump c3t3 using output_to_medit() 2020-04-11 15:44:36 +02:00
Jane Tournois de568c718b use range iterators 2020-04-10 16:14:41 +02:00
Jane Tournois 139ef738c4 remove member variables that are used only once 2020-04-10 14:56:36 +02:00
Sébastien Loriot 825f77baaa add license include directives 2020-04-10 14:14:30 +02:00
Sébastien Loriot c929edcfd6 more identation using astyle -s2 2020-04-10 11:26:31 +02:00
Sébastien Loriot e8295bee19 more identation 2020-04-10 11:26:31 +02:00
Sébastien Loriot 9b4a53326c remove extra indentation 2020-04-10 11:26:31 +02:00
Sébastien Loriot 81541b2981 fix warnings + compilation error 2020-04-10 11:26:31 +02:00
Jane Tournois b3c44b837a replace all malloc/free code with std::vector's
and remove unused code
2020-04-10 11:26:31 +02:00
Sébastien Loriot acd6d9d8de removing tabs and trailing whitespaces 2020-04-10 11:26:31 +02:00
Jane Tournois 76cf92daaa replace Vec3D.h with CGAL::Vector_3 2020-04-10 11:26:30 +02:00
Jane Tournois a70473f361 rename debugging function 2020-04-10 11:26:17 +02:00
Jane Tournois 0446f85873 replace test on volume by test on orientation
CGAL::orientation is filtered, and CGAL::volume is not,
so there results can be different in nearly degenerate cases
2020-04-10 11:26:17 +02:00
Jane Tournois 022c261b93 make sure no cell has its volume negative after smoothing
if so, we shorten the move by 10% - several times is necessary -
while making sure every cell still has a positive volume
2020-04-10 11:26:17 +02:00
Sébastien Loriot 9a40e58877 fix warnings and compilation errors 2020-04-10 11:26:16 +02:00
Jane Tournois 933a5bc776 remove useless file 2020-04-10 11:26:14 +02:00
Jane Tournois 5e4de872a1 fix copyright headers 2020-04-10 11:25:32 +02:00
Jane Tournois 819aeded44 fix file name 2020-04-07 13:34:28 +02:00
Jane Tournois 82ca7db4c2 add const ref 2020-04-01 14:49:19 +02:00
Jane Tournois feefdde5a1 use latest API of named parameters (after merging master) 2020-04-01 14:15:21 +02:00
Jane Tournois 53843de366 protect smoothing of sharp edges with a macro 2020-04-01 07:59:27 +02:00
Jane Tournois b70b47fdd6 derecursify computation of facets normals
it was causing stack overflow on some models
2020-04-01 07:17:08 +02:00
Jane Tournois 3310ef054d disable smoothing on sharp edges for now
reprojection does projection on incident patches successively,
and this tends to smooth the shape of complex polylines, though
this is not desired

it seems that 1d smoothing does not really improve the quality nor
complexity of the output mesh, so let's disable it for now
2020-03-30 15:45:51 +02:00
Jane Tournois 78fbe290d1 avoid dependency on PMP for computing normals 2020-03-30 13:59:59 +02:00
Jane Tournois a0ee6b7ca9 use more boost::optional 2020-03-27 15:05:27 +01:00
Jane Tournois 69cf037280 extra iterations re-introduced 2020-03-27 07:54:43 +01:00
Jane Tournois 077a588bf2 during smoothing, always reproject to the input surface
instead of reprojecting to the evolving surface
this prevents from smoothing the shape again and again and "losing" features
2020-03-27 07:54:20 +01:00
Jane Tournois 8dab9317d0 remove outdated code 2020-03-26 16:35:22 +01:00
Jane Tournois a9324d4128 get 3 extra iterations of flip/smooth back 2020-03-26 15:58:45 +01:00
Jane Tournois cde5ec9e48 speedup normals computation
this new solution avoids all the calls to map.find(facet)
first fill a map with boundary facets and NULL_VECTOR the associated normal
facets are made canonical (with comparison of their 2 incident cells) to make
sure we always consider the same facet
2020-03-26 15:34:11 +01:00
Jane Tournois 91f1b1e7dd remove debug code 2020-03-26 13:43:17 +01:00
Jane Tournois b6c00b74b9 use boost::optional<Facet>
instead of returning a boolean and a facet if boolean is true
2020-03-26 13:31:05 +01:00
Jane Tournois 6bcb145163 speedup computation of facet normals
just counting the number of normals to be computed is 50 times
faster than testing find(f) and find(mf) successfully a lot
of times

this is a first shot and can definitely be improved a lot
2020-03-26 13:24:20 +01:00
Jane Tournois 66d3c1492f compute consistently oriented normals on surface patches
walk on facets with same surface patch index, with no "crossing" of
complex edges, and a normal that evolves while walking to keep
a smooth transition between neighbor facets
2020-03-25 15:23:38 +01:00
Jane Tournois cee1b435e7 not all edges should be update wrt the c3t3 2020-03-25 07:55:12 +01:00
Jane Tournois 3f6abd4ff7 fix smoothing of 3d vertices
count neighbors from 0, not -1, because there is no
pre-counting as it is done for surfaces
2020-03-20 06:37:38 +01:00
Jane Tournois 0f7a0eac64 add missing ifdef macro 2020-03-19 16:37:02 +01:00
Jane Tournois 62641ded15 simplify is_boundary(edge) 2020-03-19 16:16:51 +01:00
Jane Tournois 543ac23805 protect add_to_complex(vertex) with a condition 2020-03-19 16:15:31 +01:00
Jane Tournois 90653caddc fix smoothing!
for each vertex :
- on complex edges, collect incident complex edges
- on surfaces, collect incident surface edges
- inside volume, collect incident volume edges
2020-03-19 16:10:24 +01:00
Jane Tournois 8ede983726 keep 1d complex valid throughout the collapse step 2020-03-19 13:49:20 +01:00
Jane Tournois b8c9abd234 check normals per patch with dump 2020-03-18 08:19:48 +01:00
Jane Tournois cd69e12d81 replace clear+resize by assign 2020-03-17 16:37:07 +01:00
Jane Tournois 94ed9b6f34 simplify smoothing code
is_feature_MAD is not needed anymore because it corresponds to
the info stored in the c3t3
2020-03-17 16:11:32 +01:00
Jane Tournois bd6c8c03e1 add missing const 2020-03-17 15:58:38 +01:00
Jane Tournois 09ad664cb0 computing circumradius of degenerate cell crashes, avoid it 2020-03-17 15:58:10 +01:00
Jane Tournois 2645c1b47a fix is_boundary(edge)
facets that have exactly one incident cell which is infinite
are facets of the convex hull, not of the domain boundary
2020-03-17 15:37:06 +01:00
Jane Tournois 5060fb8fb1 fix get_edge_info and protect corners 2020-03-17 13:29:27 +01:00
Jane Tournois 3e7f75b3db use surface indices instead of subdomain indices when it makes more sense
- when we have surface indices, there is no need to count subdomains around,
- use c3t3 complex information instead of re-evaluating it

various cleaning and comments
2020-03-17 06:54:47 +01:00
Jane Tournois 08383dbf2d do not add to complex an edge that already is
it's the case when the input is a c3t3 with edge protection
2020-03-16 14:34:22 +01:00
Jane Tournois 0b030ed9bd use vertices_surface_indices
instead of the assumption that a surface is incident to two subdomains
There can always be a surface incident to 2 subvolumes with the same index
2020-03-16 14:29:37 +01:00
Jane Tournois 0ca5574c3f add const 2020-03-13 15:24:23 +01:00
Jane Tournois f421743670 fix indices in access to points 2020-03-13 15:24:06 +01:00
Jane Tournois ad0c8d7680 fix orientation of normals 2020-03-13 14:43:41 +01:00
Jane Tournois a8a74c4e19 sum of normals starts with n, not NULL_VECTOR
and add dump of normals for debugging purposes
2020-03-13 14:32:14 +01:00
Jane Tournois 096b724ec1 uncomment and adapt code with upsample > 0 2020-03-13 14:26:05 +01:00
Jane Tournois eb1a8778a0 wip make code as similar as possible to initial code 2020-03-10 16:37:00 +01:00
Jane Tournois f85e8549cf make smoothing code as close as possible to original MAD mesher code
to fix bugs

with this version :
- internal smoothing works perfectly
- surface smoothing is still broken
2020-03-10 11:42:47 +01:00
Jane Tournois 535a50217f avoid iterating twice 2020-03-06 17:11:45 +01:00
Jane Tournois 593489a614 wip smoothing using FMLS
reorganize code to have smaller functions,
use c++11 for loops on ranges,
constify variables...
2020-02-28 16:51:00 +01:00
Jane Tournois ad6de49304 and const's and use range iterators in smoothing
and remove outdated code
2020-02-28 14:28:20 +01:00
Jane Tournois 1c6d251859 fix conversion warning 2020-02-28 13:45:06 +01:00
Jane Tournois a7b745a446 fix init_c3t3() and the collapse() step
* the code of collapse() is made simpler because the C3t3 already embeds a lot
of topology information that we do not need to re-test

* init_c3t3() now fixes the dimension() of vertices because it was not always
properly set in the input c3t3

* add counters in the plugin to understand why some collapse of very short edges
fail
2020-02-28 13:40:00 +01:00
Jane Tournois baefa0d307 fix cout 2020-02-28 11:46:53 +01:00
Jane Tournois bb76c17ae5 use FMLS in smoothing, and revert to an older version
fix compilation with c3t3

this version is buggy and produces nan, I don't know why yet so smoothing is
commented out
2020-02-14 17:02:59 +01:00
Jane Tournois 2ef615d65d reset smoothing function to its initial version
and make sure it compiles with C3t3 requirements and a regular triangulation
2020-02-14 11:32:27 +01:00
Jane Tournois 628b800077 move back to helpers file the functions that are needed by smoothing 2020-02-14 11:31:46 +01:00
Jane Tournois b2686b35cc fix cout 2020-02-13 12:13:10 +01:00
Jane Tournois a7c2de7521 improve/fix collapse step
the topology_test was too restrictive and now makes better use of the info
stored in the C3t3

this commit also moves collapse-specific code to the corresponding file
(instead of the general "helpers" header)
2020-02-13 12:12:48 +01:00
Jane Tournois 7f8790332e fix iteration counting 2020-02-13 12:10:52 +01:00
Jane Tournois 8bacd01349 minor cout fix 2020-02-07 16:49:59 +01:00
Jane Tournois d0baa099d0 remove max_si computation, not needed anymore
also fix the count of c3t3 simplices in init_c3t3
(protected by debug macro anyway)
2020-02-07 16:49:35 +01:00
Jane Tournois 14b326bbe4 "far points" of Mesh_3 have dimension -1
deal with those, and keep their dimension "invalid" to be able to detect them
2020-02-07 15:39:31 +01:00
Jane Tournois 22e07a4a32 factor code 2020-02-07 12:16:28 +01:00
Jane Tournois 9ae27914cf fix the c3t3 surfaces in flip_n_to_m 2020-02-07 11:35:31 +01:00
Jane Tournois 707cdae9ed use c++11 for loops 2020-02-07 10:02:38 +01:00
Jane Tournois d345c2fe51 flip_3_to_2 does not break surfaces anymore
updating the outer hull of the set of modified cells is not enough,
"internal" facets should also be updated
2020-02-06 17:41:03 +01:00
Jane Tournois 62c390c354 use c++11 for loops, add const when possible, and rename containers 2020-02-06 16:44:23 +01:00
Jane Tournois 83df2cea52 rename is_inside(edge) to is_internal(edge)
for more readability
2020-02-06 11:27:07 +01:00
Jane Tournois 9eb178247d remove is_convex(tr) that has become useless 2020-02-06 11:20:41 +01:00
Jane Tournois 74243bae58 fix is_inside(edge)
by taking care also of facets that are in complex though incident
to the same subdomain on both sides
2020-02-06 11:19:27 +01:00
Jane Tournois 575f8111c3 remove imaginary stuff, and use CGAL internal named parameters 2020-02-04 17:23:30 +01:00
Jane Tournois dc496f5db6 add "peeling" of ultra-thin surface slivers 2020-02-04 16:32:32 +01:00
Jane Tournois 9d527321c4 cleaning 2020-02-04 15:30:04 +01:00
Jane Tournois a9e254efb4 flip does not break surfaces anymore 2020-02-04 15:29:49 +01:00
Jane Tournois b66b83f52c fix is_outside(edge) and in the meantime surfaces protection 2020-02-04 12:19:18 +01:00
Jane Tournois fea1bb946f collapse does not break surfaces anymore 2020-02-04 10:39:57 +01:00
Jane Tournois d59ef5021d fix split() step by fixing is_outside(edge)
- go on removing stuff about imaginary vertices
- after this commit, split() is fixed and collapse() causes holes on the surface
2020-02-03 16:50:05 +01:00
Jane Tournois 54df59efbb fix surface patch and subdomain indices during split
all of them should be restored after split, which creates twice as many cells
and is likely to recycle old cells, with their outdated c3t3 indices
2020-01-31 16:55:05 +01:00
Jane Tournois 2e5174f349 fix binary ofstream 2020-01-30 13:19:35 +01:00
Jane Tournois a791ea131e test the validity of the TDS only
when the input is a c3t3, the internal triangulation can be Delaunay
or Regular
remeshing it breaks its validity "on purpose", do we should not test
triangulation validity
2020-01-30 11:13:47 +01:00
Jane Tournois f53639ef83 use new API for named parameters 2020-01-28 17:50:14 +01:00
Jane Tournois d3db64f680 add binary dump 2020-01-28 15:50:57 +00:00
Jane Tournois bb0a407ed0 improve doc 2020-01-28 15:50:57 +00:00
Jane Tournois 69e64e5b0c add the ability to use a C3t3 directly in the remesher
instead of extracting the triangulation first
2020-01-28 15:50:57 +00:00
Jane Tournois c01952b98c use Triangulation_3 explicitly to make sure the base class is used
before that, one could give a DT3 or a RT3 to the remeshing function.
Remeshing would then make the triangulation invalid with respect to the
Delaunay or Regular criterion, though the TDS would remain valid.

Now it is clear that we do not expect nor return anything but a valid T3.
2020-01-28 15:50:57 +00:00
Jane Tournois b4a3dc181d add facet_is_constrained_map to constrain facets 2020-01-28 15:50:57 +00:00
Jane Tournois abe46686d8 move visitor to a private named parameter
this way we can use the triangulation output by Mesh_3
in a straightforward manner, without converting it to a
Remeshing_triangulation_3

also make sure that it compiles with the Regular_triangulation
used in the Mesh_3 demo plugin

and fix a doc typo
2020-01-28 15:50:56 +00:00
Jane Tournois e5dfe077b6 use MeshVertexBase_3 and MeshCellBase_3
the code uses a C3t3 so let's use the actual vertex base and cell base needed
by C3t3, instead of copied simplified versions
2020-01-28 15:50:56 +00:00
Jane Tournois 56003ec27e apply Laurent's review and rename some parameters 2020-01-28 15:50:56 +00:00
Jane Tournois 2a8335b60b wip smoothing 2020-01-28 15:50:56 +00:00
Jane Tournois 1c51a62a15 reintroduce FLMS smoothing on surfaces
code compiles but crashes in the smoothing step in the demo
2020-01-28 15:50:56 +00:00
Jane Tournois b0549946f5 add dump helpers and fix existing dump functions 2020-01-28 15:50:55 +00:00
Jane Tournois 92ac1cf2d9 user manual : make better examples 2020-01-28 15:50:55 +00:00
Jane Tournois 27c67b70db wip user manual 2020-01-28 15:50:55 +00:00
Jane Tournois fe270e4509 use geom traits in smoothing 2020-01-28 15:50:55 +00:00
Jane Tournois 1e7d4a2289 use the triangulation traits class in split, collapse and flip steps 2020-01-28 15:50:55 +00:00
Jane Tournois 87d01eb7cd add RemeshingTriangulationTraits_3 and start using the concept
preprocess() is done
2020-01-28 15:50:54 +00:00
Jane Tournois cbce3b9237 first introduction of an API for future sizing function 2020-01-28 15:50:54 +00:00
Jane Tournois ad85942c0b move Vertex_converter and cell_converter to the user code : the plugin 2020-01-28 15:50:54 +00:00
Jane Tournois 911cd4a82f reintroduce examples and simplify converters 2020-01-28 15:50:54 +00:00
Jane Tournois fb71408aed replace cell_base_with_info by a visitor
the goal is to let a visitor deal with external cell info
it also simplifies the API
2020-01-28 15:50:54 +00:00
Jane Tournois cd77b55210 replace constrained map of edges by constrained map of pairs of vertices
because there are more than one representation of the same Edge,
all around it
2020-01-28 15:50:53 +00:00
Jane Tournois 51eea5fcf0 wip documentation after review of Pierre & Laurent 2020-01-28 15:50:53 +00:00
Jane Tournois 3d83914017 wip : start implementing Laurent's review 2020-01-28 15:50:53 +00:00
Jane Tournois fe5a669a0d reference manual ready for review 2020-01-28 15:50:53 +00:00
Jane Tournois ea34ae0a56 wip doc continued 2020-01-28 15:50:53 +00:00
Jane Tournois feb6305d60 wip doc 2020-01-28 15:50:53 +00:00
Jane Tournois 0281777dae more cleaning of helper files (merged) 2020-01-28 15:50:52 +00:00
Jane Tournois ebb9416762 reorganize helper headers
and move all dump_***() functions to the same file
2020-01-28 15:50:52 +00:00
Jane Tournois 6af44bf121 remove obsolete code 2020-01-28 15:50:52 +00:00
Jane Tournois 3ac4d6d4a6 minor cleaning and commenting 2020-01-28 15:50:52 +00:00
Jane Tournois 5a4b1a0d9b clean typedefs and point types 2020-01-28 15:50:52 +00:00
Jane Tournois e4ee1e3926 clean preprocess() point types 2020-01-28 15:50:51 +00:00
Jane Tournois f40210d858 clean split() 2020-01-28 15:50:51 +00:00
Jane Tournois d2466b9fee start cleaning
Corner_index and Curve_segment_index are int by default in C3t3
2020-01-28 15:50:51 +00:00
Jane Tournois 5c0b40f591 remove imaginary cells from the complex once remeshing is done 2020-01-28 15:50:51 +00:00
Jane Tournois 0fb3a44d2e remeshing plugin should use Remeshing_triangulation
using Mesh_triangulation_3 (which is an enriched Regular_triangulation_3)
compiles, but the calls of tr.is_valid() fail since the triangulation
is not regular anymore after remeshing

we reconvert it back to the demo c3t3 triangulation type anyhow, to be able
to display it, hoping that is_valid() will not be called later on
2020-01-28 15:50:51 +00:00
Jane Tournois ebb4a99822 towards the use of remeshing with any input triangulation with subdomain_index 2020-01-28 15:50:51 +00:00
Jane Tournois 197193bdbd fix more Point_3/Weighted_point_3 conflicts 2020-01-28 15:50:50 +00:00
Jane Tournois 3fe06a2fa3 adapt the remesher code to the demo
- make it work with Regular_triangulation and its Weighted_points
- remove everything which was not needed about Surface_patch_index
(1 is in the complex, 0 is not, and is_in_complex(facet) tests
incident subdomains)
2020-01-28 15:50:50 +00:00
Jane Tournois 5716dcfc88 fix namespaces 2020-01-28 15:50:50 +00:00
Jane Tournois e42fcff754 add operator<< and operator>> for IO 2020-01-28 15:50:50 +00:00
Jane Tournois dc16af085b take any simple triangulation as input
it is not needed to store `input_cell` in the general case
2020-01-28 15:50:50 +00:00
Jane Tournois 97651adbec add very first version of tetrahedral remeshing package 2020-01-28 15:50:49 +00:00