Dieses Readme ist auf dem Gitlab-Server der HsH mit allen Links in den Code unter [https://lab.it.hs-hannover.de/9ue-n9b-u1/vc-pointbased-graphics](https://lab.it.hs-hannover.de/9ue-n9b-u1/vc-pointbased-graphics) verfügbar.
Dort sind auch weitere Datensets zum testen commited.
Der Code implementiert Aufgabe 1 bis 3 mit allen Extras.
Die Pointcloud-Klasse wurde zum reinen Punktecontainer und
...
...
@@ -11,9 +14,16 @@ Die Algorithmen sind hauptsächlich in den folgenden Dateien implementiert:
* CgSceneGraph/CgSceneControl.cpp - Komposition der Algorithmen zur Verwendung im Viewport
## Aufgabe 1
* der kd-Baum wird beim Laden und nach Vereinfachung einer Punkwolke implizit durch Sortierung der Vertices erzeugt (siehe CgSceneControl::handleEvent fall LoadPointCloudEvent, ab Zeile ).
*
* der kd-Baum wird beim Laden und nach Vereinfachung einer Punkwolke implizit durch Sortierung der Vertices erzeugt (siehe Eventhandler ab [CgSceneGraph/CgSceneControl.cpp/#L343](CgSceneGraph/CgSceneControl.cpp/#L343)).
* Rechtsklick im Viewport selektiert die k-nächsten Nachbarn des gewählten Punktes und zeigt sie in rot an (siehe Eventhandler ab [CgSceneGraph/CgSceneControl.cpp/#L174](CgSceneGraph/CgSceneControl.cpp/#L174)).
* Die Schaltflächen im ersten Tab kontrollieren die Darstellung des kd-Baums und ermöglichen es, nach Selektion einer Nachbarschaft die
Visualisierung der Normalen durch die Vertex-Farben wieder herzustellen (kd-Visualisierung ab [CgSceneGraph/CgSceneControl.cpp/#L263](CgSceneGraph/CgSceneControl.cpp/#L263)).
* der Closest-Point-To-Line Algorithmus beginnt ab [CgMath/CgPointWrangler.h/#L171](CgMath/CgPointWrangler.h/#L171).
## Aufgabe 2
* PCA ist in [CgMath/CgPointMath.h/#L162](CgMath/CgPointMath.h/#L162) implementiert. Die zurückgegebene Struktur enthält noch einige weitere Werte, die für folgende Algorithmen nützlich sind.
* Die Normalen werden in mehreren Schritten ausgerichtet, der komplette Ablauf ist ab [CgSceneGraph/CgSceneControl.cpp/#L301](CgSceneGraph/CgSceneControl.cpp/#L301) zu sehen.
## Aufgabe 3
* Im zweiten Tab können die Kriterien für die Vereinfachung der Punktwolke eingestellt werden. der Reset-Button verwirft die aktuelle Punktwolke und zeigt die Version, die aus der Datei geladen wurde wieder an.
* Die Vereinfachung wird ab [CgSceneGraph/CgSceneControl.cpp/#L277](CgSceneGraph/CgSceneControl.cpp/#L277) durchgeführt.