Skip to content

Point Sampling

PointCloud(data=None)

Bases: Mesh

A data structure for representing point clouds

Attributes:

Name Type Description
vertices DataContainer

the container for all vertices

__str__ str

Representation of the object and its elements as a string.

id_vertices property

Shortcut for range(len(self.vertices))

append(x)

Shortcut for self.vertices.append(x), since we can only append elements in the 'vertices' container

PolyLine(data=None)

Bases: Mesh

A data structure for representing polylines.

Attributes:

Name Type Description
vertices DataContainer

the container for all vertices

edges DataContainer

the container for all edges

__str__

Representation of the object and its elements as a string.

id_edges property

Shortcut for range(len(self.edges))

id_vertices property

Shortcut for range(len(self.vertices))

SurfaceMesh(data=None)

Bases: Mesh

A data structure for representing polygonal surfaces.

Attributes:

Name Type Description
vertices DataContainer

the container for all vertices

edges DataContainer

the container for all edges

faces DataContainer

the container for all faces

face_corners DataContainer

the container for all corner of faces

boundary_edges list

list of all edge indices on the boundary

interior_edges list

list of all interior edge indices (all edges \ boundary_edges)

boundary_vertices list

list of all vertex indices on the boundary

interior_vertices list

list of all interior verticex indices (all vertices \ boundary_vertices)

connectivity _SurfaceConnectivity

the connectivity utility class

id_corners property

Shortcut for range(len(self.face_corners))

id_edges property

Shortcut for range(len(self.edges))

id_faces property

Shortcut for range(len(self.faces))

id_vertices property

Shortcut for range(len(self.vertices))

clear_boundary_data()

Clear all boundary data. Next call to a boundary/interior container or method will recompute everything

is_edge_on_border(u, v)

whether edge (u,v) is a boundary edge or not

Parameters:

Name Type Description Default
u int

vertex id

required
v int

vertex id

required

Returns:

Name Type Description
bool bool

whether edge (u,v) is a boundary edge or not. Returns False if (u,v) is not a valid edge.

is_quad()

Checks if the mesh is a quadrangulation

Returns:

Name Type Description
bool bool

True if the mesh is quadrangular (all faces are quad)

is_triangular()

Checks if the mesh is a triangulation

Returns:

Name Type Description
bool bool

True if the mesh is triangular (all faces are triangles)

is_vertex_on_border(u)

whether vertex u is a boundary vertex or not.

Parameters:

Name Type Description Default
u int

vertex id

required

Returns:

Name Type Description
bool bool

whether vertex u is a boundary vertex or not.

ith_vertex_of_face(fid, i)

helper function to get the i-th vertex of a face, i.e. self.faces[fid][i]

Parameters:

Name Type Description Default
fid int

face id

required
i int

vertex id in face. Should be 0 <= vid < len(face)

required

Returns:

Name Type Description
int int

the id of the i-th vertex in face fid (self.faces[fid][i])

pt_of_face(fid)

point coordinates of vertices of face fid

Parameters:

Name Type Description Default
fid int

face id

required

Returns:

Name Type Description
Iterable

iterator of Vec objects representing point coordinates of vertices

VolumeMesh(data=None)

Bases: Mesh

id_cells property

Shortcut for range(len(self.cells))

id_corners property

Shortcut for range(len(self.face_corners))

id_edges property

Shortcut for range(len(self.edges))

id_faces property

Shortcut for range(len(self.faces))

id_vertices property

Shortcut for range(len(self.vertices))

is_edge_on_border(*args)

Simple test to determine if a given edge is on the boundary of the mesh.

Returns:

Name Type Description
bool bool

Returns True if the given edge is on the boundary of the mesh.

is_face_on_border(*args)

Simple test to determine if a given face is on the boundary of the mesh.

Returns:

Name Type Description
bool bool

Returns True is the given face exists and is on the boundary of the mesh

is_tetrahedral()

Returns:

Name Type Description
bool bool

True if the mesh is tetrahedral (all cells are tetrahedra)

sample_AABB(box, n_pts, mode='uniform', return_point_cloud=False)

Sample a point cloud uniformly at random inside an axis-aligned bounding box. Works by sampling the unit cube and applying an affine transformation.

Parameters:

Name Type Description Default
box AABB

the domain of sampling

required
n_pts int

number of points to sample. If mode is 'grid', the function may return a slightly smaller number of points (nearest perfect n-th root).

required
mode str

sampling mode. 'uniform' or 'grid'. Uniform takes points at random, while 'grid' generates a grid of regularly spaced points.

'uniform'
return_point_cloud bool

whether to compile the points in a PointCloud object or return the raw numpy array. Is ignored if the bounding box has dimension >3. Defaults to False.

False

Raises:

Type Description
Exception

fails if the bounding box is empty.

ValueError

fails if the dimension of the box is > 3 and return_point_cloud is set to True, so that no PointCloud object with dim > 3 is created.

Returns:

Type Description

PointCloud | np.ndarray: a sampled point cloud of n_pts points

sample_ball(center, radius, n_pts, return_point_cloud=False)

Samples points uniformly inside a 3D ball.

Parameters:

Name Type Description Default
center Vec

center of the ball

required
radius float

radius of the ball

required
n_pts int

number of points to sample

required
return_point_cloud bool

whether to compile the points in a PointCloud object or return the raw numpy array. Defaults to False.

False

Returns:

Type Description

PointCloud | np.ndarray: a sampled point cloud of n_pts points

sample_polyline(mesh, n_pts, return_point_cloud=False)

Sample a point cloud uniformly at random from a polyline

Parameters:

Name Type Description Default
mesh PolyLine

the input polyline

required
n_pts int

number of points to sample

required
return_point_cloud bool

whether to compile the points in a PointCloud object or return the raw numpy array. Defaults to False.

False

Returns:

Type Description

PointCloud | np.ndarray: a sampled point cloud of n_pts points

sample_sphere(center, radius, n_pts, return_point_cloud=False)

Samples points uniformly on the surface of a 3D sphere

Parameters:

Name Type Description Default
center Vec

center of the sphere

required
radius float

radius of the spheres

required
n_pts int

number of points to sample

required
return_point_cloud bool

whether to compile the points in a PointCloud object or return the raw numpy array. Defaults to False.

False

Returns:

Type Description

PointCloud | np.ndarray: a sampled point cloud of n_pts points

sample_surface(mesh, n_pts, return_point_cloud=False, return_normals=False)

Sample a point cloud uniformly at random from a surface mesh

Parameters:

Name Type Description Default
mesh SurfaceMesh

input mesh

required
n_pts int

number of points to sample

required
return_point_cloud bool

whether to compile the points in a PointCloud object or return the raw numpy array. Defaults to False.

False
return_normals bool

wether to assign the normal of the faces to sampled points. Only has effect if return_point_cloud is set to True. Defaults to False.

False

Returns:

Type Description

PointCloud | np.ndarray: a sampled point cloud of n_pts points

np.ndarray : the associated normals (if sample_normals was set to True)