// test 2d extensions ... #include #include #include #include #include #if defined(LEDA_NAMESPACE) using namespace leda; #endif typedef CGAL::leda_rat_kernel_traits K; typedef K::Point_2 Point; typedef K::Do_intersect_to_right_2 Do_intersect_to_right_2; typedef K::Do_intersect_to_left_2 Do_intersect_to_left_2; bool cgal_do_intersect_to_right(const leda_rat_segment& c1, const leda_rat_segment& c2, const leda_rat_point& pt) { leda_rat_segment seg; bool res = c1.intersection(c2, seg); if (! res) return false; if (seg.start() == seg.end()) { // point ... return (leda_rat_point::cmp_xy(seg.start(), pt) == 1); } // intersection result is a segment ... return ( (leda_rat_point::cmp_xy(seg.start(), pt) == 1) || (leda_rat_point::cmp_xy(seg.end(), pt) == 1) ); } bool cgal_do_intersect_to_left(const leda_rat_segment& c1, const leda_rat_segment& c2, const leda_rat_point& pt) { leda_rat_segment seg; bool res = c1.intersection(c2, seg); if (! res) return false; if (seg.start() == seg.end()) { // point ... return (leda_rat_point::cmp_xy(seg.start(), pt) == -1); } // intersection result is a segment ... return ( (leda_rat_point::cmp_xy(seg.start(), pt) == -1) || (leda_rat_point::cmp_xy(seg.end(), pt) == -1) ); } void my_random_point_in_square(leda_rat_point& p, int maxc) { random_point_in_square(p, maxc); // generate w value ... leda_random_source S(1,10); int w; S >> w; p = leda_rat_point(p.X()*w,p.Y()*w,p.W()*w); } int main() { int number_of_tests = 100000, i; std::cout << "test intersection to right ...\n"; Do_intersect_to_right_2 do_intersect_to_right; Do_intersect_to_left_2 do_intersect_to_left; for(i=0; i