virtual void go() { release(); param *p = param::instance(); update_values(p); Iso_rectangle_2 bbox = get_bbox(p); std::string ndvi_file = p->get<boost::filesystem::path>("ndvi").string(); std::string dsm_file = p->get<boost::filesystem::path>("dsm" ).string(); clip_bbox(bbox,ndvi_file); clip_bbox(bbox,dsm_file ); gradient_functor gf(p->get<double>("sigmaD")); oriented_gradient_view grad_view(dsm_file, bbox, gf); oriented_ndvi_view ndvi_view(ndvi_file, bbox); m_confg_visitor->add_layer(ndvi_file); m_confg_visitor->add_layer(dsm_file); set_bbox(p,bbox); wxPoint p0(wxCoord(bbox.min().x()),wxCoord(bbox.min().y())); wxPoint p1(wxCoord(bbox.max().x()),wxCoord(bbox.max().y())); m_confg_visitor->set_bbox(wxRect(p0,p1)); init_visitor (p,*m_visitor); create_configuration(p,grad_view,ndvi_view,m_config); create_sampler (p,m_sampler); create_schedule (p,m_schedule); create_end_test (p,m_end_test); m_thread = new boost::thread( simulated_annealing::optimize<configuration,sampler,schedule,end_test,visitor>, boost::ref(*m_config), boost::ref(*m_sampler), boost::ref(*m_schedule), boost::ref(*m_end_test), boost::ref(*m_visitor) ); }
void MainWindow::on_actionInsertRandomPoints_triggered() { QRectF rect = CGAL::Qt::viewportsBbox(&scene); CGAL::Qt::Converter<K> convert; Iso_rectangle_2 isor = convert(rect); CGAL::Random_points_in_iso_rectangle_2<Point_2> pg(isor.min(), isor.max()); bool ok = false; const int number_of_points = QInputDialog::getInteger(this, tr("Number of random points"), tr("Enter number of random points"), 100, 0, std::numeric_limits<int>::max(), 1, &ok); if(!ok) { return; } // wait cursor QApplication::setOverrideCursor(Qt::WaitCursor); std::vector<Point_2> points; points.reserve(number_of_points); for(int i = 0; i < number_of_points; ++i){ points.push_back(*pg++); } dt.insert(points.begin(), points.end()); // default cursor QApplication::restoreOverrideCursor(); emit(changed()); }
//[building_footprint_rectangle_gilviewer_go virtual void process() { OnInit(); release(); update_values(m_param); Iso_rectangle_2 bbox = get_bbox(m_param); std::string dsm_file = m_param->get<boost::filesystem::path>("dsm" ).string(); std::string mask_file = m_param->get<boost::filesystem::path>("mask" ).string(); clip_bbox(bbox,dsm_file ); gradient_functor gf(m_param->get<double>("sigmaD")); oriented_gradient_image grad_image(dsm_file, bbox, gf); m_grad = grad_image.img(); load_image(dsm_file ); load_image(mask_file); set_bbox(m_param,bbox); wxPoint p0(wxCoord(bbox.min().x()),wxCoord(bbox.min().y())); wxPoint p1(wxCoord(bbox.max().x()),wxCoord(bbox.max().y())); m_confg_visitor->set_bbox(wxRect(p0,p1)); init_visitor (m_param,m_visitor); create_configuration(m_param,grad_image,m_config); //<- // estimate_initial_temperature(m_param,100,*m_config); //-> create_sampler (m_param,m_sampler); create_schedule (m_param,m_schedule); create_end_test (m_param,m_end_test); // std::cout << "Salamon initial schedule : " << salamon_initial_schedule(m_sampler->density(),*m_config,1000) << std::endl; // m_config->clear(); any_sampler *sampler = new any_sampler(*m_sampler); Engine& e = rjmcmc::random(); m_thread = new boost::thread( simulated_annealing::optimize<Engine,configuration,any_sampler,schedule,end_test,any_composite_visitor>, e, boost::ref(*m_config), boost::ref(*sampler), boost::ref(*m_schedule), boost::ref(*m_end_test), boost::ref(m_visitor) ); }
void MainWindow::on_actionInsertRandomPoints_triggered() { QRectF rect = CGAL::Qt::viewportsBbox(&scene); CGAL::Qt::Converter<K> convert; Iso_rectangle_2 isor = convert(rect); double width = isor.xmax() - isor.xmin(); CGAL::Random_points_in_iso_rectangle_2<Point_2> pg(isor.min(), isor.max()); bool ok = false; const int number_of_points = QInputDialog::getInteger(this, tr("Number of random points"), tr("Enter number of random points"), 100, 0, std::numeric_limits<int>::max(), 1, &ok); if(!ok) { return; } // wait cursor QApplication::setOverrideCursor(Qt::WaitCursor); std::vector<Apollonius_site_2> points; points.reserve(number_of_points); boost::rand48 rng; boost::uniform_real<> dist(0.005*width, 0.05*width); boost::variate_generator<boost::rand48&, boost::uniform_real<> > radius(rng,dist); for(int i = 0; i < number_of_points; ++i){ points.push_back(Apollonius_site_2(*pg++,radius())); } ag.insert(points.begin(), points.end()); // default cursor QApplication::restoreOverrideCursor(); emit(changed()); }