Commit Graph

299 Commits

Author SHA1 Message Date
Pierre Alliez 75a82ec32d AABB tree:
- rebuild now returns void.
2009-05-13 07:32:41 +00:00
Laurent Rineau df0e2ec0bc size_type must be lowercase. 2009-05-12 14:29:36 +00:00
Camille Wormser 993c393cd4 forgotten detail 2009-05-11 23:30:04 +00:00
Camille Wormser 0d63e6c207 the Traits now conforms fuly to the documentation 2009-05-11 23:17:40 +00:00
Camille Wormser 614f220eb1 One last warning was missing: it appears only in the examples and not in the test suite.
It means we should add the Plane query case to the test suite.
2009-05-10 16:15:24 +00:00
Camille Wormser 74beff3b13 removed all warnings (-Wall -Wextra).
IMPORTANT THINGS

- We need to add Compute_squared_distance_3 (at least for Point_3, Point_3) to the traits requirements

- Since we use the (decorated) Traits as a template parameter for the Search_traits_3, we need to add
this as a requirement. Currently, the Search_traits_3 requests that the template parameter be a CGAL
kernel. This is much too strong!
2009-05-10 16:05:48 +00:00
Camille Wormser 0f376fb294 removed the warnings, except in one of the test cases. Working on it. 2009-05-10 15:24:04 +00:00
Pierre Alliez 0d2880a413 AABB tree:
- more on examples
- description
- removed leftover traces of projection after grep (two found)
2009-05-09 22:24:39 +00:00
Pierre Alliez 988c746c29 AABB tree:
- first pass on examples to simplify a bit
- TODO: better show variety of queries offered instead of just #intersections
2009-05-09 22:04:33 +00:00
Pierre Alliez 5b992f0ffa AABB tree: more on distance tests with anisotropic triangle mesh model (added finger.off)
remove one warning
some remains in the KD-tree... was unable to remove them for now.
2009-05-09 19:57:37 +00:00
Camille Wormser 5dc7c35be3 distance queries conform to the spec 2009-05-09 10:22:45 +00:00
Pierre Alliez 4a6eb544a8 AABB tree
- rename m_data into m_primitives in Tree
- rename m_p_root into m_p_root_node in Tree
put back squared_distance into distance test
2009-05-09 06:57:36 +00:00
Camille Wormser 8414b99e9a now the test suite compiles and runs! :) 2009-05-08 14:06:51 +00:00
Camille Wormser 01d0293bc5 Code is now almost up to the specification: Primitive::Id everywhere,
the KD-tree uses decorated points to return the Id too. 

There are just a few boost::optional to add in the traits, where we still
use the old bool intersection(..., Result&) approach, and some modernization 
to do in the distance computation things.

Everything compiles.

I have removed the funtion closest_primitive from the code and documentation, 
since it would not be consistent with the rest of the interface, and would not
be faster than closest_point_and_primitive.

