polyhedron_utilities#

Polyhedron processing functions.

This module provides a variety of functions to process the data from a polyhedron model, which can be used to either modify or retrieved information from the specified polyhedron mesh.

References#

1(1,2,3,4,5,6)

Dobrovolskis, A. (1996). “Inertia of Any Polyhedron”, Icarus, 124 (243), 698-704.

Functions#

surface_area(vertices_coordinates, ...)

Computes the surface area of a polyhedron.

volume(vertices_coordinates, ...)

Computes the volume of a polyhedron.

centroid(vertices_coordinates, ...)

Computes the position of the centroid of a polyhedron.

modify_centroid(vertices_coordinates, ...)

Modifies the position of the centroid of the polyhedron.

inertia_tensor_from_density(...)

Compute the inertia tensor of a polyhedron, from the density.

inertia_tensor_from_gravitational_parameter(...)

Compute the inertia tensor of a polyhedron, from the gravitational parameter.

surface_area(vertices_coordinates: numpy.ndarray[numpy.float64[m, n]], vertices_defining_each_facet: numpy.ndarray[numpy.int32[m, n]]) float#

Computes the surface area of a polyhedron.

Computes the surface area of a polyhedron, according to Dobrovolskis 1.

Parameters
  • vertices_coordinates (numpy.ndarray) – Cartesian coordinates of each polyhedron vertex. Entry (i,j) denotes vertex i, coordinate j (one row per vertex, 3 columns).

  • vertices_defining_each_facet (numpy.ndarray) – Index (0 based) of the vertices constituting each facet. Entry (i,j) denotes facet i, and the jth vertex of the facet (one row per facet, 3 columns). In each row, the vertices’ indices should be ordered counterclockwise when seen from the outside of the polyhedron.

Returns

Surface area.

Return type

float

volume(vertices_coordinates: numpy.ndarray[numpy.float64[m, n]], vertices_defining_each_facet: numpy.ndarray[numpy.int32[m, n]]) float#

Computes the volume of a polyhedron.

Computes the volume of a polyhedron, according to Dobrovolskis 1.

Parameters
  • vertices_coordinates (numpy.ndarray) – Cartesian coordinates of each polyhedron vertex. Entry (i,j) denotes vertex i, coordinate j (one row per vertex, 3 columns).

  • vertices_defining_each_facet (numpy.ndarray) – Index (0 based) of the vertices constituting each facet. Entry (i,j) denotes facet i, and the jth vertex of the facet (one row per facet, 3 columns). In each row, the vertices’ indices should be ordered counterclockwise when seen from the outside of the polyhedron.

Returns

Volume.

Return type

float

centroid(vertices_coordinates: numpy.ndarray[numpy.float64[m, n]], vertices_defining_each_facet: numpy.ndarray[numpy.int32[m, n]]) numpy.ndarray[numpy.float64[3, 1]]#

Computes the position of the centroid of a polyhedron.

Computes the position of the centroid of a polyhedron, according to Dobrovolskis 1.

Parameters
  • vertices_coordinates (numpy.ndarray) – Cartesian coordinates of each polyhedron vertex. Entry (i,j) denotes vertex i, coordinate j (one row per vertex, 3 columns).

  • vertices_defining_each_facet (numpy.ndarray) – Index (0 based) of the vertices constituting each facet. Entry (i,j) denotes facet i, and the jth vertex of the facet (one row per facet, 3 columns). In each row, the vertices’ indices should be ordered counterclockwise when seen from the outside of the polyhedron.

Returns

Position of the centroid.

Return type

numpy.ndarray

modify_centroid(vertices_coordinates: numpy.ndarray[numpy.float64[m, n]], vertices_defining_each_facet: numpy.ndarray[numpy.int32[m, n]], desired_centroid: numpy.ndarray[numpy.float64[3, 1]]) numpy.ndarray[numpy.float64[m, n]]#

Modifies the position of the centroid of the polyhedron.

Modifies the coordinates of the polyhedron vertices, such that the centroid of the modified polyhedron coincides with the specified position. The centroid is computed according to Dobrovolskis 1.

Parameters
  • vertices_coordinates (numpy.ndarray) – Cartesian coordinates of each polyhedron vertex. Entry (i,j) denotes vertex i, coordinate j (one row per vertex, 3 columns).

  • vertices_defining_each_facet (numpy.ndarray) – Index (0 based) of the vertices constituting each facet. Entry (i,j) denotes facet i, and the jth vertex of the facet (one row per facet, 3 columns). In each row, the vertices’ indices should be ordered counterclockwise when seen from the outside of the polyhedron.

  • desired_centroid (numpy.ndarray) – Desired position of the centroid.

Returns

Vertices coordinates of the modified polyhedron, which has the specified centroid position.

Return type

numpy.ndarray

inertia_tensor_from_density(vertices_coordinates: numpy.ndarray[numpy.float64[m, n]], vertices_defining_each_facet: numpy.ndarray[numpy.int32[m, n]], density: float) numpy.ndarray[numpy.float64[3, 3]]#

Compute the inertia tensor of a polyhedron, from the density.

Computes the inertia tensor of a polyhedron, according to Dobrovolskis 1.

The mass distribution is defined using the density of the polyhedron. To instead use the gravitational parameter see inertia_tensor_from_gravitational_parameter().

Parameters
  • vertices_coordinates (numpy.ndarray) – Cartesian coordinates of each polyhedron vertex. Entry (i,j) denotes vertex i, coordinate j (one row per vertex, 3 columns).

  • vertices_defining_each_facet (numpy.ndarray) – Index (0 based) of the vertices constituting each facet. Entry (i,j) denotes facet i, and the jth vertex of the facet (one row per facet, 3 columns). In each row, the vertices’ indices should be ordered counterclockwise when seen from the outside of the polyhedron.

  • density (float) – Density of the polyhedron

Returns

Inertia tensor.

Return type

numpy.ndarray

inertia_tensor_from_gravitational_parameter(vertices_coordinates: numpy.ndarray[numpy.float64[m, n]], vertices_defining_each_facet: numpy.ndarray[numpy.int32[m, n]], gravitational_parameter: float, gravitational_constant: float) numpy.ndarray[numpy.float64[3, 3]]#

Compute the inertia tensor of a polyhedron, from the gravitational parameter.

Computes the inertia tensor of a polyhedron, according to Dobrovolskis 1.

The mass distribution is defined using the gravitational parameter of the polyhedron. To instead use the density see inertia_tensor_from_density().

Parameters
  • vertices_coordinates (numpy.ndarray) – Cartesian coordinates of each polyhedron vertex. Entry (i,j) denotes vertex i, coordinate j (one row per vertex, 3 columns).

  • vertices_defining_each_facet (numpy.ndarray) – Index (0 based) of the vertices constituting each facet. Entry (i,j) denotes facet i, and the jth vertex of the facet (one row per facet, 3 columns). In each row, the vertices’ indices should be ordered counterclockwise when seen from the outside of the polyhedron.

  • gravitational_parameter (float) – Gravitational parameter \(\mu\) of gravity field.

Returns

Inertia tensor.

Return type

numpy.ndarray