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