I think we are almost done, not only for the documentation, but for the code too.
2009-05-08 12:59:22 +00:00
Pierre Alliez 154ff8cfa0 AABB tree: more on distance queries
it remains to fix the Distance_traits
2009-05-07 21:22:24 +00:00
Pierre Alliez c26e8531e1 AABB tree: intersections now return CGAL::Objects. 2009-05-07 21:03:21 +00:00
Pierre Alliez e034d54b75 AABB tree: more on distance queries
- experiments with primitive vs point hints.
2009-05-07 13:18:17 +00:00
Pierre Alliez db287f0e56 AABB tree: more on internal KD-tree used to accelerate the distance queries. 2009-05-07 10:51:01 +00:00
Camille Wormser 55021bdb9f KD-tree forbids copies -> a pointer now. 2009-05-07 09:41:38 +00:00
Camille Wormser 439292a46c solved the compilation problem for Point_and_primitive
temporarily disabled the kd-tree construction, not to mix two separate compilation issues. I replug it in a minute.
2009-05-07 09:24:41 +00:00
Pierre Alliez fd017c5595 AABB tree: first version of boost::optional for any*
obscure compilation issue for now.
more on doc too
2009-05-07 06:44:59 +00:00
Pierre Alliez db918ecafe AABB tree: undo folder restructuring 2009-05-05 11:51:48 +00:00
Pierre Alliez fbb8eefc2c more on examples 2009-05-04 20:19:22 +00:00
Pierre Alliez a6cf326154 AABB tree:
- examples primitive files in a separate folder
- more on doc from second review.
2009-05-04 20:08:00 +00:00
Gaël Guennebaud 10f9aa181c fix compilation 2009-05-04 15:15:46 +00:00
Camille Wormser 6f050ab6ca tentative API for dealing correctly with the degenerate cases:
it changes NOTHING to the existing code, except that 
number_of_intersections is renamed into number_of_intersected_primitives.
2009-05-02 18:02:11 +00:00
Pierre Alliez 7bc16c5c48 AABB tree: made two sub-folders to store intersections and (later) traversal_traits 2009-05-02 12:13:32 +00:00
Pierre Alliez 2d22df1c41 AABB tree: more on Point_and_primitive in traversal traits 2009-05-02 09:45:20 +00:00
Pierre Alliez b23fd11c04 AABB tree: document size, bbox and empty of the tree
note: we could rename root_bbox as simply bbox
2009-05-01 06:41:10 +00:00
Pierre Alliez 23f94c802b AABB tree: started to implement new API
CAREFUL: does not compile anymore - will fix this next week.
2009-04-30 22:26:53 +00:00
Stéphane Tayeb 6575fdb2e8 Fix compilation error. 2009-04-30 14:06:46 +00:00
Stéphane Tayeb fde6e4f260 * add workaround for weighted point (TOFIX)
* add AABB_const_polyhedron_edge_primitive
2009-04-30 14:04:45 +00:00
Pierre Alliez fbc8c064d1 AABB tree: type fix. 2009-04-29 15:10:16 +00:00
Pierre Alliez 519782b2af AABB tree: nearest_point_segment_3 added - all examples now compile fine
one file renamed
note: "origin" is a reserved term - better to rename it to query?
2009-04-29 15:01:36 +00:00
Pierre Alliez b96d8c442c AABB: fix clear_and_insert
remove lucy model (too big)
2009-04-28 20:04:23 +00:00
Pierre Alliez a86c346e54 AABB: implemented two new functions suggested by Andreas:
void clear(void)
bool clear_and_insert(begin,beyond)
2009-04-28 15:29:37 +00:00
Stéphane Tayeb cf794d7a17 add forgotten file (r48979). 2009-04-28 15:14:34 +00:00
Stéphane Tayeb 7d85cbdd57 * Remove ad-hoc code from AABBTraits:
- add nearest_point_3(Point_3, Triangle_3, Point_3)
  - updates Projecting_traits of AABB_tree
