mirror of https://github.com/CGAL/cgal
consistency of Naive
This commit is contained in:
parent
fd46d789eb
commit
2fbd64a8e5
|
|
@ -30,7 +30,6 @@
|
|||
#include <CGAL/Ray_2.h>
|
||||
#include <CGAL/tags.h>
|
||||
#include <CGAL/enum.h>
|
||||
#include <CGAL/bounding_box.h>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
|
|
@ -45,6 +44,7 @@ void print(std::vector<Point_handle> ps){
|
|||
|
||||
template <typename Arrangement_2, typename RegularizationTag>
|
||||
class Naive_visibility_2 {
|
||||
public:
|
||||
typedef Arrangement_2 Input_arrangement_2;
|
||||
typedef Arrangement_2 Output_arrangement_2;
|
||||
typedef typename Arrangement_2::Geometry_traits_2 Geometry_traits_2;
|
||||
|
|
@ -71,16 +71,14 @@ class Naive_visibility_2 {
|
|||
|
||||
enum Intersection_type { UNBOUNDED, CORNER, INNER };
|
||||
|
||||
public:
|
||||
//members
|
||||
Arrangement_2 arr;
|
||||
|
||||
|
||||
//functions
|
||||
Naive_visibility_2(const Arrangement_2 &arr):arr(arr), attach_tag(true) {}
|
||||
Naive_visibility_2(const Input_arrangement_2 &arr):arr_env(arr), attach_tag(true) {}
|
||||
Naive_visibility_2(): attach_tag(false) {}
|
||||
|
||||
Face_const_handle visibility_region(const Point_2 &q, Halfedge_const_handle &e, Arrangement_2 &out_arr) {
|
||||
Arrangement_2 arrc = arr ; //copy of arr;
|
||||
Face_const_handle visibility_region(const Point_2 &q, Halfedge_const_handle e, Output_arrangement_2 &out_arr) {
|
||||
Arrangement_2 arrc = arr_env ; //copy of arr;
|
||||
Halfedge_handle ec; //copy of edge;
|
||||
for (Halfedge_handle eh = arrc.edges_begin(); eh != arrc.edges_end(); eh++) {
|
||||
if (eh->source()->point() == e-> source()->point() && eh->target()->point() == e->target()->point()) {
|
||||
|
|
@ -232,7 +230,7 @@ public:
|
|||
|
||||
}
|
||||
|
||||
Face_const_handle visibility_region(const Point_2 &q, Face_const_handle fh, Arrangement_2 &out_arr) {
|
||||
Face_const_handle visibility_region(const Point_2 &q, Face_const_handle fh, Output_arrangement_2 &out_arr) {
|
||||
std::vector<Point_2> polygon;
|
||||
visibility_region_impl(q, fh, polygon);
|
||||
build_arr(polygon, out_arr);
|
||||
|
|
@ -247,18 +245,25 @@ public:
|
|||
return attach_tag;
|
||||
}
|
||||
|
||||
void attach(Arrangement_2 arr) {
|
||||
this->arr = arr;
|
||||
this->attach_tag = true;
|
||||
void attach(const Input_arrangement_2 &arr) {
|
||||
arr_env = arr;
|
||||
attach_tag = true;
|
||||
}
|
||||
void detach() {
|
||||
attach_tag = false;
|
||||
}
|
||||
|
||||
const Input_arrangement_2& arr() {
|
||||
return arr_env;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
//members
|
||||
Input_arrangement_2 arr_env;
|
||||
bool attach_tag;
|
||||
// return the intersection of a ray and a segment. if the intersection is a segment, return the end closer to the source of ray.
|
||||
//-----------------------------
|
||||
//functions
|
||||
// if there is no intersection, return the source of ray.
|
||||
/*!
|
||||
obtain the vertices of visibility into polygon. these vertices can be used to build output arrangement by build_arr().
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ public:
|
|||
vertices.clear();
|
||||
}
|
||||
|
||||
Input_arrangement_2 arr() {
|
||||
const Input_arrangement_2& arr() {
|
||||
return *p_arr;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@
|
|||
#include <CGAL/Arrangement_2.h>
|
||||
#include <CGAL/test_model_methods.h>
|
||||
#include <CGAL/test_utils.h>
|
||||
#include <CGAL/test_simple_polygons.h>
|
||||
#include <CGAL/Simple_polygon_visibility_2.h>
|
||||
#include <CGAL/Naive_visibility_2.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
|
@ -41,11 +40,12 @@ int main() {
|
|||
typedef Traits_2::Point_2 Point_2;
|
||||
typedef Traits_2::X_monotone_curve_2 Segment_2;
|
||||
typedef CGAL::Arrangement_2<Traits_2> Arrangement_2;
|
||||
typedef CGAL::Simple_polygon_visibility_2<Arrangement_2, CGAL::Tag_false>
|
||||
Simple_polygon_visibility_2;
|
||||
typedef CGAL::Naive_visibility_2<Arrangement_2, CGAL::Tag_false>
|
||||
Naive_visibility_2;
|
||||
|
||||
CGAL::test_model_methods<Simple_polygon_visibility_2>();
|
||||
CGAL::run_tests<Simple_polygon_visibility_2>(1);
|
||||
CGAL::test_model_methods<Naive_visibility_2>();
|
||||
std::cout << "Running test suite with " << GREEN << "Cartesian" << RESET << " Kernel..." << std::endl;
|
||||
CGAL::run_tests<Naive_visibility_2>(1);
|
||||
}
|
||||
{
|
||||
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
|
||||
|
|
@ -53,10 +53,12 @@ int main() {
|
|||
typedef Traits_2::Point_2 Point_2;
|
||||
typedef Traits_2::X_monotone_curve_2 Segment_2;
|
||||
typedef CGAL::Arrangement_2<Traits_2> Arrangement_2;
|
||||
typedef CGAL::Simple_polygon_visibility_2<Arrangement_2, CGAL::Tag_false>
|
||||
Simple_polygon_visibility_2;
|
||||
typedef CGAL::Naive_visibility_2<Arrangement_2, CGAL::Tag_false>
|
||||
Naive_visibility_2;
|
||||
|
||||
CGAL::test_model_methods<Simple_polygon_visibility_2>();
|
||||
CGAL::test_model_methods<Naive_visibility_2>();
|
||||
std::cout << "Running test suite with " << GREEN << "EPECK" << RESET << " Kernel..." << std::endl;
|
||||
CGAL::run_tests<Naive_visibility_2>(1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue