diff --git a/CgMath/CgPointWrangler.h b/CgMath/CgPointWrangler.h index ba1be38afba82cb5dce259ff2df676efa0015735..bc1a017f3cc86e3a357c89cde995a73309b5f30b 100644 --- a/CgMath/CgPointWrangler.h +++ b/CgMath/CgPointWrangler.h @@ -659,4 +659,4 @@ inline std::vector<unsigned int> CgPointWrangler::getNearestNeighborsFast( return erg; } -#endif // CGPOINTWRANGLER_H \ No newline at end of file +#endif // CGPOINTWRANGLER_H diff --git a/README.md b/README.md index afba976bee0c6ed22091aa2556d1f517a02ad853..59a71c33490a7abf80ca5f863b014ffc4e5d28a1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Pointbased Rendering +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 \ No newline at end of file +## 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.