Commit Graph

115 Commits

Author SHA1 Message Date
Andreas Fabri 0b94820931 fixed min/max problem 2006-08-16 21:29:43 +00:00
Sylvain Pion ed36e763c7 Second part of Return_base_tag changes. 2006-08-16 16:38:49 +00:00
Sylvain Pion 2eb12d7441 - First part of introduction of Return_base_tag workaround for lack
of "forwarding constructors".
  Quoting some comment in the code:
  "
    This is a simple tag which is used as additional (first) argument in
    some kernel functors, to tell them to return the base (rep) class,
    instead of the main type (e.g. Kernel_base::Point_2 instead
    of Kernel::Point_2).  This is a minor optimization which prevents
    useless copies of the "reps".

    Those functors are only those used in the constructors of the kernel
    types like Point_2, so it's limited.

    The real solution will be to use "forwarding constructors", when they
    will be available in C++.
    In the mean time, this should be a mostly/hopefully internal hack.
  "
2006-08-16 14:56:11 +00:00
Andreas Fabri 6830557518 fixed min/max problem 2006-08-16 14:08:44 +00:00
Sylvain Pion daee2152ec Make the return type of the function operator() of the
Construct_point_2 functors be the Rep class (the base).
This avoids conversions Rep -> Point_2 -> Rep, hence
useless copies of objects.
The result_type of the functors does not change
(we therefore return a type which is only convertible
to result_type, but hopefully this is fine, and what standard
requirements on functors are anyway).
A real fix for this would require the language addition of
"forwarding constructors".
2006-08-11 11:48:16 +00:00
Sylvain Pion ef72d8ae7e Remove the .rep() as they are useless since there is the automatic base class conversion (and see next change) 2006-08-11 11:36:01 +00:00
Sylvain Pion cb4d5597bf Add BOOST_STATIC_ASSERT() to check that CGAL::Point_2<R>
is only instantiated when R::Point_2 is itself.
2006-08-11 10:23:23 +00:00
Sylvain Pion 629c1dfddd Ray_2.is_degenerate() was buggy. 2006-08-11 09:01:12 +00:00
Andreas Meyer 68c3715b5c support for LEDA 5.x (mostly done by Eric Berberich) 2006-08-10 15:14:32 +00:00
Andreas Fabri 44daf8cc17 fixed typo (thank's Sylvain) 2006-08-08 20:08:41 +00:00
Andreas Fabri c45818326b Added Kernel::Compute{X,Y,Z}_3 2006-08-08 18:31:00 +00:00
Sylvain Pion 7ab36784b9 Merge the various constructors into a template to avoid ambiguities 2006-08-08 08:24:09 +00:00
Andreas Meyer b454b3febd manual cleanup:
* .C ---> .cpp
* removed ../examples from paths
* moved some demo/example files out of doc_tex into their respective place
* now it should build properly, again
2006-08-07 16:43:09 +00:00
Sylvain Pion c50783f08f Bad luck: "equi-distant" -> "equidistant" (thanks Andreas). 2006-08-07 16:11:40 +00:00
Sylvain Pion 38853d1b10 - Optimize equi_distant_line() by merging the calls to
circumcenter() and cross_product().
- Add ctors to Point_[23] and Vector_[23] that take
  int, double, and FT coordinates, instead of only RT.
2006-08-07 15:57:40 +00:00
Sylvain Pion 12838a204a - Add a distinguishing "int" template parameter
to First_if_different, defaulting to 0, which
  allows to differentiate it in places where it's
  needed.
2006-08-07 15:18:21 +00:00
Sylvain Pion cb6639b85a Introduce wmult_hw(), a new abstraction for Homogeneous/Cartesian,
similar to wmult(), for calls .hw() on the last argument
(i.e., does absolutely nothing in the Cartesian case).
2006-08-07 12:34:24 +00:00
Sylvain Pion cd1cdd3188 Add missing #include. 2006-08-06 22:12:05 +00:00
Sylvain Pion cc7624fa5c Last bunch of I/O changes to alloz Lazy_kernel to pass the kernel-I/O test-suite. 2006-08-06 16:37:35 +00:00
Sylvain Pion 5d3ca03180 You believed this could be something else ? : Move Plane_3 I/O to user class level 2006-08-06 16:06:39 +00:00
Sylvain Pion 812a7c8cbd You guessed right : Move Tetrahedron_3 I/O to user class level 2006-08-06 15:59:24 +00:00
Sylvain Pion 02414e55f0 Guess what : Move Iso_cuboid_3 I/O to user class level 2006-08-06 15:55:58 +00:00
Sylvain Pion e6f5182e7a Move Triangle_3 I/O to user class level 2006-08-06 15:50:48 +00:00
Sylvain Pion 38c91de538 Move Ray_3 I/O to user class level 2006-08-06 15:45:55 +00:00
Sylvain Pion cce78c4286 Move Line_3 I/O to user class level 2006-08-06 15:40:06 +00:00
Sylvain Pion ac192e33ec Move Segment_3 I/O to user class level 2006-08-06 15:35:57 +00:00
Sylvain Pion 3634f311e2 Move Direction_3 I/O to user class level 2006-08-06 15:29:08 +00:00
Sylvain Pion ab88a8e595 Move Vector_3 I/O to user class level 2006-08-06 15:18:37 +00:00
Sylvain Pion ef0f5d103f Move Triangle_2 I/O to user class level 2006-08-05 23:31:09 +00:00
Sylvain Pion 45e65df64c Move Ray_2 I/O to user class level 2006-08-05 23:18:30 +00:00
Sylvain Pion aa9fb702a0 Move Segment_2 I/O to user class level 2006-08-05 23:04:36 +00:00
Sylvain Pion eb4be2820d Move Direction_2 I/O to user class level 2006-08-05 22:55:06 +00:00
Sylvain Pion 0e7340c184 Move Vector_2 I/O to user class level 2006-08-05 22:34:47 +00:00
Sylvain Pion 48390a019a Move Sphere_3 I/O to user class level. 2006-08-05 22:17:02 +00:00
Sylvain Pion 7bfade9820 Initialize geometric objects before passing them to predicates, otherwise Lazy_kernel barfs 2006-08-05 13:35:44 +00:00
Sylvain Pion c9de727dd2 New construction equi_distant_line(3 Point_3), with functor. 2006-08-04 15:03:16 +00:00
Sylvain Pion fcbacc1284 Have squared_distance(Point_3, Point_3) call its functor. 2006-08-04 12:41:56 +00:00
Sylvain Pion c7f1f68b40 Move Point_3 I/O to user class level. 2006-08-04 12:08:14 +00:00
Sylvain Pion ad1e880bc0 Regenerate for Lazy_kernel 2006-08-03 22:55:20 +00:00
Sylvain Pion f4be5b9920 Add overloads of circumcenter() taking only 2 Point_2 (or Point_3),
that is, the same thing as midpoint(), but with a uniform notation.
Same thing for the corresponding functor.
2006-08-03 17:07:39 +00:00
Sylvain Pion c7abea8657 Well, it now fully passes the test-suite :-)
Yeah !!!
2006-08-03 11:33:25 +00:00
Sylvain Pion fc39b60aa7 - Add a test program for the Lazy_kernel.
It's beginning to work.
2006-08-03 11:31:40 +00:00
Sylvain Pion 38b7c42bd6 Document new Iso_rectangle/Iso_cuboid constructor. 2006-08-03 09:40:42 +00:00
Sylvain Pion ea748e53d4 Add new constructor to Iso_rectangle_2(Point_2, Point_2, int).
The additional dummy "int" specifies that the 2 points are
the lower-left and upper-right corner.  This is more efficient
when one knows they are already in this configuration.

Same thing for Iso_cuboid_3, and the functors.

Use them in Cartesian_converter and Homogeneous_converter.
2006-08-03 09:40:12 +00:00
Sylvain Pion 64d8c5e77a - Remove blanks at end of line
- Make Assign_[23]::result_type be bool instead of K::Bool_type.
  (it can't be Uncertain<bool>).
2006-08-03 08:40:47 +00:00
Sylvain Pion f84245c8d1 Add determinant() to the kernel archetype as well... 2006-08-02 19:14:03 +00:00
Sylvain Pion 6ee4e656e7 Add determinant(Vector_2, Vector_2)
Add determinant(Vector_3, Vector_3, Vector_3)
And corresponding functor.
2006-08-02 18:57:40 +00:00
Sylvain Pion 540406f767 Rename FT -> RT. 2006-08-02 18:19:18 +00:00
Andreas Meyer d72148ffdb bugfix for g++-3.3 : added missing #include <CGAL/Kernel/mpl.h>
( strange: for g++-3.4/4.x, there was no problem ... )
2006-08-02 16:54:57 +00:00
Sylvain Pion 7b120847c9 Do_intersect_3 is a predicate, not a construction. 2006-08-02 12:17:19 +00:00