mirror of https://github.com/CGAL/cgal
Add generators for benchmark data sets
This commit is contained in:
parent
76fca27990
commit
cc155db930
|
|
@ -0,0 +1,33 @@
|
|||
# Created by the script cgal_create_cmake_script
|
||||
# This is the CMake script for compiling a CGAL application.
|
||||
|
||||
|
||||
project( Generator_example )
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5)
|
||||
|
||||
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
|
||||
|
||||
if ( COMMAND cmake_policy )
|
||||
cmake_policy( SET CMP0003 NEW )
|
||||
endif()
|
||||
|
||||
find_package(CGAL QUIET COMPONENTS Core )
|
||||
|
||||
if ( CGAL_FOUND )
|
||||
|
||||
include( ${CGAL_USE_FILE} )
|
||||
|
||||
include( CGAL_CreateSingleSourceCGALProgram )
|
||||
|
||||
include_directories (BEFORE ../../include)
|
||||
|
||||
create_single_source_cgal_program( "random_grid.cpp" )
|
||||
create_single_source_cgal_program( "random_disc_2.cpp" )
|
||||
|
||||
else()
|
||||
|
||||
message(STATUS "This program requires the CGAL library, and will not be compiled.")
|
||||
|
||||
endif()
|
||||
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
|
||||
#include <boost/program_options.hpp>
|
||||
namespace po = boost::program_options;
|
||||
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <cassert>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <CGAL/point_generators_2.h>
|
||||
#include <CGAL/algorithm.h>
|
||||
|
||||
using namespace CGAL;
|
||||
|
||||
typedef Simple_cartesian<double> K;
|
||||
typedef K::Point_2 Point;
|
||||
typedef Creator_uniform_2<int,Point> Creator;
|
||||
|
||||
|
||||
void
|
||||
disk(int N, double radius)
|
||||
{
|
||||
std::cout.precision(12);
|
||||
CGAL::Random_points_in_disc_2<Point> rng(radius);
|
||||
std::cout << N << std::endl;
|
||||
for(double i = 0; i < N; i++){
|
||||
std::cout << *rng << std::endl;
|
||||
++rng;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int N= 10;
|
||||
double radius = 1;
|
||||
try {
|
||||
|
||||
po::options_description desc("Allowed options");
|
||||
desc.add_options()
|
||||
("help", "Generator of perturbed points in a disk")
|
||||
("N", po::value<int>(), "generate N points")
|
||||
("radius", po::value<double>(), "radius of the disc")
|
||||
;
|
||||
|
||||
po::variables_map vm;
|
||||
po::store(po::parse_command_line(argc, argv, desc), vm);
|
||||
po::notify(vm);
|
||||
|
||||
if (vm.count("help")) {
|
||||
std::cout << desc << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (vm.count("N")) {
|
||||
N = vm["N"].as<int>();
|
||||
}
|
||||
|
||||
if (vm.count("radius")) {
|
||||
radius = vm["radius"].as<double>();
|
||||
}
|
||||
}
|
||||
catch(std::exception& e) {
|
||||
std::cerr << "error: " << e.what() << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
disk(N, radius);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
|
||||
#include <boost/program_options.hpp>
|
||||
namespace po = boost::program_options;
|
||||
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <cassert>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <CGAL/point_generators_2.h>
|
||||
#include <CGAL/algorithm.h>
|
||||
|
||||
using namespace CGAL;
|
||||
|
||||
typedef Simple_cartesian<int> K;
|
||||
typedef K::Point_2 Point;
|
||||
typedef Creator_uniform_2<int,Point> Creator;
|
||||
|
||||
|
||||
void
|
||||
grid(int N, double eps)
|
||||
{
|
||||
CGAL::Random rng;
|
||||
std::cout << N*N << std::endl;
|
||||
for(double i = 0; i < N; i++){
|
||||
for(double j = 0; j < N; j++){
|
||||
std::cout << i + rng.get_double(-eps,eps) << " "
|
||||
<< j + rng.get_double(-eps,eps) << "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int N= 10;
|
||||
double eps = 0;
|
||||
try {
|
||||
|
||||
po::options_description desc("Allowed options");
|
||||
desc.add_options()
|
||||
("help", "Generator of perturbed points on a grid")
|
||||
("N", po::value<int>(), "generate a grid with N x N points")
|
||||
("eps", po::value<double>(), "perturb x and y of points by eps")
|
||||
;
|
||||
|
||||
po::variables_map vm;
|
||||
po::store(po::parse_command_line(argc, argv, desc), vm);
|
||||
po::notify(vm);
|
||||
|
||||
if (vm.count("help")) {
|
||||
std::cout << desc << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (vm.count("N")) {
|
||||
N = vm["N"].as<int>();
|
||||
}
|
||||
|
||||
if (vm.count("eps")) {
|
||||
eps = vm["eps"].as<double>();
|
||||
}
|
||||
}
|
||||
catch(std::exception& e) {
|
||||
std::cerr << "error: " << e.what() << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
grid(N,eps);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1 +1,2 @@
|
|||
qt3
|
||||
benchmark
|
||||
|
|
|
|||
Loading…
Reference in New Issue