====== Point Cloud====== Point clouds in GroIMP are composed of a ''PointCloud'', a ''Cloud'' and ''Point''. They are defined as follow: * **PointCloud** : A **Node**, i.e. an object that can be inserted in a GroIMP graph. The PointCloud is responsible for the display of the points. * **Cloud** : The representation of the data structure through which the point cloud data is accessed. * **Point** : The base interface that an object must implements to be part of a Cloud. These three Objects implements **CloudContext**, meaning when any of the three is selected, you can access the **Cloud** structure handled. Most of the tools from the package //de.grogra.pointcloud.tools// are applied on Cloud, and produce Cloud objects. The GUI commands however can works with any CloudContext object. The PointCloud objects can be modified with a set of available [[:01_user_documentation:05_object:01_geometric:02_3d:01_primitive:12_point_cloud:15_tools|tools]], [[:01_user_documentation:09_math:02_set_theory_volume:50_fitting|shape fitting]], and [[:01_user_documentation:09_math:02_set_theory_volume:50_pccluster|clustering]] ====== ====== scale 300 width Class Node Class PointCloud { setCloud() } Interface CloudContext { Cloud getCloud } Interface Cloud { setPoints(Point[]) addPoints(Point[]) getPoints() remove(Object[]) removeAll() float[] pointsToFloat() Point[] floatsToPoints(float[]) } Interface Point { float[] toFloat() } Node <|-- PointCloud CloudContext <|.. PointCloud CloudContext <|-- Cloud CloudContext <|-- Point Point --* Cloud Cloud --o PointCloud {{namespace>01_user_documentation:05_object:01_geometric:02_3d:01_primitive:12_point_cloud}}