mirror of https://github.com/CGAL/cgal
Update demo for Menger, Sierpinski Carpet and Sierpinski Triangle.
This commit is contained in:
parent
237c4b87fb
commit
32464de4a5
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>264</width>
|
||||
<width>288</width>
|
||||
<height>106</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
<widget class="QSpinBox" name="mengerLevel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>150</x>
|
||||
<x>170</x>
|
||||
<y>10</y>
|
||||
<width>51</width>
|
||||
<height>27</height>
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
<rect>
|
||||
<x>23</x>
|
||||
<y>15</y>
|
||||
<width>121</width>
|
||||
<width>141</width>
|
||||
<height>17</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
@ -70,9 +70,9 @@
|
|||
<widget class="QCheckBox" name="updateAttributes">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<x>0</x>
|
||||
<y>40</y>
|
||||
<width>241</width>
|
||||
<width>291</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
<string>Update attributes during construction</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>325</width>
|
||||
<height>151</height>
|
||||
<height>119</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
|
@ -16,8 +16,8 @@
|
|||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>150</x>
|
||||
<y>120</y>
|
||||
<x>80</x>
|
||||
<y>80</y>
|
||||
<width>171</width>
|
||||
<height>32</height>
|
||||
</rect>
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
<rect>
|
||||
<x>20</x>
|
||||
<y>13</y>
|
||||
<width>181</width>
|
||||
<width>201</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
@ -45,130 +45,30 @@
|
|||
<widget class="QSpinBox" name="level">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>200</x>
|
||||
<x>230</x>
|
||||
<y>10</y>
|
||||
<width>47</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox1">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>30</y>
|
||||
<width>161</width>
|
||||
<height>81</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Update Attributes</string>
|
||||
</property>
|
||||
<widget class="QRadioButton" name="never">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>97</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Never</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="during">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>40</y>
|
||||
<width>141</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>During construction</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="after">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>60</y>
|
||||
<width>141</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>After construction</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox2">
|
||||
<widget class="QCheckBox" name="updateAttributes">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>180</x>
|
||||
<y>30</y>
|
||||
<width>91</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Method</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<widget class="QRadioButton" name="stdmap">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>81</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>std map</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="traversal">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>40</y>
|
||||
<width>81</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>traversal</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="computeGeometry">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>120</y>
|
||||
<width>151</width>
|
||||
<height>32</height>
|
||||
<x>20</x>
|
||||
<y>50</y>
|
||||
<width>291</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Compute geometry</string>
|
||||
<string>Update attributes during construction</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>265</width>
|
||||
<width>303</width>
|
||||
<height>112</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
@ -32,9 +32,9 @@
|
|||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<x>10</x>
|
||||
<y>13</y>
|
||||
<width>181</width>
|
||||
<width>211</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<widget class="QSpinBox" name="level">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>200</x>
|
||||
<x>220</x>
|
||||
<y>10</y>
|
||||
<width>53</width>
|
||||
<height>24</height>
|
||||
|
|
@ -55,17 +55,17 @@
|
|||
<widget class="QCheckBox" name="updateAttributes">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<x>10</x>
|
||||
<y>40</y>
|
||||
<width>241</width>
|
||||
<height>18</height>
|
||||
<width>291</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Update attributes during construction</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
|
|
|||
|
|
@ -111,7 +111,9 @@ void MainWindow::connect_actions ()
|
|||
|
||||
QObject::connect(dialogsierpinskicarpet.level, SIGNAL(valueChanged(int)),
|
||||
this, SLOT(onSierpinskiCarpetChangeLevel(int)));
|
||||
QObject::connect(dialogsierpinskicarpet.never, SIGNAL(clicked(bool)),
|
||||
QObject::connect(dialogsierpinskicarpet.updateAttributes, SIGNAL(clicked(bool)),
|
||||
this, SLOT(onSierpinskiCarpetUpdateAttributes(bool)));
|
||||
/* QObject::connect(dialogsierpinskicarpet.never, SIGNAL(clicked(bool)),
|
||||
this, SLOT(onSierpinskiCarpetNeverUpdateAttributes(bool)));
|
||||
QObject::connect(dialogsierpinskicarpet.during, SIGNAL(clicked(bool)),
|
||||
this, SLOT(onSierpinskiCarpetDuringConstructionUpdateAttributes(bool)));
|
||||
|
|
@ -122,7 +124,7 @@ void MainWindow::connect_actions ()
|
|||
QObject::connect(dialogsierpinskicarpet.traversal, SIGNAL(clicked(bool)),
|
||||
this, SLOT(onSierpinskiCarpetUpdateAttributesMethodTraversal(bool)));
|
||||
QObject::connect(dialogsierpinskicarpet.computeGeometry, SIGNAL(clicked(bool)),
|
||||
this, SLOT(onSierpinskiCarpetComputeGeometry(bool)));
|
||||
this, SLOT(onSierpinskiCarpetComputeGeometry(bool)));*/
|
||||
QObject::connect(&dialogsierpinskicarpet, SIGNAL(accepted()),
|
||||
this, SLOT(onSierpinskiCarpetOk()));
|
||||
QObject::connect(&dialogsierpinskicarpet, SIGNAL(rejected()),
|
||||
|
|
@ -157,6 +159,8 @@ void MainWindow::update_operations_entries(bool show)
|
|||
|
||||
void MainWindow::onSceneChanged ()
|
||||
{
|
||||
QApplication::setOverrideCursor( Qt::WaitCursor );
|
||||
|
||||
int mark = scene.lcc->get_new_mark ();
|
||||
scene.lcc->negate_mark (mark);
|
||||
|
||||
|
|
@ -183,9 +187,12 @@ void MainWindow::onSceneChanged ()
|
|||
scene.lcc->negate_mark (mark);
|
||||
scene.lcc->free_mark (mark);
|
||||
|
||||
// statusBar()->showMessage (QString ("Update OpenGL lists"), DELAY_STATUSMSG);
|
||||
|
||||
viewer->sceneChanged ();
|
||||
|
||||
statusMessage->setText (os.str().c_str ());
|
||||
QApplication::restoreOverrideCursor();
|
||||
}
|
||||
|
||||
void MainWindow::clear_all()
|
||||
|
|
@ -414,6 +421,8 @@ void MainWindow::on_actionCreate_mesh_triggered ()
|
|||
|
||||
void MainWindow::onCreateMeshOk()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -436,13 +445,16 @@ void MainWindow::onCreateMeshOk()
|
|||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
statusBar ()->showMessage (QString ("mesh created"),DELAY_STATUSMSG);
|
||||
statusBar ()->showMessage (QString ("Mesh created"),DELAY_STATUSMSG);
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit (sceneChanged ());
|
||||
}
|
||||
|
||||
void MainWindow::on_actionSubdivide_triggered ()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -456,6 +468,7 @@ void MainWindow::on_actionSubdivide_triggered ()
|
|||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit (sceneChanged ());
|
||||
statusBar ()->showMessage (QString ("Objects were subdivided"),
|
||||
DELAY_STATUSMSG);
|
||||
|
|
@ -463,6 +476,8 @@ void MainWindow::on_actionSubdivide_triggered ()
|
|||
|
||||
void MainWindow::on_actionSubdivide_pqq_triggered ()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -476,6 +491,7 @@ void MainWindow::on_actionSubdivide_pqq_triggered ()
|
|||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit (sceneChanged ());
|
||||
statusBar ()->showMessage (QString ("Objects were subdivided"),
|
||||
DELAY_STATUSMSG);
|
||||
|
|
@ -498,6 +514,8 @@ void MainWindow::on_actionCompute_Voronoi_3D_triggered ()
|
|||
|
||||
if (fileName.isEmpty ()) return;
|
||||
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
this->clear_all();
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
|
|
@ -582,6 +600,7 @@ void MainWindow::on_actionCompute_Voronoi_3D_triggered ()
|
|||
#endif
|
||||
|
||||
init_all_new_volumes();
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit (sceneChanged ());
|
||||
statusBar ()->showMessage (QString ("Voronoi 3D of points in ") + fileName,
|
||||
DELAY_STATUSMSG);
|
||||
|
|
@ -597,6 +616,8 @@ void MainWindow::on_actionDual_3_triggered ()
|
|||
return;
|
||||
}
|
||||
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -618,11 +639,14 @@ void MainWindow::on_actionDual_3_triggered ()
|
|||
init_all_new_volumes();
|
||||
|
||||
statusBar ()->showMessage (QString ("Dual_3 computed"), DELAY_STATUSMSG);
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit (sceneChanged ());
|
||||
}
|
||||
|
||||
void MainWindow::on_actionClose_volume_triggered()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -639,6 +663,8 @@ void MainWindow::on_actionClose_volume_triggered()
|
|||
statusBar ()->showMessage
|
||||
(QString ("LCC already 3-closed"), DELAY_STATUSMSG);
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to 3-close the current lcc: "
|
||||
|
|
@ -652,6 +678,8 @@ void MainWindow::on_actionSew3_same_facets_triggered()
|
|||
int mymark = scene.lcc->get_new_mark();
|
||||
mark_all_filled_and_visible_volumes(mymark);
|
||||
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -669,6 +697,8 @@ void MainWindow::on_actionSew3_same_facets_triggered()
|
|||
|
||||
scene.lcc->free_mark(mymark);
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to sew3 all same facets: "
|
||||
|
|
@ -679,6 +709,7 @@ void MainWindow::on_actionSew3_same_facets_triggered()
|
|||
void MainWindow::on_actionUnsew3_all_triggered()
|
||||
{
|
||||
unsigned int nb=0;
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
|
|
@ -700,6 +731,7 @@ void MainWindow::on_actionUnsew3_all_triggered()
|
|||
std::cout<<"Time to unsew3 all filled volumes: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
QApplication::restoreOverrideCursor ();
|
||||
|
||||
if ( nb > 0 )
|
||||
{
|
||||
|
|
@ -714,6 +746,8 @@ void MainWindow::on_actionUnsew3_all_triggered()
|
|||
|
||||
void MainWindow::on_actionRemove_filled_volumes_triggered()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -739,6 +773,7 @@ void MainWindow::on_actionRemove_filled_volumes_triggered()
|
|||
#endif
|
||||
|
||||
recreate_whole_volume_list();
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit(sceneChanged());
|
||||
|
||||
statusBar()->showMessage
|
||||
|
|
@ -748,6 +783,8 @@ void MainWindow::on_actionRemove_filled_volumes_triggered()
|
|||
|
||||
void MainWindow::on_actionTriangulate_all_facets_triggered()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -770,6 +807,7 @@ void MainWindow::on_actionTriangulate_all_facets_triggered()
|
|||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit (sceneChanged ());
|
||||
statusBar()->showMessage
|
||||
(QString ("Facets of visible and filled volume(s) triangulated"),
|
||||
|
|
@ -778,6 +816,8 @@ void MainWindow::on_actionTriangulate_all_facets_triggered()
|
|||
|
||||
void MainWindow::on_actionMerge_all_volumes_triggered()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -813,9 +853,10 @@ void MainWindow::on_actionMerge_all_volumes_triggered()
|
|||
|
||||
recreate_whole_volume_list();
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit (sceneChanged ());
|
||||
statusBar()->showMessage
|
||||
(QString ("All volume(s) merged"), DELAY_STATUSMSG);
|
||||
(QString ("Visible and filled volume(s) merged"), DELAY_STATUSMSG);
|
||||
}
|
||||
|
||||
bool MainWindow::is_volume_in_list(LCC::Attribute_handle<3>::type ah)
|
||||
|
|
@ -865,7 +906,8 @@ void MainWindow::update_volume_list_add(LCC::Attribute_handle<3>::type ah)
|
|||
|
||||
QTableWidgetItem* attribHandle = new QTableWidgetItem;
|
||||
attribHandle->setData
|
||||
(Qt::UserRole, reinterpret_cast<quintptr>(&scene.lcc->get_attribute<3>(ah)));
|
||||
(Qt::UserRole,
|
||||
reinterpret_cast<quintptr>(&scene.lcc->get_attribute<3>(ah)));
|
||||
|
||||
volumeList->setItem(newRow,3,attribHandle);
|
||||
|
||||
|
|
@ -1169,6 +1211,8 @@ void MainWindow::onMengerCancel()
|
|||
recreate_whole_volume_list();
|
||||
mengerVolumes.clear();
|
||||
update_operations_entries(true);
|
||||
statusBar()->showMessage (QString ("Menger sponge creation canceled"),
|
||||
DELAY_STATUSMSG);
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
||||
|
|
@ -1191,6 +1235,8 @@ void MainWindow::onMengerUpdateAttributes(bool newValue)
|
|||
|
||||
void MainWindow::onMengerInc()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -1292,13 +1338,21 @@ void MainWindow::onMengerInc()
|
|||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to increase the level of menger sponge ("
|
||||
<<this->mengerLevel-1<<" -> "<<this->mengerLevel<<"): "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
std::cout<<"Menger sponge "
|
||||
<<this->mengerLevel-1<<" -> "<<this->mengerLevel<<", "
|
||||
<<"attributes updated "
|
||||
<<(mengerUpdateAttributes ? "DURING" : "AFTER")
|
||||
<< " construction: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
CGAL_assertion( (scene.lcc)->is_valid() );
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
statusBar()->showMessage(QString ("Menger sponge creation %1 -> %2").
|
||||
arg(this->mengerLevel-1).arg(this->mengerLevel),
|
||||
DELAY_STATUSMSG);
|
||||
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
||||
|
|
@ -1592,6 +1646,8 @@ void MainWindow::process_inter_slice(Dart_handle init,
|
|||
|
||||
void MainWindow::onMengerDec()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -1714,14 +1770,21 @@ void MainWindow::onMengerDec()
|
|||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to decrease the level of menger sponge ("
|
||||
<<this->mengerLevel+1<<" -> "<<this->mengerLevel<<"): "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
std::cout<<"Menger sponge "
|
||||
<<this->mengerLevel+1<<" -> "<<this->mengerLevel<<", "
|
||||
<<"attributes updated "
|
||||
<<(mengerUpdateAttributes ? "DURING" : "AFTER")
|
||||
<< " construction: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
recreate_whole_volume_list();
|
||||
|
||||
statusBar ()->showMessage (QString ("Menger Dec"),DELAY_STATUSMSG);
|
||||
statusBar()->showMessage(QString ("Menger sponge creation %1 -> %2").
|
||||
arg(this->mengerLevel+1).arg(this->mengerLevel),
|
||||
DELAY_STATUSMSG);
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
||||
|
|
@ -1731,14 +1794,18 @@ void MainWindow::onMengerDec()
|
|||
|
||||
void MainWindow::on_actionCreate_Sierpinski_Carpet_triggered ()
|
||||
{
|
||||
neverUpdateAttributes = dialogsierpinskicarpet.never->isChecked();
|
||||
/*neverUpdateAttributes = dialogsierpinskicarpet.never->isChecked();
|
||||
duringConstructionUpdateAttributes = dialogsierpinskicarpet.during->isChecked();
|
||||
afterConstructionUpdateAttributes = dialogsierpinskicarpet.after->isChecked();
|
||||
updateAttributesMethodStdMap = dialogsierpinskicarpet.stdmap->isChecked();
|
||||
updateAttributesMethodTraversal = dialogsierpinskicarpet.traversal->isChecked();
|
||||
computeGeometry = false;
|
||||
// By default, the geometry will be computed after the construction
|
||||
isComputableGeometry = true;
|
||||
isComputableGeometry = true;*/
|
||||
|
||||
computeGeometry = false;
|
||||
|
||||
sierpinskiCarpetUpdateAttributes
|
||||
= dialogsierpinskicarpet.updateAttributes->isChecked();
|
||||
|
||||
dialogsierpinskicarpet.level->disconnect(this);
|
||||
|
||||
|
|
@ -1775,6 +1842,7 @@ void MainWindow::on_actionCreate_Sierpinski_Carpet_triggered ()
|
|||
|
||||
void MainWindow::onSierpinskiCarpetCancel()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
for(std::vector<Dart_handle>::iterator it=sierpinskiCarpetSurfaces.begin();
|
||||
it!=sierpinskiCarpetSurfaces.end(); ++it)
|
||||
{
|
||||
|
|
@ -1784,6 +1852,7 @@ void MainWindow::onSierpinskiCarpetCancel()
|
|||
recreate_whole_volume_list();
|
||||
sierpinskiCarpetSurfaces.clear();
|
||||
update_operations_entries(true);
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
||||
|
|
@ -1799,7 +1868,12 @@ void MainWindow::onSierpinskiCarpetChangeLevel(int newLevel)
|
|||
while ( newLevel < sierpinskiCarpetLevel ) onSierpinskiCarpetDec();
|
||||
}
|
||||
|
||||
void MainWindow::onSierpinskiCarpetNeverUpdateAttributes(bool /*newValue*/)
|
||||
void MainWindow::onSierpinskiCarpetUpdateAttributes(bool newValue)
|
||||
{
|
||||
sierpinskiCarpetUpdateAttributes = newValue;
|
||||
}
|
||||
|
||||
/*void MainWindow::onSierpinskiCarpetNeverUpdateAttributes(bool newValue)
|
||||
{
|
||||
if (afterConstructionUpdateAttributes)
|
||||
{
|
||||
|
|
@ -1811,7 +1885,7 @@ void MainWindow::onSierpinskiCarpetNeverUpdateAttributes(bool /*newValue*/)
|
|||
afterConstructionUpdateAttributes = false;
|
||||
}
|
||||
|
||||
void MainWindow::onSierpinskiCarpetDuringConstructionUpdateAttributes(bool /*newValue*/)
|
||||
void MainWindow::onSierpinskiCarpetDuringConstructionUpdateAttributes(bool newValue)
|
||||
{
|
||||
if (afterConstructionUpdateAttributes)
|
||||
{
|
||||
|
|
@ -1823,7 +1897,7 @@ void MainWindow::onSierpinskiCarpetDuringConstructionUpdateAttributes(bool /*new
|
|||
afterConstructionUpdateAttributes = false;
|
||||
}
|
||||
|
||||
void MainWindow::onSierpinskiCarpetAfterConstructionUpdateAttributes(bool /*newValue*/)
|
||||
void MainWindow::onSierpinskiCarpetAfterConstructionUpdateAttributes(bool newValue)
|
||||
{
|
||||
if (!afterConstructionUpdateAttributes)
|
||||
{
|
||||
|
|
@ -1835,19 +1909,19 @@ void MainWindow::onSierpinskiCarpetAfterConstructionUpdateAttributes(bool /*newV
|
|||
afterConstructionUpdateAttributes = true;
|
||||
}
|
||||
|
||||
void MainWindow::onSierpinskiCarpetUpdateAttributesMethodStdMap(bool /*newValue*/)
|
||||
void MainWindow::onSierpinskiCarpetUpdateAttributesMethodStdMap(bool newValue)
|
||||
{
|
||||
updateAttributesMethodStdMap = true;
|
||||
updateAttributesMethodTraversal = false;
|
||||
}
|
||||
|
||||
void MainWindow::onSierpinskiCarpetUpdateAttributesMethodTraversal(bool /*newValue*/)
|
||||
void MainWindow::onSierpinskiCarpetUpdateAttributesMethodTraversal(bool newValue)
|
||||
{
|
||||
updateAttributesMethodStdMap = false;
|
||||
updateAttributesMethodTraversal = true;
|
||||
}
|
||||
|
||||
void MainWindow::onSierpinskiCarpetComputeGeometry(bool /*newValue*/)
|
||||
void MainWindow::onSierpinskiCarpetComputeGeometry(bool newValue)
|
||||
{
|
||||
sierpinski_carpet_compute_geometry();
|
||||
|
||||
|
|
@ -1855,10 +1929,12 @@ void MainWindow::onSierpinskiCarpetComputeGeometry(bool /*newValue*/)
|
|||
dialogsierpinskicarpet.computeGeometry->setEnabled(false);
|
||||
|
||||
emit(sceneChanged());
|
||||
}
|
||||
}*/
|
||||
|
||||
void MainWindow::onSierpinskiCarpetInc()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -1866,14 +1942,14 @@ void MainWindow::onSierpinskiCarpetInc()
|
|||
|
||||
this->sierpinskiCarpetLevel++;
|
||||
|
||||
if (computeGeometry)
|
||||
/* if (computeGeometry)
|
||||
{
|
||||
// Here case where the geometry could be computed after the construction, but it was not updated.
|
||||
computeGeometry = false;
|
||||
dialogsierpinskicarpet.computeGeometry->setEnabled(false);
|
||||
// => geometry will not be computed later.
|
||||
isComputableGeometry = false;
|
||||
}
|
||||
}*/
|
||||
|
||||
std::vector<Dart_handle> edges;
|
||||
nbfacesinit = sierpinskiCarpetSurfaces.size();
|
||||
|
|
@ -1918,7 +1994,7 @@ void MainWindow::onSierpinskiCarpetInc()
|
|||
(scene.lcc)->free_mark(markEdges);
|
||||
(scene.lcc)->free_mark(markFaces);
|
||||
|
||||
if (afterConstructionUpdateAttributes)
|
||||
/* if (afterConstructionUpdateAttributes)
|
||||
{
|
||||
if (updateAttributesMethodStdMap)
|
||||
{
|
||||
|
|
@ -1935,7 +2011,7 @@ void MainWindow::onSierpinskiCarpetInc()
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
for(std::size_t i = 0; i < edges.size(); i++)
|
||||
{
|
||||
|
|
@ -1948,12 +2024,12 @@ void MainWindow::onSierpinskiCarpetInc()
|
|||
sierpinski_carpet_split_face_in_nine(sierpinskiCarpetSurfaces[i]);
|
||||
}
|
||||
|
||||
if (afterConstructionUpdateAttributes)
|
||||
if (!sierpinskiCarpetUpdateAttributes)
|
||||
{
|
||||
sierpinski_carpet_update_geometry();
|
||||
}
|
||||
|
||||
if (neverUpdateAttributes)
|
||||
/* if (neverUpdateAttributes)
|
||||
{
|
||||
scene.lcc->correct_invalid_attributes();
|
||||
|
||||
|
|
@ -1963,24 +2039,33 @@ void MainWindow::onSierpinskiCarpetInc()
|
|||
computeGeometry = true;
|
||||
dialogsierpinskicarpet.computeGeometry->setEnabled(true);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to increase the level of sierpinski carpet ("
|
||||
<<this->sierpinskiCarpetLevel-1<<" -> "<<this->sierpinskiCarpetLevel<<") "
|
||||
<<(duringConstructionUpdateAttributes ? "DURING" : "AFTER") << " construction update attributes: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
std::cout<<"Sierpinski carpet "
|
||||
<<this->sierpinskiCarpetLevel-1<<" -> "
|
||||
<<this->sierpinskiCarpetLevel<<", "
|
||||
<<"attributes updated "
|
||||
<<(sierpinskiCarpetUpdateAttributes ? "DURING" : "AFTER")
|
||||
<< " construction: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
CGAL_assertion( (scene.lcc)->is_valid() );
|
||||
|
||||
statusBar()->showMessage(QString ("Sierpinski carpet creation %1 -> %2").
|
||||
arg(this->sierpinskiCarpetLevel-1).
|
||||
arg(this->sierpinskiCarpetLevel),
|
||||
DELAY_STATUSMSG);
|
||||
|
||||
QApplication::restoreOverrideCursor ();
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
||||
void MainWindow::sierpinski_carpet_update_geometry()
|
||||
{
|
||||
if (updateAttributesMethodStdMap)
|
||||
/* if (updateAttributesMethodStdMap)
|
||||
{
|
||||
for(std::size_t i = 0; i < new_darts.size(); i++)
|
||||
{
|
||||
|
|
@ -1991,7 +2076,7 @@ void MainWindow::sierpinski_carpet_update_geometry()
|
|||
new_darts.clear();
|
||||
}
|
||||
|
||||
if (updateAttributesMethodTraversal)
|
||||
if (updateAttributesMethodTraversal)*/
|
||||
{
|
||||
int markVertices = (scene.lcc)->get_new_mark();
|
||||
|
||||
|
|
@ -2257,7 +2342,7 @@ void MainWindow::sierpinski_carpet_copy_attributes_and_embed_vertex
|
|||
|
||||
void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
|
||||
{
|
||||
if (duringConstructionUpdateAttributes)
|
||||
if (sierpinskiCarpetUpdateAttributes)
|
||||
{
|
||||
LCC::Point p1 = scene.lcc->point(dh);
|
||||
LCC::Point p2 = scene.lcc->point(scene.lcc->other_extremity(dh));
|
||||
|
|
@ -2276,7 +2361,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
|
|||
{
|
||||
LCC::Point p3, p4;
|
||||
|
||||
if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
/*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
{
|
||||
LCC::Point p1 = dart_map[dh];
|
||||
LCC::Point p2 = dart_map[scene.lcc->other_extremity(dh)];
|
||||
|
|
@ -2286,7 +2371,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
|
|||
|
||||
p3 = LCC::Traits::Construct_translated_point() (p1,v2);
|
||||
p4 = LCC::Traits::Construct_translated_point() (p1,v3);
|
||||
}
|
||||
}*/
|
||||
|
||||
Dart_handle d1=
|
||||
CGAL::insert_cell_0_in_cell_1(*(scene.lcc),
|
||||
|
|
@ -2294,7 +2379,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
|
|||
LCC::null_handle,
|
||||
false);
|
||||
|
||||
if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
/*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
{
|
||||
dart_map.insert(std::pair<Dart_handle, LCC::Point>(d1, p4));
|
||||
if (!(scene.lcc)->is_free(d1,2))
|
||||
|
|
@ -2302,7 +2387,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
|
|||
dart_map.insert(std::pair<Dart_handle, LCC::Point>((scene.lcc)->beta(d1,2,1), p4));
|
||||
}
|
||||
new_darts.push_back((scene.lcc)->beta(dh,1));
|
||||
}
|
||||
}*/
|
||||
|
||||
Dart_handle d2=
|
||||
CGAL::insert_cell_0_in_cell_1(*(scene.lcc),
|
||||
|
|
@ -2310,7 +2395,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
|
|||
LCC::null_handle,
|
||||
false);
|
||||
|
||||
if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
/*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
{
|
||||
dart_map.insert(std::pair<Dart_handle, LCC::Point>(d2, p3));
|
||||
if (!(scene.lcc)->is_free(d2,2))
|
||||
|
|
@ -2318,7 +2403,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
|
|||
dart_map.insert(std::pair<Dart_handle, LCC::Point>((scene.lcc)->beta(d2,2,1), p3));
|
||||
}
|
||||
new_darts.push_back((scene.lcc)->beta(dh,1));
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2329,16 +2414,16 @@ void MainWindow::sierpinski_carpet_split_face_in_three(Dart_handle dh,
|
|||
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
|
||||
scene.lcc->beta(dh,1,1,1),
|
||||
scene.lcc->beta(dh,0,0),
|
||||
duringConstructionUpdateAttributes);
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
Dart_handle d2=
|
||||
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
|
||||
scene.lcc->beta(dh,1,1),
|
||||
scene.lcc->beta(dh,0),
|
||||
duringConstructionUpdateAttributes);
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
|
||||
if ( removecenter )
|
||||
{
|
||||
CGAL::remove_cell<LCC,2>(*scene.lcc,d2,duringConstructionUpdateAttributes);
|
||||
CGAL::remove_cell<LCC,2>(*scene.lcc,d2,sierpinskiCarpetUpdateAttributes);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2359,25 +2444,25 @@ void MainWindow::sierpinski_carpet_split_face_in_nine(Dart_handle dh)
|
|||
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
|
||||
d1,
|
||||
d2,
|
||||
duringConstructionUpdateAttributes);
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
|
||||
if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
/*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
{
|
||||
dart_map.insert(std::pair<Dart_handle, LCC::Point>(e2, dart_map[d2]));
|
||||
dart_map.insert(std::pair<Dart_handle, LCC::Point>((scene.lcc)->beta(e2,2), dart_map[d1]));
|
||||
}
|
||||
}*/
|
||||
|
||||
Dart_handle e1=
|
||||
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
|
||||
d3,
|
||||
d4,
|
||||
duringConstructionUpdateAttributes);
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
|
||||
if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
/*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
|
||||
{
|
||||
dart_map.insert(std::pair<Dart_handle, LCC::Point>(e1, dart_map[d4]));
|
||||
dart_map.insert(std::pair<Dart_handle, LCC::Point>((scene.lcc)->beta(e1,2), dart_map[d3]));
|
||||
}
|
||||
}*/
|
||||
|
||||
sierpinskiCarpetSurfaces.push_back(e2);
|
||||
sierpinskiCarpetSurfaces.push_back(e1);
|
||||
|
|
@ -2394,6 +2479,8 @@ void MainWindow::sierpinski_carpet_split_face_in_nine(Dart_handle dh)
|
|||
|
||||
void MainWindow::onSierpinskiCarpetDec()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -2412,7 +2499,8 @@ void MainWindow::onSierpinskiCarpetDec()
|
|||
std::vector<Dart_handle> vertices;
|
||||
|
||||
// First we remove edges.
|
||||
for ( std::vector<Dart_handle>::iterator itsurfaces=sierpinskiCarpetSurfaces.begin();
|
||||
for ( std::vector<Dart_handle>::iterator
|
||||
itsurfaces=sierpinskiCarpetSurfaces.begin();
|
||||
itsurfaces!=sierpinskiCarpetSurfaces.end(); ++itsurfaces)
|
||||
{
|
||||
Dart_handle dh = *itsurfaces;
|
||||
|
|
@ -2429,16 +2517,17 @@ void MainWindow::onSierpinskiCarpetDec()
|
|||
for(std::size_t i = 0; i < edges.size(); i++)
|
||||
{
|
||||
CGAL::remove_cell<LCC,1>(*scene.lcc, scene.lcc->beta(edges[i],0),
|
||||
duringConstructionUpdateAttributes);
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
CGAL::remove_cell<LCC,1>(*scene.lcc, scene.lcc->beta(edges[i],1),
|
||||
duringConstructionUpdateAttributes);
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
CGAL::remove_cell<LCC,1>(*scene.lcc, edges[i],
|
||||
duringConstructionUpdateAttributes);
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
}
|
||||
edges.clear();
|
||||
|
||||
// Lastly we remove vertices.
|
||||
for ( std::vector<Dart_handle>::iterator itsurfaces=sierpinskiCarpetSurfaces.begin();
|
||||
for ( std::vector<Dart_handle>::iterator
|
||||
itsurfaces=sierpinskiCarpetSurfaces.begin();
|
||||
itsurfaces!=sierpinskiCarpetSurfaces.end(); ++itsurfaces)
|
||||
{
|
||||
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
|
||||
|
|
@ -2461,7 +2550,8 @@ void MainWindow::onSierpinskiCarpetDec()
|
|||
}
|
||||
|
||||
(scene.lcc)->negate_mark(markSurfaces);
|
||||
for ( std::vector<Dart_handle>::iterator itsurfaces=sierpinskiCarpetSurfaces.begin();
|
||||
for ( std::vector<Dart_handle>::iterator
|
||||
itsurfaces=sierpinskiCarpetSurfaces.begin();
|
||||
itsurfaces!=sierpinskiCarpetSurfaces.end(); ++itsurfaces)
|
||||
{
|
||||
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
|
||||
|
|
@ -2482,28 +2572,37 @@ void MainWindow::onSierpinskiCarpetDec()
|
|||
|
||||
for(std::size_t i = 0; i < vertices.size(); i++)
|
||||
{
|
||||
CGAL::remove_cell<LCC,0>(*scene.lcc, vertices[i], duringConstructionUpdateAttributes);
|
||||
CGAL::remove_cell<LCC,0>(*scene.lcc, vertices[i],
|
||||
sierpinskiCarpetUpdateAttributes);
|
||||
}
|
||||
vertices.clear();
|
||||
|
||||
(scene.lcc)->free_mark(markSurfaces);
|
||||
(scene.lcc)->free_mark(markVertices);
|
||||
|
||||
if (!duringConstructionUpdateAttributes)
|
||||
if (!sierpinskiCarpetUpdateAttributes)
|
||||
{
|
||||
scene.lcc->correct_invalid_attributes();
|
||||
}
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to decrease the level of sierpinski carpet ("
|
||||
<<this->sierpinskiCarpetLevel+1<<" -> "<<this->sierpinskiCarpetLevel<<"): "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
std::cout<<"Sierpinski carpet "
|
||||
<<this->sierpinskiCarpetLevel+1<<" -> "
|
||||
<<this->sierpinskiCarpetLevel<<", "
|
||||
<<"attributes updated "
|
||||
<<(sierpinskiCarpetUpdateAttributes ? "DURING" : "AFTER")
|
||||
<< " construction: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
recreate_whole_volume_list();
|
||||
QApplication::restoreOverrideCursor ();
|
||||
|
||||
statusBar ()->showMessage (QString ("Menger Dec"),DELAY_STATUSMSG);
|
||||
statusBar()->showMessage(QString ("Sierpinski carpet creation %1 -> %2").
|
||||
arg(this->sierpinskiCarpetLevel+1).
|
||||
arg(this->sierpinskiCarpetLevel),
|
||||
DELAY_STATUSMSG);
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
||||
|
|
@ -2581,6 +2680,8 @@ void MainWindow::onSierpinskiTriangleUpdateAttributes(bool newValue)
|
|||
|
||||
void MainWindow::onSierpinskiTriangleInc()
|
||||
{
|
||||
QApplication::setOverrideCursor (Qt::WaitCursor);
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -2662,13 +2763,21 @@ void MainWindow::onSierpinskiTriangleInc()
|
|||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to increase the level of sierpinski triangle ("
|
||||
<<this->sierpinskiTriangleLevel-1<<" -> "<<this->sierpinskiTriangleLevel<<") "
|
||||
<<(sierpinskiTriangleUpdateAttributes ? "DURING" : "AFTER") << " construction update attributes: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
std::cout<<"Sierpinski triangle "
|
||||
<<this->sierpinskiTriangleLevel-1<<" -> "
|
||||
<<this->sierpinskiTriangleLevel<<", "
|
||||
<<"attributes updated "
|
||||
<<(sierpinskiTriangleUpdateAttributes ? "DURING" : "AFTER")
|
||||
<< " construction: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
//CGAL_assertion( (scene.lcc)->is_valid() );
|
||||
statusBar()->showMessage(QString ("Sierpinski triangle creation %1 -> %2").
|
||||
arg(this->sierpinskiTriangleLevel-1).
|
||||
arg(this->sierpinskiTriangleLevel),
|
||||
DELAY_STATUSMSG);
|
||||
QApplication::restoreOverrideCursor ();
|
||||
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
|
@ -2739,6 +2848,8 @@ void MainWindow::sierpinski_triangle_split_face_in_four(Dart_handle dh, bool rem
|
|||
|
||||
void MainWindow::onSierpinskiTriangleDec()
|
||||
{
|
||||
QApplication::setOverrideCursor( Qt::WaitCursor );
|
||||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
CGAL::Timer timer;
|
||||
timer.start();
|
||||
|
|
@ -2775,7 +2886,8 @@ void MainWindow::onSierpinskiTriangleDec()
|
|||
std::vector<Dart_handle> vertices;
|
||||
|
||||
// Now we remove edges.
|
||||
for ( std::vector<Dart_handle>::iterator itsurfaces=sierpinskiTriangleSurfaces.begin();
|
||||
for ( std::vector<Dart_handle>::iterator
|
||||
itsurfaces=sierpinskiTriangleSurfaces.begin();
|
||||
itsurfaces!=sierpinskiTriangleSurfaces.end(); ++itsurfaces)
|
||||
{
|
||||
Dart_handle dh = *itsurfaces;
|
||||
|
|
@ -2789,12 +2901,14 @@ void MainWindow::onSierpinskiTriangleDec()
|
|||
|
||||
for(std::size_t i = 0; i < edges.size(); i++)
|
||||
{
|
||||
CGAL::remove_cell<LCC,1>(*scene.lcc, edges[i], duringConstructionUpdateAttributes);
|
||||
CGAL::remove_cell<LCC,1>(*scene.lcc, edges[i],
|
||||
sierpinskiTriangleUpdateAttributes);
|
||||
}
|
||||
edges.clear();
|
||||
|
||||
// Lastly we remove vertices.
|
||||
for ( std::vector<Dart_handle>::iterator itsurfaces=sierpinskiTriangleSurfaces.begin();
|
||||
for ( std::vector<Dart_handle>::iterator
|
||||
itsurfaces=sierpinskiTriangleSurfaces.begin();
|
||||
itsurfaces!=sierpinskiTriangleSurfaces.end(); ++itsurfaces)
|
||||
{
|
||||
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
|
||||
|
|
@ -2818,7 +2932,8 @@ void MainWindow::onSierpinskiTriangleDec()
|
|||
}
|
||||
|
||||
(scene.lcc)->negate_mark(markSurfaces);
|
||||
for ( std::vector<Dart_handle>::iterator itsurfaces=sierpinskiTriangleSurfaces.begin();
|
||||
for ( std::vector<Dart_handle>::iterator
|
||||
itsurfaces=sierpinskiTriangleSurfaces.begin();
|
||||
itsurfaces!=sierpinskiTriangleSurfaces.end(); ++itsurfaces)
|
||||
{
|
||||
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
|
||||
|
|
@ -2838,7 +2953,8 @@ void MainWindow::onSierpinskiTriangleDec()
|
|||
|
||||
for(std::size_t i = 0; i < vertices.size(); i++)
|
||||
{
|
||||
CGAL::remove_cell<LCC,0>(*scene.lcc, vertices[i], duringConstructionUpdateAttributes);
|
||||
CGAL::remove_cell<LCC,0>(*scene.lcc, vertices[i],
|
||||
sierpinskiTriangleUpdateAttributes);
|
||||
}
|
||||
vertices.clear();
|
||||
|
||||
|
|
@ -2852,14 +2968,22 @@ void MainWindow::onSierpinskiTriangleDec()
|
|||
|
||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||
timer.stop();
|
||||
std::cout<<"Time to decrease the level of sierpinski triangle ("
|
||||
<<this->sierpinskiTriangleLevel+1<<" -> "<<this->sierpinskiTriangleLevel<<"): "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
std::cout<<"Sierpinski triangle "
|
||||
<<this->sierpinskiTriangleLevel+1<<" -> "
|
||||
<<this->sierpinskiTriangleLevel<<", "
|
||||
<<"attributes updated "
|
||||
<<(sierpinskiTriangleUpdateAttributes ? "DURING" : "AFTER")
|
||||
<< " construction: "
|
||||
<<timer.time()<<" seconds."<<std::endl;
|
||||
#endif
|
||||
|
||||
recreate_whole_volume_list();
|
||||
statusBar()->showMessage(QString ("Sierpinski triangle creation %1 -> %2").
|
||||
arg(this->sierpinskiTriangleLevel+1).
|
||||
arg(this->sierpinskiTriangleLevel),
|
||||
DELAY_STATUSMSG);
|
||||
QApplication::restoreOverrideCursor ();
|
||||
|
||||
// statusBar ()->showMessage (QString ("Sirpinski Triangle Dec"),DELAY_STATUSMSG);
|
||||
emit(sceneChanged());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,8 @@ public:
|
|||
{ setupUi(this); }
|
||||
};
|
||||
|
||||
class DialogSierpinskiCarpet : public QDialog, public Ui::createSierpinskiCarpet
|
||||
class DialogSierpinskiCarpet : public QDialog,
|
||||
public Ui::createSierpinskiCarpet
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
|
@ -72,7 +73,8 @@ public:
|
|||
{ setupUi(this); }
|
||||
};
|
||||
|
||||
class DialogSierpinskiTriangle : public QDialog, public Ui::createSierpinskiTriangle
|
||||
class DialogSierpinskiTriangle : public QDialog,
|
||||
public Ui::createSierpinskiTriangle
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
|
@ -158,12 +160,13 @@ public slots:
|
|||
void onMengerUpdateAttributes(bool);
|
||||
|
||||
void onSierpinskiCarpetChangeLevel(int);
|
||||
void onSierpinskiCarpetNeverUpdateAttributes(bool);
|
||||
/* void onSierpinskiCarpetNeverUpdateAttributes(bool);
|
||||
void onSierpinskiCarpetDuringConstructionUpdateAttributes(bool);
|
||||
void onSierpinskiCarpetAfterConstructionUpdateAttributes(bool);
|
||||
void onSierpinskiCarpetUpdateAttributesMethodStdMap(bool);
|
||||
void onSierpinskiCarpetUpdateAttributesMethodTraversal(bool);
|
||||
void onSierpinskiCarpetComputeGeometry(bool);
|
||||
void onSierpinskiCarpetComputeGeometry(bool);*/
|
||||
void onSierpinskiCarpetUpdateAttributes(bool);
|
||||
void onSierpinskiCarpetOk();
|
||||
void onSierpinskiCarpetCancel();
|
||||
void onSierpinskiCarpetInc();
|
||||
|
|
@ -211,16 +214,20 @@ protected:
|
|||
std::vector<Dart_handle>& faces,
|
||||
int markVols);
|
||||
|
||||
void sierpinski_carpet_copy_attributes_and_embed_vertex(Dart_handle dh, LCC::Point& p);
|
||||
void sierpinski_carpet_copy_attributes_and_embed_vertex(Dart_handle dh,
|
||||
LCC::Point& p);
|
||||
void sierpinski_carpet_update_geometry();
|
||||
void sierpinski_carpet_compute_geometry();
|
||||
void sierpinski_carpet_compute_4x4_geometry_matrix(LCC::Point p[4][4], LCC::Point& p00, LCC::Point& p03, LCC::Point& p33, LCC::Point& p30);
|
||||
void sierpinski_carpet_compute_4x4_geometry_matrix(LCC::Point p[4][4],
|
||||
LCC::Point& p00, LCC::Point& p03, LCC::Point& p33, LCC::Point& p30);
|
||||
void sierpinski_carpet_split_edge_in_three(Dart_handle dh);
|
||||
void sierpinski_carpet_split_face_in_three(Dart_handle dh, bool removecenter);
|
||||
void sierpinski_carpet_split_face_in_three(Dart_handle dh,
|
||||
bool removecenter);
|
||||
void sierpinski_carpet_split_face_in_nine(Dart_handle dh);
|
||||
|
||||
void sierpinski_triangle_split_edge_in_two(Dart_handle dh);
|
||||
void sierpinski_triangle_split_face_in_four(Dart_handle dh, bool removecenter);
|
||||
void sierpinski_triangle_split_face_in_four(Dart_handle dh,
|
||||
bool removecenter);
|
||||
|
||||
Scene scene;
|
||||
|
||||
|
|
@ -237,13 +244,14 @@ protected:
|
|||
|
||||
int sierpinskiCarpetLevel;
|
||||
std::size_t nbfacesinit;
|
||||
bool neverUpdateAttributes;
|
||||
bool sierpinskiCarpetUpdateAttributes;
|
||||
bool computeGeometry;
|
||||
/*bool neverUpdateAttributes;
|
||||
bool duringConstructionUpdateAttributes;
|
||||
bool afterConstructionUpdateAttributes;
|
||||
bool updateAttributesMethodStdMap;
|
||||
bool updateAttributesMethodTraversal;
|
||||
bool computeGeometry;
|
||||
bool isComputableGeometry;
|
||||
bool isComputableGeometry;*/
|
||||
std::vector<Dart_handle> sierpinskiCarpetSurfaces;
|
||||
// utilisés seulement lorsque pas de mise à jour d'attributs
|
||||
std::map<Dart_handle, LCC::Point> dart_map;
|
||||
|
|
|
|||
|
|
@ -188,34 +188,34 @@ void Viewer::drawAllVertices()
|
|||
void Viewer::initDraw()
|
||||
{
|
||||
//Compile drawFacet
|
||||
std::cout << "Compile Display Lists : Faces, " << std::flush;
|
||||
// std::cout << "Compile Display Lists : Faces, " << std::flush;
|
||||
m_dlFaces = ::glGenLists(1);
|
||||
::glNewList(m_dlFaces, GL_COMPILE);
|
||||
drawAllFaces(false);
|
||||
::glEndList();
|
||||
|
||||
//Compile drawFacet with flat shading
|
||||
std::cout << "Faces (flat shading), " << std::flush;
|
||||
// std::cout << "Faces (flat shading), " << std::flush;
|
||||
m_dlFacesFlat = ::glGenLists(1);
|
||||
::glNewList(m_dlFacesFlat, GL_COMPILE);
|
||||
drawAllFaces(true);
|
||||
::glEndList();
|
||||
|
||||
//Compile drawEdge
|
||||
std::cout << "edges, " << std::flush;
|
||||
// std::cout << "edges, " << std::flush;
|
||||
m_dlEdges = ::glGenLists(1);
|
||||
::glNewList(m_dlEdges, GL_COMPILE);
|
||||
drawAllEdges();
|
||||
::glEndList();
|
||||
|
||||
//Compile drawvertices
|
||||
std::cout << "vertices" << std::flush;
|
||||
// std::cout << "vertices" << std::flush;
|
||||
m_dlVertices = ::glGenLists(1);
|
||||
::glNewList(m_dlVertices, GL_COMPILE);
|
||||
drawAllVertices();
|
||||
::glEndList();
|
||||
|
||||
std::cout << ". DONE." << std::endl;
|
||||
// std::cout << ". DONE." << std::endl;
|
||||
m_displayListCreated = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue