volume_polyhedron

compas.geometry.volume_polyhedron(polyhedron)[source]

Compute the volume of a polyhedron represented by a closed mesh.

Parameters

polyhedron (tuple[sequence[[float, float, float] | compas.geometry.Point], sequence[sequence[int]]]) – The vertices and faces of the polyhedron.

Returns

float – The volume of the polyhedron.

Notes

This implementation is based on the divergence theorem, the fact that the area vector is constant for each face, and the fact that the area of each face can be computed as half the length of the cross product of two adjacent edge vectors 1.

\begin{align} V = \int_{P} 1 &= \frac{1}{3} \int_{\partial P} \mathbf{x} \cdot \mathbf{n} \\ &= \frac{1}{3} \sum_{i=0}^{N-1} \int{A_{i}} a_{i} \cdot n_{i} \\ &= \frac{1}{6} \sum_{i=0}^{N-1} a_{i} \cdot \hat n_{i} \end{align}

Warning

The volume computed by this funtion is only correct if the polyhedron is convex, has planar faces, and is positively oriented (all face normals point outwards).

References

1

Nurnberg, R. Calculating the area and centroid of a polygon in 2d. Available at: http://wwwf.imperial.ac.uk/~rn/centroid.pdf