* Fix test compilation (linux x64).
2009-04-28 15:12:51 +00:00
Pierre Alliez 6c4f25b95b AABB: rename to less_x/y/z 2009-04-27 18:13:06 +00:00
Pierre Alliez b563d29270 AABB tree: the projection does not construct the KD-tree at the first projection query anymore. for efficient projection queries either the user calls for its explicit construction during the AABB construction or calls "construct_search_Tree()". otherwise the first primitive reference point is used as (naive) hint. 2009-04-27 15:36:35 +00:00
Stéphane Tayeb 50a9d76db0 Fix polyhedral oracle. Add class AABB_const_polyhedron_triangle_primitive. 2009-04-27 13:25:46 +00:00
Stéphane Tayeb 836f48cd9c Fix compilation errors (linux x64). 2009-04-27 12:42:04 +00:00
Pierre Alliez 9401251b51 AABB tree: attempt to fix compilation on Linux 2009-04-27 11:45:38 +00:00
Laurent Saboret 9c77d89703 Fixed compilation errors (Linux/g++) 2009-04-27 10:40:34 +00:00
Pierre Alliez 18c93be7bc AABB tree: replace xref/yref/zref and point_on by a single reference_point() function for primitive.
NOTE: the reference point is used both for sorting the primitives and for constructing the search KD-tree
2009-04-27 08:58:19 +00:00
Pierre Alliez b9c28d07aa AABB tree: rename is_smaller to is_contained
another code cleanup
2009-04-26 21:48:18 +00:00
Pierre Alliez a8188eb668 AABB tree: test all intersection types for triangles 2009-04-26 21:29:47 +00:00
Pierre Alliez 73364294e5 AABB tree: fix CR. 2009-04-26 18:24:15 +00:00
Pierre Alliez c55ae25215 AABB tree: more on projection (added all point_on() functions to primitives) 2009-04-26 18:19:05 +00:00
Pierre Alliez 8cf7099289 AABB tree: rename intersection file 2009-04-26 18:09:40 +00:00
Pierre Alliez 3a3c75c66e AABB tree: rename intersection files 2009-04-26 17:32:34 +00:00
Pierre Alliez 9df9f8a9f1 AABB tree: added internal search tree (CGAL K-orth search tree) to accelerate the projection queries.
substantial complication... may be improved.
2009-04-26 16:22:46 +00:00
Pierre Alliez e52c14ffc9 AABB tree: more on doc. 2009-04-26 14:39:35 +00:00
Pierre Alliez 4018a88be9 polyhedron demo: fix compilation of remeshing plugin 2009-04-26 14:25:30 +00:00
Pierre Alliez 24e3bc0c22 AABB tree: added two primitive types for triangle and segment to make two examples simpler.
rename Object type to Datum type within primitive as it was conflicting with CGAL Object type
2009-04-26 13:46:48 +00:00
Pierre Alliez cde6fb8ad0 AABB tree: added fourth examples with (segment) edges of a polyhedron 2009-04-26 09:27:42 +00:00
Pierre Alliez 3358154717 AABB tree: start adding tests. 2009-04-25 22:21:53 +00:00
Pierre Alliez 3316b50890 AABB tree: more comments on examples - added one projection 2009-04-24 22:09:40 +00:00
Pierre Alliez aea8cce7ad AABB tree: one more example with segment 2009-04-24 21:47:52 +00:00
Pierre Alliez ce4a6039f5 AABB tree: added two examples (one compiles fine) 2009-04-24 14:11:17 +00:00
Pierre Alliez aeb4889551 AABB tree: move files up 2009-04-24 13:35:41 +00:00
Pierre Alliez bc218b5d22 AABB tree: doc 2009-04-24 13:00:46 +00:00
Pierre Alliez f28804008c fix link to examples 2009-04-24 12:30:56 +00:00
Pierre Alliez 476cf9aeb1 AABB tree: rename triangle primitive to polyhedron triangle primitive 2009-04-24 11:51:03 +00:00
Pierre Alliez 3e25916b51 AABB tree: added two examples and alter doc where the data type is now the Object type. 2009-04-24 11:29:00 +00:00
Pierre Alliez f01b6e147f AABB tree: important pass on the documentation from A.Fabri's review and several discussions with S.Tayeb, L.Rineau and C.Wormser.
remove all _type suffixes to types
distinguish datum from data
A primitive wraps a "geometric object" and an Id - not a primitive and an ide (confusing)
added any_intersected_primitive() to be consistant
2009-04-24 09:42:43 +00:00
Stéphane Tayeb c4b6628106 * Projection query correction.
* Remove old code.
2009-04-23 07:38:53 +00:00
Stéphane Tayeb 333e2f0401 First step to CGAL 3.5 specs. 2009-04-22 08:11:45 +00:00
Pierre Alliez 31992dd000 AABB tree: things to be fixed (intersections) 2009-04-21 12:29:26 +00:00
Laurent Rineau 3654111856 Ooops: fix a bug I introduced myself since revision 48240, which was:
" - Rewrite of longest_axis(), which was quite strange, and switch to double,
      as CGAL::Bbox_3 coordinates are always double."

That fix will re-improve the query time.
2009-04-10 17:02:54 +00:00
Laurent Rineau 58f1842820 Improve again the construction time of an AABB_tree (by factor of 5 to 1). 2009-04-10 17:00:10 +00:00
Laurent Rineau 7a340e9d8d Improve the construction time of an AABB_tree for free (by using
std::nth_element, instead of std::sort).
2009-04-09 19:50:51 +00:00
Laurent Saboret 425cc63967 Fixed compilation warnings with VC++ 2009-04-07 14:01:14 +00:00
Laurent Rineau 69cc456852 typo : lenght -> length
(Thanks to Sylvain Pion.)
2009-04-06 12:25:12 +00:00
Laurent Rineau 9b9d32c208 The polyhedral oracle can now be used by Mesh_3. 2009-04-06 12:10:42 +00:00
Laurent Rineau 85bd8c4adb Add a member function AABB_tree::count_intersections 2009-04-06 12:10:09 +00:00
Laurent Rineau d51fcf2fa2 Make AABB_node::max_lenght public, so that AABB_tree can use it. 2009-04-06 12:09:32 +00:00
Laurent Saboret cb2644dab9 Revert revision 48625 that does not compile with g++ 2009-04-03 17:26:19 +00:00
Laurent Saboret 7d659c7483 Fixed compilation warnings with VC++ 2009-04-03 12:38:46 +00:00
Laurent Rineau f86c071b04 - Add constness to AABB_tree,
- Add a method bbox() to AABB_tree, that returns its bounding box.
- Add a method size(), that returns the number of nodes.
- Add a method traversal to AABB_tree, so that one can call it with a
  user-made traversal traits class.
