From 5ae467dbc7b2daefe0719984a41bd6c3ba384582 Mon Sep 17 00:00:00 2001 From: Barend Gehrels Date: Sat, 14 Jul 2012 16:53:22 +0000 Subject: [PATCH] [geometry] removed tabs in cart_intersect.hpp [SVN r79504] --- .../strategies/cartesian/cart_intersect.hpp | 166 +++++++++--------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/include/boost/geometry/strategies/cartesian/cart_intersect.hpp b/include/boost/geometry/strategies/cartesian/cart_intersect.hpp index ed0f50087..540bc704c 100644 --- a/include/boost/geometry/strategies/cartesian/cart_intersect.hpp +++ b/include/boost/geometry/strategies/cartesian/cart_intersect.hpp @@ -172,28 +172,28 @@ struct relate_cartesian_segments >::type promoted_type; // r: ratio 0-1 where intersection divides A/B - // (only calculated for non-collinear segments) - promoted_type r; - if (! collinear) - { - // Calculate determinants - Cramers rule - coordinate_type const wx = get<0, 0>(a) - get<0, 0>(b); - coordinate_type const wy = get<0, 1>(a) - get<0, 1>(b); - coordinate_type const d = geometry::detail::determinant(dx_a, dy_a, dx_b, dy_b); - coordinate_type const da = geometry::detail::determinant(dx_b, dy_b, wx, wy); + // (only calculated for non-collinear segments) + promoted_type r; + if (! collinear) + { + // Calculate determinants - Cramers rule + coordinate_type const wx = get<0, 0>(a) - get<0, 0>(b); + coordinate_type const wy = get<0, 1>(a) - get<0, 1>(b); + coordinate_type const d = geometry::detail::determinant(dx_a, dy_a, dx_b, dy_b); + coordinate_type const da = geometry::detail::determinant(dx_b, dy_b, wx, wy); - coordinate_type const zero = coordinate_type(); - if (math::equals(d, zero)) - { - // This is still a collinear case (because of FP imprecision this can occur here) - // sides.debug(); - sides.set<0>(0,0); - sides.set<1>(0,0); - collinear = true; - } - else - { - r = da / d; + coordinate_type const zero = coordinate_type(); + if (math::equals(d, zero)) + { + // This is still a collinear case (because of FP imprecision this can occur here) + // sides.debug(); + sides.set<0>(0,0); + sides.set<1>(0,0); + collinear = true; + } + else + { + r = da / d; if (! robustness_verify_r(a, b, r)) { @@ -207,8 +207,8 @@ struct relate_cartesian_segments return Policy::disjoint(); } - } - } + } + } if(collinear) { @@ -218,7 +218,7 @@ struct relate_cartesian_segments } else { - // Y direction contains larger segments (maybe dx is zero) + // Y direction contains larger segments (maybe dx is zero) return relate_collinear<1>(a, b); } } @@ -231,23 +231,23 @@ struct relate_cartesian_segments private : - // Ratio should lie between 0 and 1 - // Also these three conditions might be of FP imprecision, the segments were actually (nearly) collinear + // Ratio should lie between 0 and 1 + // Also these three conditions might be of FP imprecision, the segments were actually (nearly) collinear template static inline bool robustness_verify_r( segment_type1 const& a, segment_type2 const& b, T& r) { - T const zero = 0; - T const one = 1; + T const zero = 0; + T const one = 1; if (r < zero || r > one) { - if (verify_disjoint<0>(a, b) || verify_disjoint<1>(a, b)) - { - // Can still be disjoint (even if not one is left or right from another) + if (verify_disjoint<0>(a, b) || verify_disjoint<1>(a, b)) + { + // Can still be disjoint (even if not one is left or right from another) // This is e.g. in case #snake4 of buffer test. - return false; - } + return false; + } //std::cout << "ROBUSTNESS: correction of r " << r << std::endl; // sides.debug(); @@ -273,7 +273,7 @@ private : } else if (r < zero) { - r = zero; + r = zero; } } return true; @@ -284,16 +284,16 @@ private : side_info& sides, bool& collinear) { - if ((sides.zero<0>() && ! sides.zero<1>()) || (sides.zero<1>() && ! sides.zero<0>())) - { - // If one of the segments is collinear, the other must be as well. - // So handle it as collinear. - // (In float/double epsilon margins it can easily occur that one or two of them are -1/1) - // sides.debug(); + if ((sides.zero<0>() && ! sides.zero<1>()) || (sides.zero<1>() && ! sides.zero<0>())) + { + // If one of the segments is collinear, the other must be as well. + // So handle it as collinear. + // (In float/double epsilon margins it can easily occur that one or two of them are -1/1) + // sides.debug(); sides.set<0>(0,0); sides.set<1>(0,0); collinear = true; - } + } } static inline void robustness_verify_meeting( @@ -389,11 +389,11 @@ private : { if (sides.one_of_all_zero()) { - if (verify_disjoint<0>(a, b) || verify_disjoint<1>(a, b)) - { - return true; + if (verify_disjoint<0>(a, b) || verify_disjoint<1>(a, b)) + { + return true; } - } + } return false; } @@ -412,11 +412,11 @@ private : T const db = geometry::detail::determinant(dx_a, dy_a, wx, wy); - R const zero = 0; - R const one = 1; + R const zero = 0; + R const one = 1; if (math::equals(r, zero) || math::equals(r, one)) { - R rb = db / d; + R rb = db / d; if (rb <= 0 || rb >= 1 || math::equals(rb, 0) || math::equals(rb, 1)) { if (sides.one_zero<0>() && ! sides.one_zero<1>()) // or vice versa @@ -432,16 +432,16 @@ private : } } - template + template static inline bool verify_disjoint(segment_type1 const& a, - segment_type2 const& b) - { - coordinate_type a_1, a_2, b_1, b_2; - bool a_swapped = false, b_swapped = false; - detail::segment_arrange(a, a_1, a_2, a_swapped); - detail::segment_arrange(b, b_1, b_2, b_swapped); - return math::smaller(a_2, b_1) || math::larger(a_1, b_2); - } + segment_type2 const& b) + { + coordinate_type a_1, a_2, b_1, b_2; + bool a_swapped = false, b_swapped = false; + detail::segment_arrange(a, a_1, a_2, a_swapped); + detail::segment_arrange(b, b_1, b_2, b_swapped); + return math::smaller(a_2, b_1) || math::larger(a_1, b_2); + } template static inline typename point_type::type select(int index, Segment const& segment) @@ -476,10 +476,10 @@ private : template static inline bool analyse_equal(segment_type1 const& a, segment_type2 const& b) { - coordinate_type const a_1 = geometry::get<0, Dimension>(a); - coordinate_type const a_2 = geometry::get<1, Dimension>(a); - coordinate_type const b_1 = geometry::get<0, Dimension>(b); - coordinate_type const b_2 = geometry::get<1, Dimension>(b); + coordinate_type const a_1 = geometry::get<0, Dimension>(a); + coordinate_type const a_2 = geometry::get<1, Dimension>(a); + coordinate_type const b_1 = geometry::get<0, Dimension>(b); + coordinate_type const b_2 = geometry::get<1, Dimension>(b); return math::equals(a_1, b_1) || math::equals(a_2, b_1) || math::equals(a_1, b_2) @@ -487,21 +487,21 @@ private : ; } - template + template static inline return_type relate_collinear(segment_type1 const& a, - segment_type2 const& b) - { - coordinate_type a_1, a_2, b_1, b_2; - bool a_swapped = false, b_swapped = false; - detail::segment_arrange(a, a_1, a_2, a_swapped); - detail::segment_arrange(b, b_1, b_2, b_swapped); - if (math::smaller(a_2, b_1) || math::larger(a_1, b_2)) - //if (a_2 < b_1 || a_1 > b_2) - { - return Policy::disjoint(); - } + segment_type2 const& b) + { + coordinate_type a_1, a_2, b_1, b_2; + bool a_swapped = false, b_swapped = false; + detail::segment_arrange(a, a_1, a_2, a_swapped); + detail::segment_arrange(b, b_1, b_2, b_swapped); + if (math::smaller(a_2, b_1) || math::larger(a_1, b_2)) + //if (a_2 < b_1 || a_1 > b_2) + { + return Policy::disjoint(); + } return relate_collinear(a, b, a_1, a_2, b_1, b_2, a_swapped, b_swapped); - } + } /// Relate segments known collinear static inline return_type relate_collinear(segment_type1 const& a @@ -535,22 +535,22 @@ private : bool const both_swapped = a_swapped && b_swapped; // Check if segments are equal or opposite equal... - bool const swapped_a1_eq_b1 = math::equals(a_1, b_1); - bool const swapped_a2_eq_b2 = math::equals(a_2, b_2); + bool const swapped_a1_eq_b1 = math::equals(a_1, b_1); + bool const swapped_a2_eq_b2 = math::equals(a_2, b_2); if (swapped_a1_eq_b1 && swapped_a2_eq_b2) { return Policy::segment_equal(a, opposite); } - bool const swapped_a2_eq_b1 = math::equals(a_2, b_1); - bool const swapped_a1_eq_b2 = math::equals(a_1, b_2); + bool const swapped_a2_eq_b1 = math::equals(a_2, b_1); + bool const swapped_a1_eq_b2 = math::equals(a_1, b_2); - bool const a1_eq_b1 = both_swapped ? swapped_a2_eq_b2 : a_swapped ? swapped_a2_eq_b1 : b_swapped ? swapped_a1_eq_b2 : swapped_a1_eq_b1; - bool const a2_eq_b2 = both_swapped ? swapped_a1_eq_b1 : a_swapped ? swapped_a1_eq_b2 : b_swapped ? swapped_a2_eq_b1 : swapped_a2_eq_b2; + bool const a1_eq_b1 = both_swapped ? swapped_a2_eq_b2 : a_swapped ? swapped_a2_eq_b1 : b_swapped ? swapped_a1_eq_b2 : swapped_a1_eq_b1; + bool const a2_eq_b2 = both_swapped ? swapped_a1_eq_b1 : a_swapped ? swapped_a1_eq_b2 : b_swapped ? swapped_a2_eq_b1 : swapped_a2_eq_b2; - bool const a1_eq_b2 = both_swapped ? swapped_a2_eq_b1 : a_swapped ? swapped_a2_eq_b2 : b_swapped ? swapped_a1_eq_b1 : swapped_a1_eq_b2; - bool const a2_eq_b1 = both_swapped ? swapped_a1_eq_b2 : a_swapped ? swapped_a1_eq_b1 : b_swapped ? swapped_a2_eq_b2 : swapped_a2_eq_b1; + bool const a1_eq_b2 = both_swapped ? swapped_a2_eq_b1 : a_swapped ? swapped_a2_eq_b2 : b_swapped ? swapped_a1_eq_b1 : swapped_a1_eq_b2; + bool const a2_eq_b1 = both_swapped ? swapped_a1_eq_b2 : a_swapped ? swapped_a1_eq_b1 : b_swapped ? swapped_a2_eq_b2 : swapped_a2_eq_b1; @@ -722,7 +722,7 @@ private : ; } // Nothing should goes through. If any we have made an error - // std::cout << "Robustness issue, non-logical behaviour" << std::endl; + // std::cout << "Robustness issue, non-logical behaviour" << std::endl; return Policy::error("Robustness issue, non-logical behaviour"); } };