On vertices
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) |
angle_defects(mesh, zero_border=False, name='angleDefect', persistent=True, dense=True)
Computes the angle defect at each vertex, defined as 2*pi minus the sum of angles around the vertex.
Angle defect is an discrete approximation of the gaussian curvature. This function relies on the computation of cotangents on the mesh.
Warning
Only works for triangulated meshes.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
mesh |
SurfaceMesh
|
the mesh |
required |
zero_border |
bool
|
if set to true, ignores the defect on the boundary of the mesh. Defaults to False. |
False
|
name |
str
|
Name given to the attribute. Defaults to "angleDefect". |
'angleDefect'
|
persistent |
bool
|
If the attribute is persistent (stored in the mesh object) or not. Defaults to True. |
True
|
dense |
bool
|
Is the attribute dense (numpy array) or not (dict). Defaults to True |
True
|
Returns:
Type | Description |
---|---|
Attribute
|
Attribute(float) on vertices |
Raises:
Type | Description |
---|---|
Exception
|
fails if the mesh is not triangulated (ie if a face is not a triangle) |
border_normals(mesh, name='borderNormals', persistent=True, dense=False)
Computes the normal direction of the boundary curve.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
mesh |
SurfaceMesh
|
the mesh |
required |
name |
str
|
Name given to the attribute. Defaults to "borderNormals". |
'borderNormals'
|
persistent |
bool
|
If the attribute is persistent (stored in the mesh object) or not. Defaults to True. |
True
|
dense |
bool
|
Is the attribute dense (numpy array) or not (dict). Defaults to True |
False
|
Returns:
Type | Description |
---|---|
Attribute
|
Attribute(float,3) on vertices |
degree(mesh, name='degree', persistent=True, dense=True)
Computes the degree of each vertex, that is the number of vertex that are adjacent.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
mesh |
Mesh
|
the input mesh. Pointclouds are forbidden |
required |
name |
str
|
description. Defaults to "degree". |
'degree'
|
persistent |
bool
|
If the attribute is persistent (stored in the mesh object) or not. Defaults to True. |
True
|
dense |
bool
|
Is the attribute dense (numpy array) or not (dict). Defaults to True |
True
|
Returns:
Type | Description |
---|---|
Attribute
|
Attribute(int) on vertices |
vertex_normals(mesh, name='normals', persistent=True, interpolation='area', dense=True, custom_fnormals=None)
Computes normal directions as 3d vectors for each vertex. Normal at a vertex is a weighted sum of normals of adjacent faces. This function essentially interpolates the face normals.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
mesh |
SurfaceMesh
|
the input mesh |
required |
name |
str
|
Name given to the attribute. Defaults to "normals". |
'normals'
|
persistent |
bool
|
If the attribute is persistent (stored in the mesh object) or not. Defaults to True. |
True
|
interpolation |
str
|
Interpolation weighting mode. 'uniform' : computes the mean for adjacent facet 'area' : the mean is weighted by facet area. Default value. 'angle' : the mean is weighted by internal angle at the vertex |
'area'
|
dense |
bool
|
Is the attribute dense (numpy array) or not (dict). Defaults to True |
True
|
custom_fnormals |
Attribute
|
custom values for the face normals to be interpolated. Defaults to None. |
None
|
Raises:
Type | Description |
---|---|
Exception
|
if 'interpolation' is not one of {'uniform', 'area', 'angles'} |
Returns:
Type | Description |
---|---|
Attribute
|
Attribute(float, 3) on vertices |