Tessellation & Trimming¶
The tessellate
module provides tessellation algorithms for surfaces. The following example illustrates the usage
scenario of the tessellation algorithms with surfaces.
1 2 3 4 5 6 7 8 9 10 11  from geomdl import NURBS
from geomdl import tessellate
# Create a surface instance
surf = NURBS.Surface()
# Set tessellation algorithm (you can use another algorithm)
surf.tessellator = tessellate.TriangularTessellate()
# Tessellate surface
surf.tessellate()

NURBSPython uses TriangularTessellate
class for surface tessellation by default.
Note
To get better results with the surface trimming, you need to use a relatively smaller evaluation delta or a bigger sample size value. Recommended evaluation delta is .
Class Reference¶
Abstract Tessellator¶

class
geomdl.tessellate.
AbstractTessellate
(**kwargs)¶ Bases:
object
Abstract base class for tessellation algorithms.

arguments
¶ Arguments passed to the tessellation function.
This property allows customization of the tessellation algorithm, and mainly designed to allow users to pass additional arguments to the tessellation function or change the behavior of the algorithm at runtime. This property can be thought as a way to input and store extra data for the tessellation functionality.
Getter: Gets the tessellation arguments (as a dict) Setter: Sets the tessellation arguments (as a dict)

faces
¶ Objects generated after tessellation.
Getter: Gets the faces Type: elements.AbstractEntity

is_tessellated
()¶ Checks if vertices and faces are generated.
Returns: tessellation status Return type: bool

reset
()¶ Clears stored vertices and faces.

tessellate
(points, **kwargs)¶ Abstract method for the implementation of the tessellation algorithm.
This algorithm should update
vertices
andfaces
properties.Note
This is an abstract method and it must be implemented in the subclass.
Parameters: points – points to be tessellated

vertices
¶ Vertex objects generated after tessellation.
Getter: Gets the vertices Type: elements.AbstractEntity

Triangular Tessellator¶

class
geomdl.tessellate.
TriangularTessellate
(**kwargs)¶ Bases:
geomdl.tessellate.AbstractTessellate
Triangular tessellation algorithm for surfaces.

arguments
¶ Arguments passed to the tessellation function.
This property allows customization of the tessellation algorithm, and mainly designed to allow users to pass additional arguments to the tessellation function or change the behavior of the algorithm at runtime. This property can be thought as a way to input and store extra data for the tessellation functionality.
Getter: Gets the tessellation arguments (as a dict) Setter: Sets the tessellation arguments (as a dict)

faces
¶ Objects generated after tessellation.
Getter: Gets the faces Type: elements.AbstractEntity

is_tessellated
()¶ Checks if vertices and faces are generated.
Returns: tessellation status Return type: bool

reset
()¶ Clears stored vertices and faces.

tessellate
(points, **kwargs)¶ Applies triangular tessellation.
This function does not check if the points have already been tessellated.
 Keyword Arguments:
size_u
: number of points on the udirectionsize_v
: number of points on the vdirection
Parameters: points (list, tuple) – array of points

vertices
¶ Vertex objects generated after tessellation.
Getter: Gets the vertices Type: elements.AbstractEntity

Trim Tessellator¶
New in version 5.0.

class
geomdl.tessellate.
TrimTessellate
(**kwargs)¶ Bases:
geomdl.tessellate.AbstractTessellate
Triangular tessellation algorithm for trimmed surfaces.

arguments
¶ Arguments passed to the tessellation function.
This property allows customization of the tessellation algorithm, and mainly designed to allow users to pass additional arguments to the tessellation function or change the behavior of the algorithm at runtime. This property can be thought as a way to input and store extra data for the tessellation functionality.
Getter: Gets the tessellation arguments (as a dict) Setter: Sets the tessellation arguments (as a dict)

faces
¶ Objects generated after tessellation.
Getter: Gets the faces Type: elements.AbstractEntity

is_tessellated
()¶ Checks if vertices and faces are generated.
Returns: tessellation status Return type: bool

reset
()¶ Clears stored vertices and faces.

tessellate
(points, **kwargs)¶ Applies triangular tessellation w/ trimming curves.
 Keyword Arguments:
size_u
: number of points on the udirectionsize_v
: number of points on the vdirection
Parameters: points (list, tuple) – array of points

vertices
¶ Vertex objects generated after tessellation.
Getter: Gets the vertices Type: elements.AbstractEntity

