Commit Graph

66 Commits

Author SHA1 Message Date
Laurent Saboret 8f1e17abcf Added CGAL_TRACE_STREAM object (== cerr if DEBUG_TRACE is defined, else nothing) 2008-08-28 13:48:50 +00:00
Laurent Saboret 159964b8fc Added traces 2008-08-28 13:09:53 +00:00
Laurent Saboret e6316826b3 Removed unnecessary includes of CGAL/basic.h.
Enforced CGAL_NDEBUG rule:
- code under include/CGAL/ and src/ must not use NDEBUG and assert(), but CGAL_NDEBUG and CGAL assertion macros.
- code under demo/, examples/ and test/ must use NDEBUG and assert().

Added _HAS_ITERATOR_DEBUGGING=0 to .vcproj makefiles to speed up VC++ 2005 debugger.

Removed CGAL_SURFACE_RECONSTRUCTION_CHECK_EXPENSIVE from .vcproj makefiles (unused).
2008-08-21 12:21:20 +00:00
Laurent Saboret f02e73df8d Added back trace as orient_normals_minimum_spanning_tree_3() uses a lot of memory. I was not able to optimize more the memory footprint but at least the trace will show the reason of an out-of-memory crash. 2008-08-21 12:11:58 +00:00
Laurent Saboret 2e7eae508d Fixed g++ warnings 2008-08-12 08:38:36 +00:00
Laurent Saboret 54c707b1b0 Added traces of the memory currently allocated (using CGAL::Memory_sizer) 2008-08-11 15:42:07 +00:00
Laurent Saboret 31d5835495 Fixed memory leak in orient_normals_minimum_spanning_tree_3() 2008-08-11 15:37:33 +00:00
Laurent Saboret 17b5a1f42a OnAlgorithmsOrientNormalsWithMST() selects non-oriented (instead of flipped) normals 2008-07-31 14:06:44 +00:00
Sylvain Pion 79864c0c8e Remove Arity_tag. 2008-07-22 12:29:01 +00:00
Sylvain Pion 2eb0d8f9e9 certainly() -> possibly(). 2008-07-14 11:16:41 +00:00
Sylvain Pion 9d7a609ff2 Make assertions trigger an error only for *certain* conditions (using CGAL::certainly()).
This is useful for interval arithmetic code.
(replay of r44002 with the header order hopefully fixed)
2008-07-10 21:49:17 +00:00
Laurent Saboret 382f4df403 Package:
Integrated point set simplification by clustering.
Implemented random point set simplification.
Implemented variant mutating the point set for point set simplification and outliers removal algorithms.

