Commit Graph

12 Commits

Author SHA1 Message Date
Laurent Saboret f75a9f002b Memory optimization:
- use std::vector when buffer can be reserved in advance and cannot be too large,
- else use std::deque

I expect gains in terms of speed and memory fragmentation. 

Examples:
- MFC demo can now load bimba_range_images.off (range images of the Bimba con Nastrino scan, 3.8 millions points).
- Poisson reconstruction is 10 seconds shorter on Chinese_dragon_Minolta_point_set_225kpts_with_jet_normals.xyz.
2008-10-17 09:57:17 +00:00
Laurent Saboret 48f9fe1954 ReconstructionImplicitFunction models must be lightweight and stateless. 2008-10-13 11:50:45 +00:00
Laurent Saboret 7cba4b3f28 Fixed declaration of templated methods 2008-09-30 14:32:45 +00:00
Laurent Saboret f98b56c594 APSS_implicit_function uses now Point_with_normal_3<Gt, Vector_3> to save memory space (4 bytes per point). 2008-09-30 11:15:13 +00:00
Laurent Saboret 4abcbea669 - For clarity: renamed OrientedNormal_3/Oriented_normal_3 as OrientableNormal_3/Orientable_normal_3 = a normal vector oriented or not.
Note that Vector_3 is the concept of a normal vector (always) oriented.

- Point_with_normal_3 is now templated by the normal type. 
Types currently available are:
  -> Vector_3 (the default)
  -> Orientable_normal_3 (used by Point_set_3 for point cloud processing)
  -> Lightweight_vector_3 = a normal whose vector is allocated only if not zero (used by Poisson 3D triangulation).
We have now 2 corresponding concepts: 
  -> PointWithNormal_3 = a point + a normal (always) oriented.
  -> PointWithOrientableNormal_3 = a point + a normal oriented or not.
The purpose is to save memory space and to better document the requirements of algorithms processing normals.
2008-09-30 09:57:24 +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 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 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 eca8d0e22c Added "APSS mode" icon to toolbar 2008-06-02 12:31:46 +00:00
Laurent Saboret daa45ce124 APSS is integrated in MFC demo. 2008-05-29 17:02:20 +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