Quadrilateral Tessellator¶
New in version 5.2.

class
geomdl.tessellate.
QuadTessellate
(**kwargs)¶ Bases:
geomdl.tessellate.AbstractTessellate
Quadrilateral tessellation algorithm for surfaces.

arguments
¶ Arguments passed to the tessellation function.
This property allows customization of the tessellation algorithm, and mainly designed to allow users to pass additional arguments to the tessellation function or change the behavior of the algorithm at runtime. This property can be thought as a way to input and store extra data for the tessellation functionality.
Getter: Gets the tessellation arguments (as a dict) Setter: Sets the tessellation arguments (as a dict)

faces
¶ Objects generated after tessellation.
Getter: Gets the faces Type: elements.AbstractEntity

is_tessellated
()¶ Checks if vertices and faces are generated.
Returns: tessellation status Return type: bool

reset
()¶ Clears stored vertices and faces.

tessellate
(points, **kwargs)¶ Applies quadrilateral tessellation.
This function does not check if the points have already been tessellated.
 Keyword Arguments:
size_u
: number of points on the udirectionsize_v
: number of points on the vdirection
Parameters: points (list, tuple) – array of points

vertices
¶ Vertex objects generated after tessellation.
Getter: Gets the vertices Type: elements.AbstractEntity

Function Reference¶

geomdl.tessellate.
make_triangle_mesh
(points, size_u, size_v, **kwargs)¶ Generates a triangular mesh from an array of points.
This function generates a triangular mesh for a NURBS or BSpline surface on its parametric space. The input is the surface points and the number of points on the parametric dimensions u and v, indicated as row and column sizes in the function signature. This function should operate correctly if row and column sizes are input correctly, no matter what the points are vordered or uordered. Please see the documentation of
ctrlpts
andctrlpts2d
properties of the Surface class for more details on point ordering for the surfaces.This function accepts the following keyword arguments:
vertex_spacing
: Defines the size of the triangles via setting the jump value between pointstrims
: List of trim curves passed to the tessellation functiontessellate_func
: Function called for tessellation. Default:tessellate.surface_tessellate()
tessellate_args
: Arguments passed to the tessellation function (as a dict)
The tessellation function is designed to generate triangles from 4 vertices. It takes 4
Vertex
objects, index values for setting the triangle and vertex IDs and additional parameters as its function arguments. It returns a tuple ofVertex
andTriangle
object lists generated from the input vertices. A default triangle generator is provided as a prototype for implementation in the source code.The return value of this function is a tuple containing two lists. First one is the list of vertices and the second one is the list of triangles.
Parameters:  points (list, tuple) – input points
 size_u (int) – number of elements on the udirection
 size_v (int) – number of elements on the vdirection
Returns: a tuple containing lists of vertices and triangles
Return type: tuple

geomdl.tessellate.
polygon_triangulate
(tri_idx, *args)¶ Triangulates a monotone polygon defined by a list of vertices.
The input vertices must form a convex polygon and must be arranged in counterclockwise order.
Parameters:  tri_idx (int) – triangle numbering start value
 args (Vertex) – list of Vertex objects
Returns: list of Triangle objects
Return type: list

geomdl.tessellate.
make_quad_mesh
(points, size_u, size_v)¶ Generates a mesh of quadrilateral elements.
Parameters:  points (list, tuple) – list of points
 size_u (int) – number of points on the udirection (column)
 size_v (int) – number of points on the vdirection (row)
Returns: a tuple containing lists of vertices and quads
Return type: tuple
Helper Functions¶

geomdl.tessellate.
surface_tessellate
(v1, v2, v3, v4, vidx, tidx, trim_curves, tessellate_args)¶ Triangular tessellation algorithm for surfaces with no trims.
This function can be directly used as an input to
make_triangle_mesh()
usingtessellate_func
keyword argument.Parameters: Type: list, tuple
Returns: lists of vertex and triangle objects in (vertex_list, triangle_list) format
Type: tuple

geomdl.tessellate.
surface_trim_tessellate
(v1, v2, v3, v4, vidx, tidx, trims, tessellate_args)¶ Triangular tessellation algorithm for trimmed surfaces.
This function can be directly used as an input to
make_triangle_mesh()
usingtessellate_func
keyword argument.Parameters: Returns: lists of vertex and triangle objects in (vertex_list, triangle_list) format
Type: tuple