mirror of https://github.com/CGAL/cgal
removed the demos instead of dont_submit
This commit is contained in:
parent
ec51f98cd3
commit
eeafd5b16f
|
|
@ -1,51 +0,0 @@
|
|||
# CGAL_MAKEFILE = ENTER_YOUR_INCLUDE_MAKEFILE_HERE
|
||||
include $(CGAL_MAKEFILE)
|
||||
|
||||
CC = $(CGAL_CXX) $(CGAL_WINDOW_LIBPATH)
|
||||
|
||||
CGALCFLAGS = $(CGAL_CXXFLAGS)
|
||||
|
||||
CGDL = $(CGAL_LDFLAGS)
|
||||
|
||||
all: nearest_neighbor ps_test1_cgal nn_functions rs_functions rs_check_empty_circle rs_check_empty_triangle rs_check_empty_rectangle
|
||||
|
||||
ps_test1_cgal$(EXE_EXT) : ps_test1_cgal$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)ps_test1_cgal ps_test1_cgal$(OBJ_EXT) $(CGDL)
|
||||
|
||||
nearest_neighbor$(EXE_EXT) : nearest_neighbor$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)nearest_neighbor nearest_neighbor$(OBJ_EXT) $(CGDL)
|
||||
|
||||
nn_functions$(EXE_EXT): nn_functions$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)nn_functions nn_functions$(OBJ_EXT) $(CGDL)
|
||||
|
||||
rs_functions$(EXE_EXT): rs_functions$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)rs_functions rs_functions$(OBJ_EXT) $(CGDL)
|
||||
|
||||
rs_check_empty_circle$(EXE_EXT): rs_check_empty_circle$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)rs_check_empty_circle rs_check_empty_circle$(OBJ_EXT) $(CGDL)
|
||||
|
||||
rs_check_empty_triangle$(EXE_EXT): rs_check_empty_triangle$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)rs_check_empty_triangle rs_check_empty_triangle$(OBJ_EXT) $(CGDL)
|
||||
|
||||
rs_check_empty_rectangle$(EXE_EXT): rs_check_empty_rectangle$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)rs_check_empty_rectangle rs_check_empty_rectangle$(OBJ_EXT) $(CGDL)
|
||||
|
||||
rs_check_empty$(EXE_EXT): rs_check_empty$(OBJ_EXT)
|
||||
$(CC) $(EXE_OPT)rs_check_empty rs_check_empty$(OBJ_EXT) $(CGDL)
|
||||
|
||||
clean :
|
||||
rm -f tt *~ *.o *.obj *.exe core
|
||||
rm -f nearest_neighbor ps_test1_cgal nn_functions rs_functions rs_check_empty_circle rs_check_empty_triangle rs_check_empty_rectangle
|
||||
|
||||
cleano :
|
||||
rm -f *~ *.o
|
||||
|
||||
|
||||
#---------------------------------------------------------------------#
|
||||
# suffix rules
|
||||
#---------------------------------------------------------------------#
|
||||
|
||||
.cpp$(OBJ_EXT):
|
||||
$(CGAL_CXX) $(CGALCFLAGS) $(OBJ_OPT) $<
|
||||
|
||||
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
// Copyright (c) 2001, 2003 Martin-Luther-University Halle-Wittenberg (Germany).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Matthias Baesken
|
||||
|
||||
|
||||
#include <CGAL/basic.h>
|
||||
|
||||
#ifndef CGAL_USE_LEDA
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <list>
|
||||
#include <CGAL/Point_set_2.h>
|
||||
#include <CGAL/IO/Window_stream.h>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
|
||||
typedef CGAL::Point_set_2<K>::Edge_iterator Edge_iterator;
|
||||
typedef CGAL::Point_set_2<K>::Vertex_handle Vertex_handle;
|
||||
|
||||
CGAL::Point_set_2<K> PSet;
|
||||
|
||||
void output(CGAL::Window_stream& W, const CGAL::Point_set_2<K>& PS)
|
||||
{
|
||||
W.clear();
|
||||
Edge_iterator eit = PS.finite_edges_begin();
|
||||
|
||||
for(;eit != PS.finite_edges_end(); eit++) {
|
||||
CGAL::Segment_2<K> s= PS.segment(*eit);
|
||||
W << s;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void redraw(CGAL::Window_stream* wptr)
|
||||
{
|
||||
output(*wptr,PSet);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
CGAL::Window_stream W(600,500, "Finding nearest neighbor / k nearest neighbors");
|
||||
|
||||
W.init(-500,500,-400);
|
||||
W.set_redraw(redraw);
|
||||
W.display(100,100);
|
||||
|
||||
#if defined(CGAL_USE_CGAL_WINDOW)
|
||||
W.set_point_style(CGAL::disc_point);
|
||||
#else
|
||||
W.set_point_style(leda_disc_point);
|
||||
#endif
|
||||
|
||||
W.draw_text(-260,20, "Input some points; quit input with the right mouse button");
|
||||
|
||||
CGAL::Point_2<K> actual;
|
||||
/*std::cout << sizeof(actual) << "\n";*/
|
||||
|
||||
int i=0;
|
||||
|
||||
while (W >> actual){
|
||||
PSet.insert(actual);
|
||||
output(W,PSet);
|
||||
i++;
|
||||
}
|
||||
|
||||
std::cout << i << " points were inserted !\n";
|
||||
|
||||
// nearest neighbor ...
|
||||
W.draw_text(-450,-350, "Input a point; we display the nearest neighbor ... ");
|
||||
|
||||
for (i=0; i<5; i++){
|
||||
W >> actual;
|
||||
Vertex_handle v = PSet.nearest_neighbor(actual);
|
||||
|
||||
if (v != NULL) {
|
||||
|
||||
CGAL::Segment_2<K> my_seg(actual,v->point());
|
||||
|
||||
W << CGAL::RED << v->point() << CGAL::BLACK;
|
||||
W << CGAL::BLUE << my_seg << CGAL::BLACK;
|
||||
}
|
||||
}
|
||||
|
||||
// k nearest neighbors ...
|
||||
std::list<Vertex_handle> L;
|
||||
std::list<Vertex_handle>::const_iterator it;
|
||||
|
||||
output(W,PSet);
|
||||
W.draw_text(-450,-350, "Input a point; we display the 5 nearest neighbors ... ");
|
||||
|
||||
for (i=0; i<5; i++){
|
||||
L.clear();
|
||||
W >> actual;
|
||||
PSet.nearest_neighbors(actual,5, std::back_inserter(L));
|
||||
std::cout << "actual point: " << actual << "\n";
|
||||
|
||||
W.clear();
|
||||
W.draw_text(-450,-350, "Input a point; we display the 5 nearest neighbors ... ");
|
||||
output(W,PSet);
|
||||
W << CGAL::RED << actual << CGAL::BLACK;
|
||||
|
||||
for (it=L.begin();it != L.end(); it++){
|
||||
W << CGAL::GREEN << (*it)->point() << CGAL::BLACK;
|
||||
std::cout << (*it)->point() << "\n";
|
||||
}
|
||||
std::cout << "\n";
|
||||
}
|
||||
|
||||
W.read_mouse();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
// Copyright (c) 2001, 2003 Martin-Luther-University Halle-Wittenberg (Germany).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Matthias Baesken
|
||||
|
||||
#include <CGAL/basic.h>
|
||||
|
||||
#ifndef CGAL_USE_LEDA
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <list>
|
||||
#include <CGAL/IO/Window_stream.h>
|
||||
#include <CGAL/nearest_neighbor_delaunay_2.h>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
|
||||
typedef Gt::FT coord_type;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt> Delaunay;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Edge_iterator Edge_iterator;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Vertex_handle Vertex_handle;
|
||||
|
||||
Delaunay PSet;
|
||||
|
||||
void output(CGAL::Window_stream& W, const Delaunay& PS)
|
||||
{
|
||||
W.clear();
|
||||
Edge_iterator eit = PS.finite_edges_begin();
|
||||
|
||||
for(;eit != PS.finite_edges_end(); eit++) {
|
||||
CGAL::Segment_2<Gt> s= PS.segment(*eit);
|
||||
W << s;
|
||||
}
|
||||
}
|
||||
|
||||
void redraw(CGAL::Window_stream* wptr)
|
||||
{
|
||||
output(*wptr,PSet);
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
CGAL::Window_stream W(600,500, "Finding nearest neighbor / k nearest neighbors");
|
||||
|
||||
W.init(-500,500,-400);
|
||||
W.set_grid_dist(10.0);
|
||||
W.set_grid_mode(10);
|
||||
W.set_redraw(redraw);
|
||||
|
||||
W.display(100,100);
|
||||
|
||||
#if defined(CGAL_USE_CGAL_WINDOW)
|
||||
W.set_point_style(CGAL::disc_point);
|
||||
#else
|
||||
W.set_point_style(leda_disc_point);
|
||||
#endif
|
||||
|
||||
W.draw_text(-260,20, "Input some points; quit input with the right mouse button");
|
||||
|
||||
CGAL::Point_2<Gt> actual;
|
||||
int i=0;
|
||||
|
||||
while (W >> actual){
|
||||
PSet.insert(actual);
|
||||
output(W,PSet);
|
||||
i++;
|
||||
}
|
||||
|
||||
std::cout << i << " points were inserted !\n";
|
||||
|
||||
std::list<Vertex_handle> L;
|
||||
std::list<Vertex_handle>::const_iterator it, it2;
|
||||
|
||||
W.draw_text(-450,-350, "Input a point; we display the 5 nearest neighbors ... ");
|
||||
|
||||
for (i=0; i<10; i++){
|
||||
L.clear();
|
||||
W >> actual;
|
||||
|
||||
CGAL::nearest_neighbors(PSet, actual, 5, std::back_inserter(L));
|
||||
std::cout << "actual point: " << actual << "\n";
|
||||
|
||||
W.clear();
|
||||
W.draw_text(-450,-350, "Input a point; we display the 5 nearest neighbors ... ");
|
||||
output(W,PSet);
|
||||
W << CGAL::RED << actual << CGAL::BLACK;
|
||||
|
||||
for (it=L.begin();it != L.end(); it++){
|
||||
W << CGAL::GREEN << (*it)->point() << CGAL::BLACK;
|
||||
std::cout << (*it)->point() << "\n";
|
||||
}
|
||||
std::cout << "\n";
|
||||
}
|
||||
|
||||
output(W,PSet);
|
||||
W.draw_text(-450,-350, "Input a point; we perform the lookup operation ... ");
|
||||
|
||||
for (i=0; i<10; i++){
|
||||
W >> actual;
|
||||
|
||||
Vertex_handle vh = CGAL::lookup(PSet, actual);
|
||||
if (vh != NULL) {
|
||||
W << CGAL::GREEN << vh->point() << CGAL::BLACK;
|
||||
}
|
||||
}
|
||||
|
||||
W.read_mouse();
|
||||
|
||||
// k nearest neighbors of all vertices ...
|
||||
L.clear();
|
||||
|
||||
CGAL::get_vertices(PSet, std::back_inserter(L));
|
||||
for (it=L.begin();it != L.end(); it++){
|
||||
output(W,PSet);
|
||||
W.draw_text(-450,-350, "We display the 7 nearest neighbors of every vertex (the number 7 includes the vertex) ... ");
|
||||
Vertex_handle v = *it;
|
||||
std::list<Vertex_handle> act;
|
||||
CGAL::nearest_neighbors(PSet, v, 7, std::back_inserter(act));
|
||||
std::cout << "actual point: " << (*it)->point() << "\n";
|
||||
for (it2=act.begin();it2 != act.end(); it2++){
|
||||
W << CGAL::GREEN << (*it2)->point() << CGAL::BLACK;
|
||||
std::cout << (*it2)->point() << "\n";
|
||||
}
|
||||
W << CGAL::RED << (*it)->point() << CGAL::BLACK;
|
||||
W.read_mouse();
|
||||
}
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
// Copyright (c) 2001, 2003 Martin-Luther-University Halle-Wittenberg (Germany).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Matthias Baesken
|
||||
|
||||
#include <CGAL/basic.h>
|
||||
|
||||
#ifndef CGAL_USE_LEDA
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <list>
|
||||
#include <CGAL/Point_set_2.h>
|
||||
#include <CGAL/IO/Window_stream.h>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
|
||||
typedef CGAL::Point_set_2<K>::Edge_iterator Edge_iterator;
|
||||
typedef CGAL::Point_set_2<K>::Vertex_handle Vertex_handle;
|
||||
|
||||
typedef CGAL::Iso_rectangle_2<K> Rectangle;
|
||||
typedef CGAL::Triangle_2<K> Triangle;
|
||||
|
||||
|
||||
CGAL::Point_set_2<K> PS;
|
||||
|
||||
void output(CGAL::Window_stream& W, const CGAL::Point_set_2<K>& PSet)
|
||||
{
|
||||
W.clear();
|
||||
Edge_iterator eit = PSet.finite_edges_begin();
|
||||
|
||||
for(;eit != PSet.finite_edges_end(); eit++) {
|
||||
CGAL::Segment_2<K> s= PSet.segment(*eit);
|
||||
W << s;
|
||||
}
|
||||
}
|
||||
|
||||
void redraw(CGAL::Window_stream* wptr)
|
||||
{
|
||||
output(*wptr,PS);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
CGAL::Window_stream W(600,500,"Range search operations on a point set");
|
||||
//CGAL::cgalize( W);
|
||||
|
||||
W.init(-500,500,-400);
|
||||
W.set_redraw(redraw);
|
||||
W.display(100,100);
|
||||
|
||||
#if defined(CGAL_USE_CGAL_WINDOW)
|
||||
W.set_point_style(CGAL::disc_point);
|
||||
#else
|
||||
W.set_point_style(leda_disc_point);
|
||||
#endif
|
||||
|
||||
W.draw_text(-260,20, "Input some points; quit input with the right mouse button");
|
||||
|
||||
CGAL::Point_2<K> pnew;
|
||||
|
||||
while (W >> pnew) {
|
||||
PS.insert(pnew);
|
||||
output(W,PS);
|
||||
}
|
||||
|
||||
std::list<Vertex_handle>::const_iterator vit;
|
||||
std::list<Vertex_handle> LV;
|
||||
|
||||
std::cout << "circular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a circle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Circle_2<K> rc;
|
||||
|
||||
while (W >> rc) {
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a circle; we perform a range search (quit: right mouse button) ... ");
|
||||
W << rc;
|
||||
|
||||
PS.range_search(rc,std::back_inserter(LV));
|
||||
W << CGAL::RED;
|
||||
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
std::cout << "triangular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a triangle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Point_2<K> pt1,pt2,pt3,pt4;
|
||||
Triangle Tr;
|
||||
|
||||
while (W >> Tr){
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a triangle; we perform a range search (quit: right mouse button) ... ");
|
||||
W << Tr;
|
||||
|
||||
pt1=Tr[0]; pt2=Tr[1]; pt3=Tr[2];
|
||||
|
||||
PS.range_search(pt1,pt2,pt3,std::back_inserter(LV));
|
||||
W << CGAL::GREEN;
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
W << CGAL::BLACK;
|
||||
|
||||
std::cout << "rectangular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a rectangle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
Rectangle Rect;
|
||||
while (W >> Rect) {
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a rectangle; we perform a range search (quit: right mouse button) ... ");
|
||||
W << Rect;
|
||||
|
||||
pt1=Rect[3]; pt2=Rect[0]; pt3=Rect[1]; pt4=Rect[2];
|
||||
|
||||
PS.range_search(pt1,pt2,pt3,pt4,std::back_inserter(LV));
|
||||
W << CGAL::YELLOW;
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
// Copyright (c) 2001, 2003 Martin-Luther-University Halle-Wittenberg (Germany).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Matthias Baesken
|
||||
|
||||
|
||||
#include <CGAL/basic.h>
|
||||
|
||||
#ifndef CGAL_USE_LEDA
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/IO/Window_stream.h>
|
||||
#include <CGAL/range_search_delaunay_2.h>
|
||||
#include <list>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
|
||||
typedef Gt::FT coord_type;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt> Delaunay;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Edge_iterator Edge_iterator;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Vertex_handle Vertex_handle;
|
||||
|
||||
typedef Gt::Point_2 Point;
|
||||
typedef Gt::Circle_2 Circle;
|
||||
|
||||
Delaunay PS;
|
||||
|
||||
void output(CGAL::Window_stream& W, const Delaunay& PSet)
|
||||
{
|
||||
W.clear();
|
||||
Edge_iterator eit = PSet.finite_edges_begin();
|
||||
|
||||
for(;eit != PSet.finite_edges_end(); eit++) {
|
||||
CGAL::Segment_2<Gt> s= PSet.segment(*eit);
|
||||
W << s;
|
||||
}
|
||||
}
|
||||
|
||||
void redraw(CGAL::Window_stream* wptr)
|
||||
{ output(*wptr,PS); }
|
||||
|
||||
|
||||
class check_empty {
|
||||
public:
|
||||
bool result;
|
||||
Circle c;
|
||||
|
||||
check_empty(Circle cact) : result(false), c(cact) { }
|
||||
|
||||
bool get_result() const { return result; }
|
||||
void set_result(bool nr) { result=nr; }
|
||||
|
||||
bool operator()(const Point& p)
|
||||
{
|
||||
return ! c.has_on_unbounded_side(p);
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
CGAL::Window_stream W(600,500,"Range search operations on a point set checking emptiness of circles");
|
||||
|
||||
W.init(-500,500,-400);
|
||||
W.set_redraw(redraw);
|
||||
W.display(100,100);
|
||||
|
||||
#if defined(CGAL_USE_CGAL_WINDOW)
|
||||
W.set_point_style(CGAL::disc_point);
|
||||
#else
|
||||
W.set_point_style(leda_disc_point);
|
||||
#endif
|
||||
|
||||
W.draw_text(-260,20, "Input some points; quit input with the right mouse button");
|
||||
|
||||
CGAL::Point_2<Gt> pnew;
|
||||
|
||||
while (W >> pnew) {
|
||||
PS.insert(pnew);
|
||||
output(W,PS);
|
||||
}
|
||||
|
||||
std::list<Vertex_handle> LV;
|
||||
|
||||
std::cout << "circular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a circle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Circle_2<Gt> rc;
|
||||
|
||||
while (W >> rc) {
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a circle; we perform an empty circle check (quit: right mouse button) ... ");
|
||||
W << CGAL::RED; W << rc; W << CGAL::BLACK;
|
||||
|
||||
check_empty checker(rc);
|
||||
|
||||
CGAL::range_search(PS,rc,std::back_inserter(LV),checker,true);
|
||||
|
||||
if (checker.get_result()) std::cout << "circle not empty !\n";
|
||||
else std::cout << "circle was empty !\n";
|
||||
|
||||
/*
|
||||
W << CGAL::RED;
|
||||
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
*/
|
||||
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
// Copyright (c) 2001, 2003 Martin-Luther-University Halle-Wittenberg (Germany).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Matthias Baesken
|
||||
|
||||
#include <CGAL/basic.h>
|
||||
|
||||
#ifndef CGAL_USE_LEDA
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/IO/Window_stream.h>
|
||||
#include <CGAL/range_search_delaunay_2.h>
|
||||
#include <list>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
|
||||
typedef Gt::FT coord_type;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt> Delaunay;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Edge_iterator Edge_iterator;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Vertex_handle Vertex_handle;
|
||||
|
||||
typedef Gt::Point_2 Point;
|
||||
typedef Gt::Circle_2 Circle;
|
||||
typedef Gt::Iso_rectangle_2 Rectangle;
|
||||
|
||||
Delaunay PS;
|
||||
|
||||
void output(CGAL::Window_stream& W, const Delaunay& PSet)
|
||||
{
|
||||
W.clear();
|
||||
Edge_iterator eit = PSet.finite_edges_begin();
|
||||
|
||||
for(;eit != PSet.finite_edges_end(); eit++) {
|
||||
CGAL::Segment_2<Gt> s= PSet.segment(*eit);
|
||||
W << s;
|
||||
}
|
||||
}
|
||||
|
||||
void redraw(CGAL::Window_stream* wptr)
|
||||
{ output(*wptr,PS); }
|
||||
|
||||
|
||||
class check_empty_rectangle {
|
||||
public:
|
||||
bool result;
|
||||
Rectangle r;
|
||||
|
||||
check_empty_rectangle(Rectangle ract) : result(false), r(ract) { }
|
||||
|
||||
bool get_result() const { return result; }
|
||||
void set_result(bool nr) { result=nr; }
|
||||
|
||||
bool operator()(const Point& p)
|
||||
{
|
||||
return ! r.has_on_unbounded_side(p);
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
CGAL::Window_stream W(600,500,"Range search operations on a point set checking emptiness of triangles");
|
||||
|
||||
W.init(-500,500,-400);
|
||||
W.set_redraw(redraw);
|
||||
W.display(100,100);
|
||||
|
||||
#if defined(CGAL_USE_CGAL_WINDOW)
|
||||
W.set_point_style(CGAL::disc_point);
|
||||
#else
|
||||
W.set_point_style(leda_disc_point);
|
||||
#endif
|
||||
|
||||
W.draw_text(-260,20, "Input some points; quit input with the right mouse button");
|
||||
|
||||
CGAL::Point_2<Gt> pnew;
|
||||
|
||||
while (W >> pnew) {
|
||||
PS.insert(pnew);
|
||||
output(W,PS);
|
||||
}
|
||||
|
||||
std::list<Vertex_handle> LV;
|
||||
|
||||
std::cout << "rectangular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a rectangle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Iso_rectangle_2<Gt> rc;
|
||||
|
||||
while (W >> rc) {
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a rectangle; we perform an empty rectangle check (quit: right mouse button) ... ");
|
||||
W << CGAL::RED; W << rc; W << CGAL::BLACK;
|
||||
|
||||
check_empty_rectangle checker(rc);
|
||||
|
||||
CGAL::range_search(PS,rc.vertex(0),rc.vertex(1),rc.vertex(2),rc.vertex(3),std::back_inserter(LV),checker,true);
|
||||
|
||||
if (checker.get_result()) std::cout << "rectangle not empty !\n";
|
||||
else std::cout << "rectangle was empty !\n";
|
||||
|
||||
/*
|
||||
W << CGAL::RED;
|
||||
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
*/
|
||||
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,136 +0,0 @@
|
|||
// Copyright (c) 2001, 2003 Martin-Luther-University Halle-Wittenberg (Germany).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Matthias Baesken
|
||||
|
||||
|
||||
#include <CGAL/basic.h>
|
||||
|
||||
#ifndef CGAL_USE_LEDA
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/IO/Window_stream.h>
|
||||
#include <CGAL/range_search_delaunay_2.h>
|
||||
#include <list>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
|
||||
typedef Gt::FT coord_type;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt> Delaunay;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Edge_iterator Edge_iterator;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Vertex_handle Vertex_handle;
|
||||
|
||||
typedef Gt::Point_2 Point;
|
||||
typedef Gt::Circle_2 Circle;
|
||||
typedef Gt::Triangle_2 Triangle;
|
||||
|
||||
Delaunay PS;
|
||||
|
||||
void output(CGAL::Window_stream& W, const Delaunay& PSet)
|
||||
{
|
||||
W.clear();
|
||||
Edge_iterator eit = PSet.finite_edges_begin();
|
||||
|
||||
for(;eit != PSet.finite_edges_end(); eit++) {
|
||||
CGAL::Segment_2<Gt> s= PSet.segment(*eit);
|
||||
W << s;
|
||||
}
|
||||
}
|
||||
|
||||
void redraw(CGAL::Window_stream* wptr)
|
||||
{ output(*wptr,PS); }
|
||||
|
||||
|
||||
class check_empty_triangle {
|
||||
public:
|
||||
bool result;
|
||||
Triangle t;
|
||||
|
||||
check_empty_triangle(Triangle tact) : result(false), t(tact) { }
|
||||
|
||||
bool get_result() const { return result; }
|
||||
void set_result(bool nr) { result=nr; }
|
||||
|
||||
bool operator()(const Point& p)
|
||||
{
|
||||
return ! t.has_on_unbounded_side(p);
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
CGAL::Window_stream W(600,500,"Range search operations on a point set checking emptiness of triangles");
|
||||
|
||||
W.init(-500,500,-400);
|
||||
W.set_redraw(redraw);
|
||||
W.display(100,100);
|
||||
|
||||
#if defined(CGAL_USE_CGAL_WINDOW)
|
||||
W.set_point_style(CGAL::disc_point);
|
||||
#else
|
||||
W.set_point_style(leda_disc_point);
|
||||
#endif
|
||||
|
||||
W.draw_text(-260,20, "Input some points; quit input with the right mouse button");
|
||||
|
||||
CGAL::Point_2<Gt> pnew;
|
||||
|
||||
while (W >> pnew) {
|
||||
PS.insert(pnew);
|
||||
output(W,PS);
|
||||
}
|
||||
|
||||
std::list<Vertex_handle> LV;
|
||||
|
||||
std::cout << "triangular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a triangle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Triangle_2<Gt> tc;
|
||||
|
||||
while (W >> tc) {
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a triangle; we perform an empty triangle check (quit: right mouse button) ... ");
|
||||
W << CGAL::RED; W << tc; W << CGAL::BLACK;
|
||||
|
||||
check_empty_triangle checker(tc);
|
||||
|
||||
CGAL::range_search(PS,tc.vertex(0),tc.vertex(1),tc.vertex(2),std::back_inserter(LV),checker,true);
|
||||
|
||||
if (checker.get_result()) std::cout << "triangle not empty !\n";
|
||||
else std::cout << "triangle was empty !\n";
|
||||
|
||||
/*
|
||||
W << CGAL::RED;
|
||||
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
*/
|
||||
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,156 +0,0 @@
|
|||
// Copyright (c) 2001, 2003 Martin-Luther-University Halle-Wittenberg (Germany).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Matthias Baesken
|
||||
|
||||
#include <CGAL/basic.h>
|
||||
|
||||
#ifndef CGAL_USE_LEDA
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/IO/Window_stream.h>
|
||||
#include <CGAL/range_search_delaunay_2.h>
|
||||
#include <list>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
|
||||
typedef Gt::FT coord_type;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt> Delaunay;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Edge_iterator Edge_iterator;
|
||||
typedef CGAL::Delaunay_triangulation_2<Gt>::Vertex_handle Vertex_handle;
|
||||
|
||||
Delaunay PS;
|
||||
|
||||
void output(CGAL::Window_stream& W, const Delaunay& PSet)
|
||||
{
|
||||
W.clear();
|
||||
Edge_iterator eit = PSet.finite_edges_begin();
|
||||
|
||||
for(;eit != PSet.finite_edges_end(); eit++) {
|
||||
CGAL::Segment_2<Gt> s= PSet.segment(*eit);
|
||||
W << s;
|
||||
}
|
||||
}
|
||||
|
||||
void redraw(CGAL::Window_stream* wptr)
|
||||
{
|
||||
output(*wptr,PS);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
CGAL::Window_stream W(600,500,"Range search operations on a point set");
|
||||
|
||||
W.init(-500,500,-400);
|
||||
W.set_redraw(redraw);
|
||||
W.display(100,100);
|
||||
|
||||
#if defined(CGAL_USE_CGAL_WINDOW)
|
||||
W.set_point_style(CGAL::disc_point);
|
||||
#else
|
||||
W.set_point_style(leda_disc_point);
|
||||
#endif
|
||||
|
||||
W.draw_text(-260,20, "Input some points; quit input with the right mouse button");
|
||||
|
||||
CGAL::Point_2<Gt> pnew;
|
||||
|
||||
while (W >> pnew) {
|
||||
PS.insert(pnew);
|
||||
output(W,PS);
|
||||
}
|
||||
|
||||
std::list<Vertex_handle>::const_iterator vit;
|
||||
std::list<Vertex_handle> LV;
|
||||
|
||||
std::cout << "circular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a circle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Circle_2<Gt> rc;
|
||||
|
||||
while (W >> rc) {
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a circle; we perform a range search (quit: right mouse button) ... ");
|
||||
W << rc;
|
||||
|
||||
CGAL::range_search(PS,rc,std::back_inserter(LV));
|
||||
W << CGAL::RED;
|
||||
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
std::cout << "triangular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a triangle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Point_2<Gt> pt1,pt2,pt3,pt4;
|
||||
CGAL::Triangle_2<Gt> Tr;
|
||||
|
||||
while (W >> Tr){
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a triangle; we perform a range search (quit: right mouse button) ... ");
|
||||
W << Tr;
|
||||
|
||||
pt1=Tr[0]; pt2=Tr[1]; pt3=Tr[2];
|
||||
|
||||
CGAL::range_search(PS,pt1,pt2,pt3,std::back_inserter(LV));
|
||||
W << CGAL::GREEN;
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
W << CGAL::BLACK;
|
||||
|
||||
std::cout << "rectangular range search !\n";
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a rectangle; we perform a range search (quit: right mouse button) ... ");
|
||||
|
||||
CGAL::Iso_rectangle_2<Gt> Rect;
|
||||
while (W >> Rect) {
|
||||
W << CGAL::BLACK;
|
||||
output(W,PS);
|
||||
W.draw_text(-450,-350, "Input a rectangle; we perform a range search (quit: right mouse button) ... ");
|
||||
W << Rect;
|
||||
|
||||
pt1=Rect[3]; pt2=Rect[0]; pt3=Rect[1]; pt4=Rect[2];
|
||||
|
||||
CGAL::range_search(PS,pt1,pt2,pt3,pt4,std::back_inserter(LV));
|
||||
W << CGAL::YELLOW;
|
||||
for(vit=LV.begin(); vit!=LV.end(); vit++){
|
||||
W << (*vit)->point();
|
||||
}
|
||||
LV.clear();
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue