Skip to content

Shortest Paths

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()

Returns:

Name Type Description
bool bool

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

is_triangular()

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)

check_argument(argname, argvalue, expected_type, expected_values=None)

check input sanity on the argument of a function

Parameters:

Name Type Description Default
argname str

Name of the argument (for exhaustivity of error message)

required
argvalue any

value of the argument

required
expected_type type

expected type of the argument. If type(argvalue) does not match, will raise an InvalidArgumentTypeError

required
expected_values list

List of possible values the argument is allowed to take. If argvalue is not in the list, will raise an InvalidArgumentValueError. Defaults to None.

None

shortest_path(mesh, start, targets, weights='length', export_path_mesh=False)

Computes the shortest path from 'start' vertex to all given targets. Uses Dijsktra's algorithm

Parameters:

Name Type Description Default
mesh Union[Polyline, SurfaceMesh, VolumeMesh]

The mesh

required
start int

Vertex index of starting point on the mesh

required
targets int | list | set

Vertex index of the end point on the mesh or list of vertex indexes for ending points on the mesh

required
weights str | dict)

provided weights of each edge. Options are: - "one" : uniform weight = 1 for every edge - "length" : use the length of the edge - any dict : custom weights Defaults to "length".

'length'
export_path_mesh bool

If specified, will also return the path as a Polyline file. Defaults to False.

False

Returns:

Name Type Description
dict

target_id -> list of vertices to visit on shortest path from 'start' to 'target_id'

If export_path_mesh is set to True, also returns a Polyline

shortest_path_to_border(mesh, start, weights='length', export_path_mesh=False)

Computes the shortest path from 'start' vertex to the boundary of the mesh. Call to shortest_path_to_vertex_set with the set of boundary vertices

Parameters:

Name Type Description Default
mesh SurfaceMesh

The mesh

required
start int

Vertex index of starting point on the mesh

required
weights str | dict | Attribute)

provided weights of each edge. Options are: - "one" : uniform weight = 1 for every edge - "length" : use the length of the edge - any dict or Attribute on edges : custom weights weights are set to 0 for edges on the boundary. Defaults to "length".

'length'
export_path_mesh bool

If specified, will also return the path as a Polyline file. Defaults to False.

False

Raises: Exception: "Mesh has no border" raised if the border of the mesh does not exist

Returns:

Name Type Description
list

The list of vertices on shortest path

If export_path_mesh is set to True, also returns a Polyline

shortest_path_to_vertex_set(mesh, start, targets, weights='length', export_path_mesh=False)

Computes the shortest path from 'start' vertex to the closest vertex in the target set The idea is to add fictionnal edges between all vertices of targets to a representent vertex, with weight 0, and call Dijsktra's algorithm to reach this vertex.

Parameters:

Name Type Description Default
mesh Union[Polyline, SurfaceMesh, VolumeMesh]

The mesh

required
start int

Vertex index of starting point on the mesh

required
targets list

list of vertices to reach

required
weights str | dict)

provided weights of each edge. Options are: - "one" : uniform weight = 1 for every edge - "length" : use the length of the edge - any dict : custom weights Defaults to "length".

'length'
export_path_mesh bool

If specified, will also return the path as a Polyline file. Defaults to False.

False

Raises:

Type Description
Exception

No target provided if the target list is empty

Returns:

Type Description

(int) : the index of the closest vertex from the targets set

(list) : the list of vertices on the closest path

If export_path_mesh is set to True, also returns a Polyline