MFC demo:
Point set simplification and outliers removal algorithms select now the points to delete, instead of deleting them directly. This gives a chance to adjust the parameters before deletion.
2 new menu items related: "Delete selection" and "Reset selection".
Normals orientation algorithms select now flipped normals.
Fixed bug in merge_epsilon_nearest_points_3().
2008-07-08 15:01:10 +00:00
Sylvain Pion 2b4ebf01f7 Undo r44002 as it's buggy 2008-07-06 20:47:29 +00:00
Sylvain Pion 514a17ad4f Improve the interaction of assertions and interval computations.
Things like "CGAL_assertion(denominator != 0)" produced assertion failures for no gain.
So now, the assertion is triggered only if the condition is certain, using CGAL::certainly().
That is, change the following in all assertion files :
  ((EX)?(static_cast<void>(0)): ::CGAL::assertion_fail( # EX , __FILE__, __LINE__))
to :
  (CGAL::certainly(EX)?(static_cast<void>(0)): ::CGAL::assertion_fail( # EX , __FILE__, __LINE__))
2008-07-06 17:05:47 +00:00
Laurent Saboret f944600045 Huge APSS optimization (times are divided by 3 for the command line test and by 7 for the MFC demo) after profiling with AQtime:
- The Surface_mesher distance parameter is set to 0.005 for APSS (0.002 for Poisson). Both values are editable in the Options dialog.
- Removed the "APPS projection error" field in the Options dialog (unused).
- APSS kd-tree contains Point_with_normal_3 points instead of Gyroviz_point_3 objects (faster copy constructor).
- The number of neighbors is 7 by default (was 10).
- APSS caches the previous nearest neighbor to speed up the isValid() method (test if close to surface).
- If point is far from surface, APSS computes only the nearest neighbor (used to compute twice K nearest neighbors).
2008-07-04 14:56:20 +00:00
Laurent Saboret 0e00923b78 Port to g++ 2008-07-01 16:48:23 +00:00
Amit Gupta bc0ff05088 Added data-fitting term and normalization of divergence in the poisson surface reconstruction. 2008-07-01 13:09:35 +00:00
Laurent Saboret 1b3ed3a8c3 Added 2 items in Options dialog: Surface Mesher's dichotomy error and APSS projection error.
Default values are previous hard-coded values.

Use KNN from Options dialog in APSS. 
Default value is now 10 to match previous APSS KNN.
2008-06-20 14:04:47 +00:00
Laurent Saboret f13c455085 Added Gyroviz "Remove outliers wrt cameras cone angle" algorithm. 2008-06-19 15:37:32 +00:00
Nader Salman ac2beb5ddc Update from same files in Gyroviz package 2008-06-19 11:44:56 +00:00
Laurent Saboret 0874235ec9 Simpler implementation of surface_reconstruction_read_xyz(). gcc does not understand the function overloading of the previous implementation. 2008-06-06 09:13:40 +00:00
Laurent Saboret b80420b7f3 Replaced read_point_set() par a call to surface_reconstruction_read_xyz() 2008-06-05 17:02:25 +00:00
Laurent Saboret 49964c07f9 Fixed crashing bug (or infinite loop) when Poisson reconstructs polygirl model:
- added Implicit_fct_delaunay_triangulation_3::input_points_bounding_box() (resp. sphere)
- these methods are called by Poisson_implicit_function::bounding_box() (resp. sphere), which are now accurate
- no need anymore to divide by 2 the bounding sphere radius (which cashed the Surface Mesher)
2008-06-04 13:20:49 +00:00
Laurent Saboret 21e4028030 First real implementation of get_inner_point() and region_of_interest().
Added bounding_box() [unused].
2008-06-04 13:15:30 +00:00
Laurent Saboret 230ffc5391 Fixed gcc warnings 2008-06-03 12:37:30 +00:00
Laurent Saboret 02f9ff6a0b Updated reference manual using generate_reference_manual version 1.0.2. 2008-06-02 17:01:57 +00:00
Laurent Saboret eca8d0e22c Added "APSS mode" icon to toolbar 2008-06-02 12:31:46 +00:00
Laurent Saboret b8fb79a876 Port to gcc 4.3.0 2008-06-02 11:42:35 +00:00
Laurent Saboret daa45ce124 APSS is integrated in MFC demo. 2008-05-29 17:02:20 +00:00
Nader Salman 65faa8db11 Small modifications in merge_epsilon_nearest_points_3 class 2008-05-29 08:23:40 +00:00
Laurent Saboret c9589121a1 Fixed infinite loop in APSS by replacing ApssOracle par the default class Implicit_surface_oracle_3.
Fixed bug in bounding sphere computation.
Deleted ApssOracle.
Renamed class APSS as APSS_implicit_function.
Code cleaning: store normals in Vector_3 objects instead of Point_3.
2008-05-28 12:46:27 +00:00
Laurent Saboret fa20e36c19 Orginal APSS (Algebraic Point Set Surfaces) reconstruction code ported to CGAL by G. Guennebaud.
In reklease mode, this code works on ChineseDragon-10kv.off but loops on camel.off.
In debug mode, there is an assertion failure in make_surface_mesh().
2008-05-28 08:44:56 +00:00
Laurent Saboret d1b272aae7 Compute the number of intersections of each triangle with camera -> vertex segments: intermediate version (slow) 2008-05-22 13:39:37 +00:00
Nader Salman bd70e1f5e8 Utility class aims at merging points:
- inserts a range of elements from first to beyond,
- but only if value doesn't already exist : allows only unique points with an epsilon tolerance.

Observations :
- Quick but approximate.
2008-05-16 09:30:41 +00:00
Pierre Alliez d037064719 PCA: add one more test
Reconstruction: attempt to suppress a warning
2008-04-30 19:30:14 +00:00
Laurent Saboret 448e58f4d5 Port to gcc 2008-04-30 15:41:21 +00:00
Laurent Saboret ad2f2e1407 Added test suite for:
- orient_normals_minimum_spanning_tree_3()
- remove_outliers_wrt_avg_knn_sq_distance_3()
2008-04-30 13:58:51 +00:00
Laurent Saboret 2887264cf0 Added license header 2008-04-30 13:56:53 +00:00
Laurent Saboret 99baf24a78 Code cleaning:
- PoissonDoc methods have better names
- Removed code related to Gyroviz from Poisson_dt3
- Fixed compilation error on poisson_reconstruction_test.cpp

Updated concepts.

UI:
- updated the toolbar
- added menu item "1-step Poisson reconstruction"
- improved code that enables/disables menu items
2008-04-29 16:24:21 +00:00
Laurent Saboret 0df22bb093 Edited points exist now under 2 forms in CPoissonDoc:
- m_points[] array of points + normals.
- the m_poisson_dt 3D triangulation used by the m_poisson_function implicit function.
Only 1 form is visible on screen and editable at a given time. This is controlled by m_edit_mode.

A new class Point_set_3 represents an array of points + normals of type PointWithNormal_3 (in fact Gyroviz_point_3 to support algorithms specific to Gyroviz). It provides accessors (points and normals iterators, property maps), OpenGL rendering and bounding box.

File >> Open fills the point_set.
Algorithms menu is split into:
- Processing menu which modifies a point,
- Reconstruction >> Poisson sub-menu which converts the point set to a triangulation 3 and then solves the Poisson equation over it.
2008-04-29 10:57:58 +00:00
Pierre Alliez 24d0377019 Reconstruction: rename K to KNN (confusing with kernel)
Added comments to outlier technique + point with normal
2008-04-28 09:23:01 +00:00
Nader Salman 7be1fcc158 Added the Average K-Nearest neighbor squared distance outliers removal technique. 2008-04-25 10:20:48 +00:00
Laurent Saboret f6e9627800 Minor changes (mostly replaced tabs by spaces). 2008-04-24 12:18:12 +00:00
Laurent Saboret ff1303f03b Port to gcc (using CGAL 3.4) 2008-04-22 15:28:44 +00:00
Laurent Saboret 384c8a185a Port to Visual C++ 8.0 (using CGAL 3.3.1). 2008-04-22 13:15:41 +00:00
Laurent Saboret b57ec303d2 Port to gcc 2008-04-22 08:29:12 +00:00
Sylvain Pion 5b0ee55032 Rename PCA_dimension_0_tag to Dimension_tag<0>. 2008-04-17 07:54:04 +00:00
Sylvain Pion 8e30faabcb Remove PCA_dimension_0_tag() from call to centroid() 2008-04-16 15:27:08 +00:00
Pierre Alliez 6bc98eabdd surface reconstruction: cleanup on average spacing 2008-04-12 22:08:59 +00:00
Pierre Alliez 1fd7c1f500 surface reconstruction: mutating version of smoothing using jet fitting 2008-04-12 21:52:39 +00:00