- Add a Drawing_traits traits class, that draws the tree with OpenGL.
- Add predicates and constructions so that one can call
  AABB_tree::intersection with Kernel::Plane_3 as query, and Segment_3 as
  result type.
- New query function AABB_tree::all_intersections.
- The member function AABB_node::intersection is now templatized with a new
  template parameter 'Result', so that the result is not hardcoded to be
  'Point'.
- Three new constructions, for the intersection (and not only do_intersect)
  between a Triangle_3 and (Plane_3, Ray_3, Segment_3).
  (NOTE: That has not been tested intensively. And the intersection with
  Ray_3 and Segment_3 does not handle co-planar intersections, for the
  moment.)
2009-03-30 14:15:33 +00:00
Laurent Rineau 9f3a3e323b Fixes for non-Windows compilers. 2009-03-30 14:05:56 +00:00
Laurent Rineau e13b94d625 Factorize the code between Ray/Line/Segment, using templates. 2009-03-02 11:10:37 +00:00
Laurent Rineau 288525ba5f - Rewrite of longest_axis(), which was quite strange, and switch to double,
as CGAL::Bbox_3 coordinates are always double.
2009-02-26 18:04:56 +00:00
Laurent Rineau 25d930749f - Move the traits First_intersection_traits from AABB_node to AABB_tree.
- Remove AABB_node::first_intersection which is useless.
- AABB_node::traversal is no longer templated by Result_type. Instead of
  passing as argument a 'result' object, and constructing a traits at each
  call, the traits object is constructed once, before calling traversal,
  and passed as argument.
2009-02-26 16:40:40 +00:00
Laurent Rineau 641fa903d8 Yet another move of a function, and add comments. 2009-02-26 11:48:17 +00:00
Laurent Rineau 8972f90ac3 Remove yet another PSC dependency: PSC::do_intersect does not exists! That
means that some do_intersect functions where never instantiated.
2009-02-26 11:39:40 +00:00
Laurent Rineau 249f582387 Move functions definitions into the class, so that one see more clearly, if
possible, the structure of the code.
2009-02-26 11:22:56 +00:00
Laurent Rineau d410bbe3b4 Cosmetic: CGAL_NAMESPACE is obsolete, now. No need to confuse editors and
IDEs by using it.
2009-02-26 10:55:11 +00:00
Laurent Rineau c2c562b508 Add two cosmetic "const" attributes to function of
"First_intersection_traits".
2009-02-26 10:28:40 +00:00
Laurent Rineau 5ec512b917 Remove the psc argument from recursive functions. That one is not used, and
not wanted (the aim is to remove the dependency to the type PSC).
2009-02-26 10:25:52 +00:00
Laurent Rineau f3262130bc Add a comment to explain the trick that uses boost::enable_if and
the Boost MPL:
 http://www.boost.org/doc/libs/release/boost/utility/enable_if.hpp
 http://www.boost.org/doc/libs/release/libs/mpl
2009-02-25 19:14:08 +00:00
Laurent Rineau b13221cfb3 Try a use of boost::mpl::vector, to see what will happen to the testsuite
of Polyhedron_Demo.
(2009-02-24 16:54:31 +0100)

Update: the testsuite of CGAL-3.5-I-32 has validated that change. Great:
let's go and use MPL!
2009-02-24 15:54:31 +00:00
Laurent Saboret 6e404a5e87 Partial merge with Gyroviz AABB_tree. Very minor changes. 2008-10-17 16:03:17 +00:00
Pierre Alliez 6ae6749ad0 cleanup AABB tree: update authors, remove #undef, local includes. 2008-10-14 12:15:10 +00:00
Pierre Alliez d0bf3a2245 AABB tree: remove knn and plucker. a bit of cleanup and update of authors. 2008-10-14 07:43:19 +00:00
Andreas Fabri 50cc203fac Added ETHZ and authors 2008-10-14 06:04:37 +00:00
Andreas Fabri ae5afa9774 cleanup 2008-10-13 18:45:02 +00:00
Andreas Fabri 2465573f24 Add license header 2008-10-13 18:41:47 +00:00
Laurent Rineau 9e80736743 Move AABB_tree in its own svn package (not documented for CGAL-3.4).
(TODO: one need copyright/license headers.)
2008-10-01 08:10:00 +00:00