From 13c24e3bb8522b6cd6a00ed14b4035b7fc049f44 Mon Sep 17 00:00:00 2001 From: Pedro Machado Manhaes de Castro Date: Tue, 22 Aug 2006 13:29:03 +0000 Subject: [PATCH] Radical Plane + (some pre-conditions) --- .../internal_functions_on_sphere_3.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Circular_kernel_3/include/CGAL/Circular_kernel_3/internal_functions_on_sphere_3.h b/Circular_kernel_3/include/CGAL/Circular_kernel_3/internal_functions_on_sphere_3.h index eaeb80090e0..fd9f86e2a02 100644 --- a/Circular_kernel_3/include/CGAL/Circular_kernel_3/internal_functions_on_sphere_3.h +++ b/Circular_kernel_3/include/CGAL/Circular_kernel_3/internal_functions_on_sphere_3.h @@ -170,6 +170,8 @@ namespace CGAL { typedef typename SK::Plane_3 Plane_3; typedef typename SK::Point_3 Point_3; typedef typename SK::FT FT; + // Concentric Spheres don't have radical plane + CGAL_kernel_precondition (s1.center() != s2.center()); const FT a = 2*(s2.center().x() - s1.center().x()); const FT b = 2*(s2.center().y() - s1.center().y()); const FT c = 2*(s2.center().z() - s1.center().z()); @@ -199,6 +201,9 @@ namespace CGAL { typedef typename SK::Root_for_spheres_2_3 Root_for_spheres_2_3; typedef typename SK::FT FT; + CGAL_kernel_precondition(!p.rep().is_degenerate()); + CGAL_kernel_precondition(!s.rep().is_degenerate()); + const FT d2 = CGAL::square(p.a()*s.center().x() + p.b()*s.center().y() + p.c()*s.center().z() + p.d()) / @@ -259,6 +264,8 @@ namespace CGAL { { typedef typename SK::Plane_3 Plane_3; typedef typename SK::Sphere_3 Sphere_3; + CGAL_kernel_precondition(!s1.rep().is_degenerate()); + CGAL_kernel_precondition(!s2.rep().is_degenerate()); if(non_oriented_equal(s1,s2)) { *res++ = make_object(s1); return res; @@ -279,6 +286,8 @@ namespace CGAL { typedef typename SK::Polynomials_for_line_3 Equation_line; typedef typename SK::Root_for_spheres_2_3 Root_for_spheres_2_3; typedef typename SK::Circular_arc_point_3 Circular_arc_point_3; + CGAL_kernel_precondition(!s.rep().is_degenerate()); + CGAL_kernel_precondition(!l.rep().is_degenerate()); Equation_sphere e1 = get_equation(s); Equation_line e2 = get_equation(l); typedef std::vector< std::pair < Root_for_spheres_2_3, unsigned > > @@ -306,6 +315,9 @@ namespace CGAL { typedef typename SK::Circle_3 Circle_3; typedef typename SK::AK AK; typedef std::vector< Object > solutions_container; + CGAL_kernel_precondition(!s1.rep().is_degenerate()); + CGAL_kernel_precondition(!s2.rep().is_degenerate()); + CGAL_kernel_precondition(!s3.rep().is_degenerate()); if(non_oriented_equal(s1,s2) && non_oriented_equal(s2,s3)) { *res++ = make_object(s1); return res; @@ -365,6 +377,9 @@ namespace CGAL { typedef typename SK::Polynomial_1_3 Equation_plane; typedef typename SK::Plane_3 Plane_3; typedef typename SK::AK AK; + CGAL_kernel_precondition(!p.rep().is_degenerate()); + CGAL_kernel_precondition(!s1.rep().is_degenerate()); + CGAL_kernel_precondition(!s2.rep().is_degenerate()); if(non_oriented_equal(s1,s2)) { return intersect_3(p,s1,res); } @@ -399,6 +414,9 @@ namespace CGAL { typedef typename SK::Polynomial_for_spheres_2_3 Equation_sphere; typedef typename SK::Polynomial_1_3 Equation_plane; typedef typename SK::AK AK; + CGAL_kernel_precondition(!p1.rep().is_degenerate()); + CGAL_kernel_precondition(!p2.rep().is_degenerate()); + CGAL_kernel_precondition(!s.rep().is_degenerate()); if(non_oriented_equal(p1,p2)) { return intersect_3(p1,s,res); } @@ -476,6 +494,7 @@ namespace CGAL { typedef typename SK::Polynomials_for_line_3 Equation_line; typedef typename SK::Circle_3 Circle_3; typedef typename SK::AK AK; + CGAL_kernel_precondition(!l.rep().is_degenerate()); Equation_circle e1 = get_equation(c); Equation_line e2 = get_equation(l); typedef std::vector< std::pair < Root_for_spheres_2_3, unsigned > >