Skip to content

Commit 6ecf184

Browse files
author
Ricardo Ortiz
committed
Add app to test clustering algorithms.
Need a criteria to decide when is necesary to replace cluster button with element buttons and viceversa. Idealy we would compute the distance to the camera and use that, also project the scene to a plane and do the distance computation. Replace some vtkSmartPointers by vtkNew. Fix the callback function to take into account cluster button. Tidy, fix runtime error/message about not finding signal slot. Add the camera event callback. The purpose of the callback is to track changes event in the camera so we can update the clustering. Add the camera event callback. The purpose of the callback is to track changes event in the camera so we can update the clustering algorithm. Streamline clustering algorithm implementation. Add interaction event to update/sync widgets. Optimization changes and add radius based on pixels. Optimize clustering by streamlining creation of widgets. Widgets are going to be created at the initialization stage and only the cluster widgets are dynamicaly created when interaction occur. The clustering method perform considerably faster by only creating/destroying cluster buttons with each interaction. Add routine to enhance clustering. The clustering method do a relabeling of nodes accordingly to their distance of it with its cluster and other possible clusters. There is an option in msvVTKWidgetClusters that allow you to improve the clustering at a sligly higher cost. Replace the logo with new one. Add hierarchical capabilities to the clustering methods in order to handle multiple levels (or scales). Each level contains one or more datasets (or pieces) from which button are created and clustered. Issue #8
1 parent a9e8f11 commit 6ecf184

23 files changed

Lines changed: 2615 additions & 4 deletions
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
set(KIT ButtonClusters)
2+
project(msv${KIT})
3+
4+
# --------------------------------------------------------------------------
5+
# Sources
6+
# --------------------------------------------------------------------------
7+
8+
set(msv${KIT}_SRCS
9+
msvQButtonClustersMainWindow.cxx
10+
msvQButtonClustersAboutDialog.cxx
11+
)
12+
13+
set(msv${KIT}_MOC_SRCS
14+
msvQButtonClustersMainWindow.h
15+
msvQButtonClustersAboutDialog.h
16+
)
17+
18+
set(msv${KIT}_UI_SRCS
19+
Resources/UI/msvQButtonClustersMainWindow.ui
20+
Resources/UI/msvQButtonClustersAboutDialog.ui
21+
)
22+
23+
set(msv${KIT}_QRC
24+
Resources/msvQButtonClusters.qrc
25+
)
26+
27+
QT4_WRAP_CPP(msv${KIT}_SRCS ${msv${KIT}_MOC_SRCS})
28+
QT4_WRAP_UI(msv${KIT}_UI_CXX ${msv${KIT}_UI_SRCS})
29+
QT4_ADD_RESOURCES(msv${KIT}_QRC_SRCS ${msv${KIT}_QRC})
30+
31+
# --------------------------------------------------------------------------
32+
# Include dirs
33+
# --------------------------------------------------------------------------
34+
35+
set(include_dirs
36+
${CMAKE_CURRENT_BINARY_DIR}
37+
${CMAKE_CURRENT_SOURCE_DIR}
38+
${MSVTK_INCLUDE_DIRS}
39+
${VTK_INCLUDE_DIRS}
40+
${CTK_INCLUDE_DIRS}
41+
${msvVTKParallel_INCLUDE_DIRS}
42+
${msvVTKWidgets_INCLUDE_DIRS}
43+
${msvQtWidgets_INCLUDE_DIRS}
44+
)
45+
46+
include_directories(${include_dirs})
47+
48+
# --------------------------------------------------------------------------
49+
# Build the library so it can be tested in Testing/Cpp.
50+
# --------------------------------------------------------------------------
51+
52+
add_library(msv${KIT}
53+
${msv${KIT}_SRCS}
54+
${msv${KIT}_UI_CXX}
55+
${msv${KIT}_QRC_SRCS}
56+
)
57+
58+
target_link_libraries(msv${KIT}
59+
${MSVTK_LIBRARIES}
60+
${CTK_LIBRARIES}
61+
${VTK_LIBRARIES}
62+
msvVTKParallel
63+
msvVTKWidgets
64+
msvQtWidgets
65+
)
66+
67+
install(TARGETS msv${KIT}
68+
RUNTIME DESTINATION ${MSVTK_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
69+
LIBRARY DESTINATION ${MSVTK_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
70+
ARCHIVE DESTINATION ${MSVTK_INSTALL_LIB_DIR} COMPONENT Development
71+
)
72+
73+
# --------------------------------------------------------------------------
74+
# Build the executable
75+
# --------------------------------------------------------------------------
76+
77+
add_executable(${KIT}
78+
buttonClusters.cxx
79+
)
80+
set_target_properties(${KIT} PROPERTIES OUTPUT_NAME ButtonClusters)
81+
82+
target_link_libraries(${KIT}
83+
msv${KIT}
84+
)
85+
86+
#-----------------------------------------------------------------------------
87+
# Configure
88+
# --------------------------------------------------------------------------
89+
set(MY_LIBRARY_EXPORT_DIRECTIVE "MSV_${KIT}_EXPORT")
90+
set(MY_EXPORT_HEADER_PREFIX MSV_${KIT})
91+
set(MY_LIBNAME ${PROJECT_NAME})
92+
93+
configure_file(
94+
${MSVTK_SOURCE_DIR}/CMake/msvExport.h.in
95+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Export.h
96+
)
97+
98+
set(dynamicHeaders
99+
"${dynamicHeaders};${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Export.h")
100+
101+
# --------------------------------------------------------------------------
102+
# Testing
103+
#
104+
if(BUILD_TESTING)
105+
add_subdirectory(Testing)
106+
endif()
107+
108+
# --------------------------------------------------------------------------
109+
# Install
110+
# --------------------------------------------------------------------------
111+
if(NOT APPLE)
112+
set(${KIT}_INSTALL_DESTINATION_ARGS RUNTIME DESTINATION ${MSVTK_INSTALL_BIN_DIR})
113+
else()
114+
set(${KIT}_INSTALL_DESTINATION_ARGS RUNTIME DESTINATION ".")
115+
endif()
116+
117+
install(TARGETS ${KIT}
118+
${${KIT}_INSTALL_DESTINATION_ARGS}
119+
COMPONENT Runtime)
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<VTKFile type="PolyData" version="0.1" byte_order="LittleEndian" compressor="vtkZLibDataCompressor">
2+
<PolyData>
3+
<Piece NumberOfPoints="210" NumberOfVerts="1" NumberOfLines="0" NumberOfStrips="0" NumberOfPolys="0">
4+
<PointData Scalars="ID">
5+
<DataArray type="Int16" Name="ID" format="binary" RangeMin="6" RangeMax="637">
6+
AQAAAACAAACkAQAAagEAAA==eJwFwV9MDAAAx/Hf99fE1puNReuvWDbJLur+ujvdqaMMJRuS8me7JbZuyiHz5klteunPhvNns7H58+CR5aGxee2BRzMbxxPqAePzKVW51mujGtSobQooqJAiiiqmnYoroaTalFJa7epQRnvVqQM6qB4d1XH1a0CDympIwxrVmC4qr0u6rCu6quu6oRnd0m0V9EiP9URP9UzPNa8FfdFXFfVN37UsAStYzRrWUUEVNdRSxwbqaWAzjWyliQDNtNBKkBBhIkSJkyDJLtpIkWY3HWTooptD9HKEs4yQY5xrTDDJTaaYZoZZ5rhDgbvc4z4PeMgLXvKKeV7zhre8Y5H3fOAjn/hMkR/85BdLLPObP/zlH7jEK73KZV7rCle6ytWudZ3rvclbHPB273CLWx10yGFHHHXMCSedctoZ73Gnu7zP+93tHvf6sI+5z/0+4UGf9Cmf9hlnPexzPu8R53zBox5z3uP+Dxc0VcQ=
7+
</DataArray>
8+
<DataArray type="Int16" Name="LMT" format="binary" RangeMin="-140" RangeMax="130">
9+
AQAAAACAAACkAQAAzQAAAA==eJw1kCEWxCAMREdHo9HV0Wg0unqPsCfYY+0hqqurq7HZydAlD9Ikw09og9PuMIDnEZX+ijOumAFWGvLLMZW5Y6nesbHi2PBhXHDGiwpj/KXuoG5HZ7ShckOUk9nUFEabyM6q4yC90AZ2JKFIMcjtZDQayO4kZM3pB5IyH5rRKm1q9lxVOycsPE3qomkcJkXedNKrsqbKqlft8nR25ddXvmeok+mOS5/cfFeRqmnyLv0un2e+tepGdl6sjv+0a5n+sD99m/xQz4YfcdBoTg==
10+
</DataArray>
11+
<DataArray type="Int16" Name="LAT" format="binary" RangeMin="-1000" RangeMax="152">
12+
AQAAAACAAACkAQAAMwEAAA==eJxNkE1LgkEUhU/oGyj0gYEJfWK0SIO2beon9Cf6CUFKEVkSQYQgtGjdp5UULcJqGbgLclGQEkQtXKibei2hrNOZwUU8zNw7M5cz514vvujBB9tQYomXvGCWruWTb3xXNHtd0eRBdGFMjIDKHeHHAAYRxiiiiIgwhtGLbtTYYA8Cwod2EcG4KqIoMCW1V2m9aHfQh34EccUc97gr9nnAQ8sRT7ghNq2bDqlWWGGVPmk7+GXT8i0Aj/z86FTTe1VKt7zhGreY+MeCWBEJrTkuM64sbW+SiqvMiDMey0GSRQZgeq63cDkN187AD2BeFTFVZrUy8ptiJ4YQapb5wEdOYgoNltVfkc/Mix0Rt/8vcVG+ZrHOGb2ajq95zzue8onncpK3frZhdB3ENJcJTfYPyyUPEg==
13+
</DataArray>
14+
<DataArray type="Int16" Name="LMT-LAT" format="binary" RangeMin="-1000" RangeMax="248">
15+
AQAAAACAAACkAQAAYQEAAA==eJwlj01IE2Acxn+gHhbqIJqbKAoFQlGGUH4kbEKoC4Q+jC65IBhEUDt18CNIHaQlA0mlSPBSpsGI2iHFArGoyw67BUEHL0G3Nai0ET49IA//l//7vv/397xPJ52cZEcBWjhIHTe5TFHfVRQE6eEcJVUSpYKfquCLSvqoZV3UUc+f4AjDFPRHbxUjr23t6Yk+aE3flOI8IfOqaaasdtaV1ZbyOsN94vQR4yoXqCdMTo3uE2RZ4wZpUtxmgZecZZH35HhNjd27zI9yjH6+KkmVyWWVVWtCkAM02OWvDnPIniFGOcUQz1hl3vXQmrdeWW94wDj37DLDBp/JsGJN8dgu41aaOz5bpNuEuLNHrf3ulwY5zTU7NJm1zBzT3HXdYtKnP/RbkX9X/P8kEQL0MsCIcyScZIJZnvLC67r5Y05Z0Ca7nhnyfR/HaeMSrd5f94tPvOO5HrFEh5NmnCrMf+VYhqI=
16+
</DataArray>
17+
<DataArray type="Int16" Name="Max voltage" format="binary" RangeMin="0" RangeMax="2">
18+
AQAAAACAAACkAQAAMQAAAA==eJxjZMAEjFCSEcrCDhjhNCMDE1Q1I5THBJdjQlON3SR8suj2DU7ARFgJ2QAAJpgAHg==
19+
</DataArray>
20+
</PointData>
21+
<CellData>
22+
</CellData>
23+
<Points>
24+
<DataArray type="Float32" Name="Points" NumberOfComponents="3" format="binary" RangeMin="46.63991158" RangeMax="135.6061228">
25+
AQAAAACAAADYCQAALQkAAA==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
26+
</DataArray>
27+
</Points>
28+
<Verts>
29+
<DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="209">
30+
AQAAAACAAACQBgAAbAEAAA==eJwtxddCCAAAAMCKskpCKCIzM3tL9sqKzMjeCplZ2bNQyN6bUCojmxAR/siDu5cLCPgv0EGu4ZoOdohrubbruK7rOdRhru9wN3CEG7qRGzvSTdzUzRzlaDd3C8e4pVs51q3dxm3dzu3dwXHu6E7u7C7u6m6Od3f3cE/3cm/3cV/3c38P8EAP8mAPcYKHOtHDPNwjPNKjPNpjPNbjPN4TnOSJnuTJnuKpTvY0T3eKZ3imZ3m253iuUz3P853mBV7oRV7sJV7qZV7uFV7pVV7tNV7rdGd4ndd7gzO90Zu82Vu81duc5e3e4Z3e5d3O9h7v9T7v9wEf9CEf9hEf9TEfd45zfcInfcp5zvdpn/FZF/icz/uCL/qSL/uKr/qar/uGb/qWb/uO7/qe7/uBH/qRC/3YT/zURS72M5e41GV+7hd+6Vcu92u/8Vu/83t/8Ed/8mdX+Iu/+psr/d0/XOWf/uVq//Yf//U/etxVug==
31+
</DataArray>
32+
<DataArray type="Int64" Name="offsets" format="binary" RangeMin="210" RangeMax="210">
33+
AQAAAACAAAAIAAAACwAAAA==eJy7xAABAAaYANM=
34+
</DataArray>
35+
</Verts>
36+
<Lines>
37+
<DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="209">
38+
AAAAAACAAAAAAAAA
39+
</DataArray>
40+
<DataArray type="Int64" Name="offsets" format="binary" RangeMin="210" RangeMax="210">
41+
AAAAAACAAAAAAAAA
42+
</DataArray>
43+
</Lines>
44+
<Strips>
45+
<DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="209">
46+
AAAAAACAAAAAAAAA
47+
</DataArray>
48+
<DataArray type="Int64" Name="offsets" format="binary" RangeMin="210" RangeMax="210">
49+
AAAAAACAAAAAAAAA
50+
</DataArray>
51+
</Strips>
52+
<Polys>
53+
<DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="209">
54+
AAAAAACAAAAAAAAA
55+
</DataArray>
56+
<DataArray type="Int64" Name="offsets" format="binary" RangeMin="210" RangeMax="210">
57+
AAAAAACAAAAAAAAA
58+
</DataArray>
59+
</Polys>
60+
</Piece>
61+
</PolyData>
62+
</VTKFile>
6.69 KB
Loading
20.8 KB
Loading
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>msvQButtonClustersAboutDialog</class>
4+
<widget class="QDialog" name="msvQButtonClustersAboutDialog">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>548</width>
10+
<height>493</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>About MSV Button Clusters Application</string>
15+
</property>
16+
<property name="windowIcon">
17+
<iconset resource="../msvQButtonClusters.qrc">
18+
<normaloff>:/Logo/icon.png</normaloff>:/Logo/icon.png</iconset>
19+
</property>
20+
<layout class="QVBoxLayout" name="verticalLayout">
21+
<property name="spacing">
22+
<number>0</number>
23+
</property>
24+
<property name="margin">
25+
<number>0</number>
26+
</property>
27+
<item>
28+
<widget class="QLabel" name="msvQButtonClustersLabel">
29+
<property name="sizePolicy">
30+
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
31+
<horstretch>0</horstretch>
32+
<verstretch>0</verstretch>
33+
</sizepolicy>
34+
</property>
35+
<property name="pixmap">
36+
<pixmap resource="../msvQButtonClusters.qrc">:/Logo/msv-logo.png</pixmap>
37+
</property>
38+
<property name="alignment">
39+
<set>Qt::AlignCenter</set>
40+
</property>
41+
</widget>
42+
</item>
43+
<item>
44+
<widget class="QTextEdit" name="CreditsTextEdit">
45+
<property name="readOnly">
46+
<bool>true</bool>
47+
</property>
48+
<property name="html">
49+
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
50+
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
51+
p, li { white-space: pre-wrap; }
52+
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
53+
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;MSVTK Library&lt;br /&gt;Copyright (c) Kitware Inc. &lt;/span&gt;&lt;/p&gt;
54+
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;VTK &lt;/span&gt;&lt;a href=&quot;http://www.vtk.org/copyright.php&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.vtk.org/copyright.php&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt; &lt;br /&gt;CTK &lt;/span&gt;&lt;a href=&quot;https://github.com/commontk/CTK/blob/master/LICENSE&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/commontk/CTK/blob/master/LICENSE&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
55+
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;The application has been written by Ricardo Ortiz and Julien Finet.&lt;br /&gt;Funding for this work comes from the European Commission within the MSV project (FP7-IST-248032)&lt;br /&gt;&lt;br /&gt;It uses a generated dataset on which it places vtkButtons, the buttons are manageg by the widget manager and clustered when necesary to uncluter the view.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
56+
</property>
57+
</widget>
58+
</item>
59+
<item>
60+
<widget class="QDialogButtonBox" name="buttonBox">
61+
<property name="orientation">
62+
<enum>Qt::Horizontal</enum>
63+
</property>
64+
<property name="standardButtons">
65+
<set>QDialogButtonBox::Ok</set>
66+
</property>
67+
<property name="centerButtons">
68+
<bool>true</bool>
69+
</property>
70+
</widget>
71+
</item>
72+
</layout>
73+
</widget>
74+
<resources>
75+
<include location="../msvQButtonClusters.qrc"/>
76+
</resources>
77+
<connections>
78+
<connection>
79+
<sender>buttonBox</sender>
80+
<signal>accepted()</signal>
81+
<receiver>msvQButtonClustersAboutDialog</receiver>
82+
<slot>accept()</slot>
83+
<hints>
84+
<hint type="sourcelabel">
85+
<x>248</x>
86+
<y>254</y>
87+
</hint>
88+
<hint type="destinationlabel">
89+
<x>157</x>
90+
<y>274</y>
91+
</hint>
92+
</hints>
93+
</connection>
94+
<connection>
95+
<sender>buttonBox</sender>
96+
<signal>rejected()</signal>
97+
<receiver>msvQButtonClustersAboutDialog</receiver>
98+
<slot>reject()</slot>
99+
<hints>
100+
<hint type="sourcelabel">
101+
<x>316</x>
102+
<y>260</y>
103+
</hint>
104+
<hint type="destinationlabel">
105+
<x>286</x>
106+
<y>274</y>
107+
</hint>
108+
</hints>
109+
</connection>
110+
</connections>
111+
</ui>

0 commit comments

Comments
 (0)