mani_skill.utils.geometry.bounding_cylinder#

Smallest enclosing cylinder computation.

Based on the algorithm from: https://www.nayuki.io/page/smallest-enclosing-circle

Functions#

_compute_circle_with_point(points, p)

_compute_circle_with_two_points(points, p, q)

_compute_circumcircle(a, b, c)

_compute_cross_product(x0, y0, x1, y1, x2, y2)

_compute_smallest_circle(points)

_get_circle_from_diameter(a, b)

_point_in_circle(circle, point)

aabc(points)

Compute axis-aligned bounding cylinder for 3D points.

Module Contents#

mani_skill.utils.geometry.bounding_cylinder._compute_circle_with_point(points, p)[source]#
Parameters:
  • points (list[Tuple[float, float]]) –

  • p (Tuple[float, float]) –

Return type:

Tuple[float, float, float]

mani_skill.utils.geometry.bounding_cylinder._compute_circle_with_two_points(points, p, q)[source]#
Parameters:
  • points (list[Tuple[float, float]]) –

  • p (Tuple[float, float]) –

  • q (Tuple[float, float]) –

Return type:

Tuple[float, float, float]

mani_skill.utils.geometry.bounding_cylinder._compute_circumcircle(a, b, c)[source]#
Parameters:
  • a (Tuple[float, float]) –

  • b (Tuple[float, float]) –

  • c (Tuple[float, float]) –

Return type:

Optional[Tuple[float, float, float]]

mani_skill.utils.geometry.bounding_cylinder._compute_cross_product(x0, y0, x1, y1, x2, y2)[source]#
Parameters:
  • x0 (float) –

  • y0 (float) –

  • x1 (float) –

  • y1 (float) –

  • x2 (float) –

  • y2 (float) –

Return type:

float

mani_skill.utils.geometry.bounding_cylinder._compute_smallest_circle(points)[source]#
Parameters:

points (list[Tuple[float, float]]) –

Return type:

Optional[Tuple[float, float, float]]

mani_skill.utils.geometry.bounding_cylinder._get_circle_from_diameter(a, b)[source]#
Parameters:
  • a (Tuple[float, float]) –

  • b (Tuple[float, float]) –

Return type:

Tuple[float, float, float]

mani_skill.utils.geometry.bounding_cylinder._point_in_circle(circle, point)[source]#
Parameters:
  • circle (Optional[Tuple[float, float, float]]) –

  • point (Tuple[float, float]) –

Return type:

bool

mani_skill.utils.geometry.bounding_cylinder.aabc(points)[source]#

Compute axis-aligned bounding cylinder for 3D points.

Parameters:

points (numpy.ndarray) – Nx3 array of points

Returns:

(center_x, center_y, radius, min_z, max_z) tuple

Return type:

Tuple[float, float, float, float, float]