11. minimalBoundingBox Python plugin
minmimalBoundingBox
is a pure Python plugin built with CloudComPy.
This tool is provided as an example of CloudComPy pure Python extension.
The findRotation
function finds a minimal bounding box, not oriented along the main axes,
and the corresponding rotation.
It is not proven that the solution meets to the minimum, and the performance and robustness
can certainly be improved.
- cloudComPy.minimalBoundingBox.dist2(a, b)
Euclidian square distance between two 3D points
- cloudComPy.minimalBoundingBox.findRotation(cloud)
Finds the point cloud rotation that minimize the bounding box (built on Ox, Oy, Oz).
warning the cloud is supposed centered (bounding box center near the origin) TODO: test for robustness, add parameters to control the accuracy…
- Parameters:
cloud (ccPointCloud) – the point cloud
- Returns:
bounding box after rotation, inverse rotation, polyline defining the optimal bounding box of the point cloud, polyline cloud
- Return type:
tuple of 4 objects
- cloudComPy.minimalBoundingBox.isocahedron()
isocahedron: defines 12 nodes equally distributed on the sphere. For each node, we keep the neighbours. The sphere is normalised.
- Returns:
the 12 nodes (tuple) and a dictionary of the neighbours indices for each node index
- Return type:
tuple
- cloudComPy.minimalBoundingBox.section(x, cl)
Optimise the object bounding box section by oz rotation
- Parameters:
x (tuple) – one test value for rotation along oz
cl (ccPointCloud) – point cloud
- Returns:
bounding box x*y section, to minimise
- Return type:
float
- cloudComPy.minimalBoundingBox.zinv(x, i1, i2, i3, cl, isoNodes)
optimization function: maximize the z of object bounding box by adjusting rotation. 3 neighbours points on the normalized isocahedron defines a starting point and 2 directions: starting point: rotation defined by i1, direction 1: geodesic defined by points i1, i2, direction 2: geodesic defined by points i1, i3,
- Param:
tuple x: 2 test values for rotations along the 2 directions
- Parameters:
i1 (int) – index of the starting point in isocahedron
i2 (int) – index of in isocahedron (i1,i2 define the geodesic of first direction)
i3 (int) – index of in isocahedron (i1,i3 define the geodesic of second direction)
cl (ccPointCloud) – point cloud
isoNodes (tuple) – the 12 points of the normalised isocahedron
- Returns:
opposite of the z dimension of the bounding box after rotation (value to minimise)
- Return type:
float