trimesh.curvature module

curvature.py

Query mesh curvature.

trimesh.curvature.discrete_gaussian_curvature_measure(mesh, points, radius)

Return the discrete gaussian curvature measure of a sphere centered at a point as detailed in ‘Restricted Delaunay triangulations and normal cycle’- Cohen-Steiner and Morvan.

This is the sum of the vertex defects at all vertices within the radius for each point.

Parameters:
  • points ((n, 3) float) – Points in space

  • radius (float ,) – The sphere radius, which can be zero if vertices passed are points.

Returns:

gaussian_curvature – Discrete gaussian curvature measure.

Return type:

(n,) float

trimesh.curvature.discrete_mean_curvature_measure(mesh, points, radius)

Return the discrete mean curvature measure of a sphere centered at a point as detailed in ‘Restricted Delaunay triangulations and normal cycle’- Cohen-Steiner and Morvan.

This is the sum of the angle at all edges contained in the sphere for each point.

Parameters:
  • points ((n, 3) float) – Points in space

  • radius (float) – Sphere radius which should typically be greater than zero

Returns:

mean_curvature – Discrete mean curvature measure.

Return type:

(n,) float

trimesh.curvature.face_angles_sparse(mesh)

A sparse matrix representation of the face angles.

Returns:

sparse – matrix is float shaped (len(vertices), len(faces))

Return type:

scipy.sparse.coo_matrix

trimesh.curvature.line_ball_intersection(start_points, end_points, center, radius)

Compute the length of the intersection of a line segment with a ball.

Parameters:
  • start_points ((n,3) float, list of points in space)

  • end_points ((n,3) float, list of points in space)

  • center ((3,) float, the sphere center)

  • radius (float, the sphere radius)

Returns:

lengths

Return type:

(n,) float, the lengths.

trimesh.curvature.sphere_ball_intersection(R, r)

Compute the surface area of the intersection of sphere of radius R centered at (0, 0, 0) with a ball of radius r centered at (R, 0, 0).

Parameters:
  • R (float, sphere radius)

  • r (float, ball radius)

Returns:

area

Return type:

float, the surface are.

trimesh.curvature.vertex_defects(mesh)

Return the vertex defects, or (2*pi) minus the sum of the angles of every face that includes that vertex.

If a vertex is only included by coplanar triangles, this will be zero. For convex regions this is positive, and concave negative.

Returns:

vertex_defect – Vertex defect at the every vertex

Return type:

(len(self.vertices), ) float