get the demo compiled

This commit is contained in:
Andreas Fabri 2015-06-08 14:29:46 +02:00
parent a99ff3c822
commit fb1c691ffa
4 changed files with 43 additions and 53 deletions

View File

@ -2359,13 +2359,14 @@ advancing_front_surface_reconstruction(PointIterator b,
} }
template <typename PointIterator, typename Kernel> template <typename PointIterator, typename Kernel, typename Items, typename Filter>
void void
advancing_front_surface_reconstruction(PointIterator b, advancing_front_surface_reconstructionP(PointIterator b,
PointIterator e, PointIterator e,
Polyhedron_3<Kernel>& polyhedron, Polyhedron_3<Kernel,Items>& polyhedron,
double radius_ratio_bound = 5, Filter filter,
double beta = 0.52) double radius_ratio_bound = 5,
double beta = 0.52)
{ {
typedef Advancing_front_surface_reconstruction_vertex_base_3<Kernel> LVb; typedef Advancing_front_surface_reconstruction_vertex_base_3<Kernel> LVb;
typedef Advancing_front_surface_reconstruction_cell_base_3<Kernel> LCb; typedef Advancing_front_surface_reconstruction_cell_base_3<Kernel> LCb;
@ -2373,7 +2374,7 @@ advancing_front_surface_reconstruction(PointIterator b,
typedef Triangulation_data_structure_3<LVb,LCb> Tds; typedef Triangulation_data_structure_3<LVb,LCb> Tds;
typedef Delaunay_triangulation_3<Kernel,Tds> Triangulation_3; typedef Delaunay_triangulation_3<Kernel,Tds> Triangulation_3;
typedef Advancing_front_surface_reconstruction<Kernel,Triangulation_3> Reconstruction; typedef Advancing_front_surface_reconstruction<Kernel,Triangulation_3,Filter> Reconstruction;
typedef typename Kernel::Point_3 Point_3; typedef typename Kernel::Point_3 Point_3;
Triangulation_3 dt( boost::make_transform_iterator(b, AFSR::Auto_count<Point_3>()), Triangulation_3 dt( boost::make_transform_iterator(b, AFSR::Auto_count<Point_3>()),
@ -2382,7 +2383,7 @@ advancing_front_surface_reconstruction(PointIterator b,
AFSR_options opt; AFSR_options opt;
opt.K = radius_ratio_bound; opt.K = radius_ratio_bound;
// TODO: What to do with beta??? // TODO: What to do with beta???
Reconstruction R(dt, opt); Reconstruction R(dt, opt,filter);
R.run(opt); R.run(opt);
AFSR::construct_polyhedron(polyhedron, R); AFSR::construct_polyhedron(polyhedron, R);
} }

View File

@ -355,7 +355,7 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
target_link_libraries(pca_plugin scene_polyhedron_item scene_basic_objects) target_link_libraries(pca_plugin scene_polyhedron_item scene_basic_objects)
qt4_wrap_ui( advancing_frontUI_FILES Polyhedron_demo_advancing_front_plugin.ui) qt4_wrap_ui( advancing_frontUI_FILES Polyhedron_demo_advancing_front_plugin.ui)
polyhedron_demo_plugin(advancing_front_plugin Polyhedron_demo_advancing_front_plugin Polyhedron_demo_advancing_front_plugin_impl ${advancing_frontUI_FILES}) polyhedron_demo_plugin(advancing_front_plugin Polyhedron_demo_advancing_front_plugin ${advancing_frontUI_FILES})
target_link_libraries(advancing_front_plugin scene_polygon_soup_item scene_points_with_normal_item) target_link_libraries(advancing_front_plugin scene_polygon_soup_item scene_points_with_normal_item)
if(EIGEN3_FOUND) if(EIGEN3_FOUND)

View File

@ -3,7 +3,9 @@
#include "Polyhedron_demo_plugin_helper.h" #include "Polyhedron_demo_plugin_helper.h"
#include "Polyhedron_demo_plugin_interface.h" #include "Polyhedron_demo_plugin_interface.h"
#include <Scene_polyhedron_item.h> #include <Scene_polyhedron_item.h>
#include "Kernel_type.h"
#include "Polyhedron_type.h"
#include <CGAL/Advancing_front_surface_reconstruction.h>
#include <QObject> #include <QObject>
#include <QAction> #include <QAction>
@ -14,10 +16,28 @@
#include "ui_Polyhedron_demo_advancing_front_plugin.h" #include "ui_Polyhedron_demo_advancing_front_plugin.h"
// Reconstructs a surface mesh from a point set and writes facet indices into polygon soup. struct Perimeter {
Polyhedron* advancing_front_reconstruct(const Point_set& points,
double sm_perimeter, double bound;
double sm_area);
Perimeter(double bound)
: bound(bound)
{}
bool operator()(const Kernel::Point_3& p, const Kernel::Point_3& q, const Kernel::Point_3& r) const
{
if(bound == 0){
return true;
}
double d = sqrt(squared_distance(p,q));
if(d>bound) return true;
d += sqrt(squared_distance(p,r)) ;
if(d>bound) return true;
d+= sqrt(squared_distance(q,r));
return d>bound;
}
};
class Polyhedron_demo_advancing_front_plugin : class Polyhedron_demo_advancing_front_plugin :
public QObject, public QObject,
@ -61,7 +81,6 @@ class Polyhedron_demo_advancing_front_plugin_dialog : public QDialog, private Ui
} }
double trianglePerimeter() const { return m_inputPerimeter->value(); } double trianglePerimeter() const { return m_inputPerimeter->value(); }
double triangleArea() const { return m_inputArea->value(); }
}; };
void Polyhedron_demo_advancing_front_plugin::on_actionAdvancingFrontReconstruction_triggered() void Polyhedron_demo_advancing_front_plugin::on_actionAdvancingFrontReconstruction_triggered()
@ -82,7 +101,6 @@ void Polyhedron_demo_advancing_front_plugin::on_actionAdvancingFrontReconstructi
if(!dialog.exec()) if(!dialog.exec())
return; return;
const double sm_perimeter = dialog.trianglePerimeter(); const double sm_perimeter = dialog.trianglePerimeter();
const double sm_area = dialog.triangleArea();
QApplication::setOverrideCursor(Qt::WaitCursor); QApplication::setOverrideCursor(Qt::WaitCursor);
@ -90,15 +108,15 @@ void Polyhedron_demo_advancing_front_plugin::on_actionAdvancingFrontReconstructi
// Add polyhedron to scene // Add polyhedron to scene
// Reconstruct point set as a polyhedron // Reconstruct point set as a polyhedron
Polyhedron *poly = advancing_front_reconstruct(*points, sm_perimeter, sm_area); Scene_polyhedron_item* new_item = new Scene_polyhedron_item(Polyhedron());
Polyhedron& P = * const_cast<Polyhedron*>(new_item->polyhedron());
Scene_polyhedron_item* new_item = new Scene_polyhedron_item(poly); Perimeter filter(sm_perimeter);
CGAL::advancing_front_surface_reconstructionP((points)->begin(), points->end(), P, filter);
new_item->setName(tr("%1 Advancing Front (%2 %3)") new_item->setName(tr("%1 Advancing Front (%2 %3)")
.arg(point_set_item->name()) .arg(point_set_item->name())
.arg(sm_perimeter) .arg(sm_perimeter));
.arg(sm_area));
new_item->setColor(Qt::lightGray); new_item->setColor(Qt::lightGray);
scene->addItem(new_item); scene->addItem(new_item);

View File

@ -17,14 +17,14 @@
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
<property name="text"> <property name="text">
<string>Min triangle perimeter:</string> <string>Max triangle perimeter:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" colspan="2"> <item row="0" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="m_inputPerimeter"> <widget class="QDoubleSpinBox" name="m_inputPerimeter">
<property name="suffix"> <property name="suffix">
<string>* average spacing</string> <string/>
</property> </property>
<property name="minimum"> <property name="minimum">
<double>0.000000000000000</double> <double>0.000000000000000</double>
@ -37,36 +37,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Max triangle area:</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="m_inputArea">
<property name="suffix">
<string> * average spacing^2</string>
</property>
<property name="decimals">
<number>0</number>
</property>
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>20.000000000000000</double>
</property>
<property name="singleStep">
<double>1.000000000000000</double>
</property>
<property name="value">
<double>0.000000000000000</double>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QDialogButtonBox" name="buttonBox"> <widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>