microgen.shape package

Shape.

Shape (microgen.shape)

class microgen.shape.Box(dim: tuple[float, float, float] = (1, 1, 1), dim_x: float | None = None, dim_y: float | None = None, dim_z: float | None = None, **kwargs: Vector3DType)

Bases: Shape

Class to generate a box.

_images/microgen.shape_1_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a box CAD shape using the given parameters.

generateVtk(**kwargs: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(level: int = 0, **_: KwargsGenerateType) pv.PolyData

Generate a box VTK shape using the given parameters.

class microgen.shape.Capsule(height: float = 1, radius: float = 0.5, **kwargs: Vector3DType)

Bases: Shape

Class to generate a capsule (cylinder with hemispherical ends).

_images/microgen.shape_2_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a capsule CAD shape using the given parameters.

generateVtk(resolution: int = 100, theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(resolution: int = 100, theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Generate a capsule VTK shape using the given parameters.

class microgen.shape.Cylinder(height: float = 1, radius: float = 0.5, **kwargs: Vector3DType)

Bases: Shape

Class to generate a cylinder.

_images/microgen.shape_3_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a cylinder CAD shape using the given parameters.

generateVtk(resolution: int = 100, **kwargs: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(resolution: int = 100, **_: KwargsGenerateType) pv.PolyData

Generate a cylinder VTK shape using the given parameters.

class microgen.shape.CylindricalTpms(radius: float, surface_function: Field, offset: float | Field | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), cell_size: float | Sequence[float] = 1.0, repeat_cell: int | Sequence[int] = 1, center: Vector3DType = (0, 0, 0), orientation: Vector3DType = (0, 0, 0), resolution: int = 20, density: float | None = None)

Bases: Tpms

Class used to generate cylindrical TPMS geometries (sheet or skeletals parts).

class microgen.shape.Ellipsoid(radii: tuple[float, float, float] = (1, 0.5, 0.25), a_x: float | None = None, a_y: float | None = None, a_z: float | None = None, **kwargs: Vector3DType)

Bases: Shape

Class to generate an ellipsoid.

_images/microgen.shape_4_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate an ellipsoid CAD shape using the given parameters.

generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate an ellipsoid VTK polydta using the given parameters.

class microgen.shape.ExtrudedPolygon(list_corners: Sequence[tuple[float, float]] | None = None, height: float = 1, **kwargs: Vector3DType | dict[str, Sequence[tuple[float, float]]])

Bases: Shape

ExtrudedPolygon.

Class to generate an extruded polygon with a given list of points and a thickness

_images/microgen.shape_5_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate an extruded polygon CAD shape using the given parameters.

generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate an extruded polygon VTK shape using the given parameters.

class microgen.shape.Infill(obj: PolyData, surface_function: Callable[[ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]]], ndarray[Any, dtype[float64]]], offset: float | Callable[[ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]]], ndarray[Any, dtype[float64]]] = 0.0, cell_size: float | Sequence[float] | ndarray[Any, dtype[float64]] | None = None, repeat_cell: int | Sequence[int] | ndarray[Any, dtype[int8]] | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), resolution: int = 20, density: float | None = None)

Bases: Tpms

Generate a TPMS infill inside a given object.

class microgen.shape.Polyhedron(dic: dict[str, list[Vertex | Face]] | None = None, **kwargs: Vector3DType)

Bases: Shape

Class to generate a Polyhedron with a given set of faces and vertices.

_images/microgen.shape_6_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a polyhedron CAD shape using the given parameters.

generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated method. Use generate_vtk instead.

generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate a polyhedron VTK shape using the given parameters.

class microgen.shape.Shape(center: Vector3DType = (0, 0, 0), orientation: Vector3DType = (0, 0, 0))

Bases: ABC

Shape class to manage shapes.

Parameters:
  • shape – name of the shape

  • center – center

  • orientation – orientation

abstract generate(**_: KwargsGenerateType) cq.Shape

Generate the CAD shape.

Returns:

cq.Shape

abstract generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk instead.

abstract generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate the vtk mesh of the shape.

Returns:

pv.PolyData

class microgen.shape.Sphere(radius: float = 1, **kwargs: Vector3DType)

Bases: Shape

Class to generate a sphere.

_images/microgen.shape_7_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a sphere CAD shape using the given parameters.

generateVtk(theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Deprecated method. Use generate_vtk instead.

generate_vtk(theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Generate a sphere VTK shape using the given parameters.

class microgen.shape.SphericalTpms(radius: float, surface_function: Field, offset: float | Field | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), cell_size: float | Sequence[float] = 1.0, repeat_cell: int | Sequence[int] = 1, center: Vector3DType = (0, 0, 0), orientation: Vector3DType = (0, 0, 0), resolution: int = 20, density: float | None = None)

Bases: Tpms

Class used to generate spherical TPMS geometries (sheet or skeletals parts).

class microgen.shape.Tpms(surface_function: Field, offset: float | Field | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), cell_size: float | Sequence[float] = 1.0, repeat_cell: int | Sequence[int] = 1, resolution: int = 20, density: float | None = None, **kwargs: Vector3DType)

Bases: Shape

Triply Periodical Minimal Surfaces.

Class to generate Triply Periodical Minimal Surfaces (TPMS) geometry from a given mathematical function, with given offset

functions available :
generate(type_part: TpmsPartType = 'sheet', smoothing: int = 0, algo_resolution: int | None = None, **_: KwargsGenerateType) cq.Shape

Generate CadQuery Shape object of the required TPMS part.

Parameters:
  • type_part – part of the TPMS desired (‘sheet’, ‘lower skeletal’, ‘upper skeletal’ or ‘surface’)

  • smoothing – smoothing loop iterations

  • verbose – display progressbar of the conversion to CadQuery object

  • algo_resolution – if offset must be computed to fit density, resolution of the temporary TPMS used to compute the offset

Returns:

CadQuery Shape object of the required TPMS part

generateVtk(type_part: TpmsPartType = 'sheet', algo_resolution: int | None = None, **_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_grid_vtk(type_part: TpmsPartType = 'sheet', algo_resolution: int | None = None, **_: KwargsGenerateType) pv.UnstructuredGrid

Generate VTK UnstructuredGrid object of the required TPMS part.

generate_vtk(type_part: TpmsPartType = 'sheet', algo_resolution: int | None = None, **_: KwargsGenerateType) pv.PolyData

Generate VTK PolyData object of the required TPMS part.

Parameters:
  • type_part – part of the TPMS desireds

  • algo_resolution – if offset must be computed to fit density, resolution of the temporary TPMS used to compute the offset

Returns:

VTK PolyData object of the required TPMS part

property grid_lower_skeletal: UnstructuredGrid

Return lower skeletal part.

property grid_sheet: UnstructuredGrid

Return sheet part.

property grid_upper_skeletal: UnstructuredGrid

Return upper skeletal part.

property lower_skeletal: PolyData

Return lower skeletal part.

property offset: float | ndarray[Any, dtype[float64]] | None

Returns the offset value.

classmethod offset_from_density(surface_function: Field, part_type: TpmsPartType, density: float, resolution: int = 20) float

Return the offset corresponding to the required density.

Parameters:
  • surface_function – tpms function

  • part_type – type of the part (sheet, lower skeletal or upper skeletal)

  • density – Required density, 0.5 for 50%

  • resolution – resolution of the tpms used to compute the offset

Returns:

corresponding offset value

property sheet: PolyData

Return sheet part.

property skeletals: tuple[PolyData, PolyData]

Returns both skeletal parts.

property surface: PolyData

Returns isosurface f(x, y, z) = 0.

property upper_skeletal: PolyData

Return upper skeletal part.

microgen.shape.newGeometry(shape: str, param_geom: dict[str, GeometryParameterType], center: tuple[float, float, float] = (0, 0, 0), orientation: tuple[float, float, float] = (0, 0, 0)) Shape

Create a new basic geometry with given shape and geometrical parameters.

Parameters:
  • shape – name of the geometry

  • param_geom – dictionary with required geometrical parameters

  • center – center

  • orientation – orientation

Return geometry:

Shape

microgen.shape.new_geometry(shape: str, param_geom: dict[str, GeometryParameterType], center: tuple[float, float, float] = (0, 0, 0), orientation: tuple[float, float, float] = (0, 0, 0)) Shape

Create a new basic geometry with given shape and geometrical parameters.

Parameters:
  • shape – name of the geometry

  • param_geom – dictionary with required geometrical parameters

  • center – center

  • orientation – orientation

Return geometry:

Shape

Basic Geometry.

Basic Geometry (microgen.shape.shape)

class microgen.shape.shape.Shape(center: Vector3DType = (0, 0, 0), orientation: Vector3DType = (0, 0, 0))

Bases: ABC

Shape class to manage shapes.

Parameters:
  • shape – name of the shape

  • center – center

  • orientation – orientation

abstract generate(**_: KwargsGenerateType) cq.Shape

Generate the CAD shape.

Returns:

cq.Shape

abstract generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk instead.

abstract generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate the vtk mesh of the shape.

Returns:

pv.PolyData

Box.

Box (microgen.shape.box)

class microgen.shape.box.Box(dim: tuple[float, float, float] = (1, 1, 1), dim_x: float | None = None, dim_y: float | None = None, dim_z: float | None = None, **kwargs: Vector3DType)

Bases: Shape

Class to generate a box.

_images/microgen.shape_8_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a box CAD shape using the given parameters.

generateVtk(**kwargs: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(level: int = 0, **_: KwargsGenerateType) pv.PolyData

Generate a box VTK shape using the given parameters.

Capsule.

Capsule (microgen.shape.capsule)

class microgen.shape.capsule.Capsule(height: float = 1, radius: float = 0.5, **kwargs: Vector3DType)

Bases: Shape

Class to generate a capsule (cylinder with hemispherical ends).

_images/microgen.shape_9_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a capsule CAD shape using the given parameters.

generateVtk(resolution: int = 100, theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(resolution: int = 100, theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Generate a capsule VTK shape using the given parameters.

Cylinder.

Cylinder (microgen.shape.cylinder)

class microgen.shape.cylinder.Cylinder(height: float = 1, radius: float = 0.5, **kwargs: Vector3DType)

Bases: Shape

Class to generate a cylinder.

_images/microgen.shape_10_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a cylinder CAD shape using the given parameters.

generateVtk(resolution: int = 100, **kwargs: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(resolution: int = 100, **_: KwargsGenerateType) pv.PolyData

Generate a cylinder VTK shape using the given parameters.

Ellipsoid.

Ellipsoid (microgen.shape.ellipsoid)

class microgen.shape.ellipsoid.Ellipsoid(radii: tuple[float, float, float] = (1, 0.5, 0.25), a_x: float | None = None, a_y: float | None = None, a_z: float | None = None, **kwargs: Vector3DType)

Bases: Shape

Class to generate an ellipsoid.

_images/microgen.shape_11_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate an ellipsoid CAD shape using the given parameters.

generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate an ellipsoid VTK polydta using the given parameters.

Extruded Polygon.

Extruded Polygon (microgen.shape.extruded_polygon)

class microgen.shape.extruded_polygon.ExtrudedPolygon(list_corners: Sequence[tuple[float, float]] | None = None, height: float = 1, **kwargs: Vector3DType | dict[str, Sequence[tuple[float, float]]])

Bases: Shape

ExtrudedPolygon.

Class to generate an extruded polygon with a given list of points and a thickness

_images/microgen.shape_12_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate an extruded polygon CAD shape using the given parameters.

generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate an extruded polygon VTK shape using the given parameters.

Polyhedron.

Polyhedron (microgen.shape.polyhedron)

class microgen.shape.polyhedron.Polyhedron(dic: dict[str, list[Vertex | Face]] | None = None, **kwargs: Vector3DType)

Bases: Shape

Class to generate a Polyhedron with a given set of faces and vertices.

_images/microgen.shape_13_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a polyhedron CAD shape using the given parameters.

generateVtk(**_: KwargsGenerateType) pv.PolyData

Deprecated method. Use generate_vtk instead.

generate_vtk(**_: KwargsGenerateType) pv.PolyData

Generate a polyhedron VTK shape using the given parameters.

microgen.shape.polyhedron.read_obj(filename: str) dict[str, list[Tuple[float, float, float] | Dict[str, List[int]]]]

Read vertices and faces from obj format file for polyhedron.

Sphere.

Sphere (microgen.shape.sphere)

class microgen.shape.sphere.Sphere(radius: float = 1, **kwargs: Vector3DType)

Bases: Shape

Class to generate a sphere.

_images/microgen.shape_14_0.png
generate(**_: KwargsGenerateType) cq.Shape

Generate a sphere CAD shape using the given parameters.

generateVtk(theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Deprecated method. Use generate_vtk instead.

generate_vtk(theta_resolution: int = 50, phi_resolution: int = 50, **_: KwargsGenerateType) pv.PolyData

Generate a sphere VTK shape using the given parameters.

TPMS.

TPMS (microgen.shape.tpms)

class microgen.shape.tpms.CylindricalTpms(radius: float, surface_function: Field, offset: float | Field | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), cell_size: float | Sequence[float] = 1.0, repeat_cell: int | Sequence[int] = 1, center: Vector3DType = (0, 0, 0), orientation: Vector3DType = (0, 0, 0), resolution: int = 20, density: float | None = None)

Bases: Tpms

Class used to generate cylindrical TPMS geometries (sheet or skeletals parts).

class microgen.shape.tpms.Infill(obj: PolyData, surface_function: Callable[[ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]]], ndarray[Any, dtype[float64]]], offset: float | Callable[[ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]], ndarray[Any, dtype[float64]]], ndarray[Any, dtype[float64]]] = 0.0, cell_size: float | Sequence[float] | ndarray[Any, dtype[float64]] | None = None, repeat_cell: int | Sequence[int] | ndarray[Any, dtype[int8]] | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), resolution: int = 20, density: float | None = None)

Bases: Tpms

Generate a TPMS infill inside a given object.

exception microgen.shape.tpms.ShellCreationError(message: str)

Bases: Exception

Error raised when the shell creation fails.

class microgen.shape.tpms.SphericalTpms(radius: float, surface_function: Field, offset: float | Field | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), cell_size: float | Sequence[float] = 1.0, repeat_cell: int | Sequence[int] = 1, center: Vector3DType = (0, 0, 0), orientation: Vector3DType = (0, 0, 0), resolution: int = 20, density: float | None = None)

Bases: Tpms

Class used to generate spherical TPMS geometries (sheet or skeletals parts).

class microgen.shape.tpms.Tpms(surface_function: Field, offset: float | Field | None = None, phase_shift: Sequence[float] = (0.0, 0.0, 0.0), cell_size: float | Sequence[float] = 1.0, repeat_cell: int | Sequence[int] = 1, resolution: int = 20, density: float | None = None, **kwargs: Vector3DType)

Bases: Shape

Triply Periodical Minimal Surfaces.

Class to generate Triply Periodical Minimal Surfaces (TPMS) geometry from a given mathematical function, with given offset

functions available :
generate(type_part: TpmsPartType = 'sheet', smoothing: int = 0, algo_resolution: int | None = None, **_: KwargsGenerateType) cq.Shape

Generate CadQuery Shape object of the required TPMS part.

Parameters:
  • type_part – part of the TPMS desired (‘sheet’, ‘lower skeletal’, ‘upper skeletal’ or ‘surface’)

  • smoothing – smoothing loop iterations

  • verbose – display progressbar of the conversion to CadQuery object

  • algo_resolution – if offset must be computed to fit density, resolution of the temporary TPMS used to compute the offset

Returns:

CadQuery Shape object of the required TPMS part

generateVtk(type_part: TpmsPartType = 'sheet', algo_resolution: int | None = None, **_: KwargsGenerateType) pv.PolyData

Deprecated. Use generate_vtk() instead.

generate_grid_vtk(type_part: TpmsPartType = 'sheet', algo_resolution: int | None = None, **_: KwargsGenerateType) pv.UnstructuredGrid

Generate VTK UnstructuredGrid object of the required TPMS part.

generate_vtk(type_part: TpmsPartType = 'sheet', algo_resolution: int | None = None, **_: KwargsGenerateType) pv.PolyData

Generate VTK PolyData object of the required TPMS part.

Parameters:
  • type_part – part of the TPMS desireds

  • algo_resolution – if offset must be computed to fit density, resolution of the temporary TPMS used to compute the offset

Returns:

VTK PolyData object of the required TPMS part

property grid_lower_skeletal: UnstructuredGrid

Return lower skeletal part.

property grid_sheet: UnstructuredGrid

Return sheet part.

property grid_upper_skeletal: UnstructuredGrid

Return upper skeletal part.

property lower_skeletal: PolyData

Return lower skeletal part.

property offset: float | ndarray[Any, dtype[float64]] | None

Returns the offset value.

classmethod offset_from_density(surface_function: Field, part_type: TpmsPartType, density: float, resolution: int = 20) float

Return the offset corresponding to the required density.

Parameters:
  • surface_function – tpms function

  • part_type – type of the part (sheet, lower skeletal or upper skeletal)

  • density – Required density, 0.5 for 50%

  • resolution – resolution of the tpms used to compute the offset

Returns:

corresponding offset value

property sheet: PolyData

Return sheet part.

property skeletals: tuple[PolyData, PolyData]

Returns both skeletal parts.

property surface: PolyData

Returns isosurface f(x, y, z) = 0.

property upper_skeletal: PolyData

Return upper skeletal part.

TPMS surface functions.

microgen.shape.surface_functions.fischerKochS(x: ndarray, y: ndarray, z: ndarray) ndarray

Fischer-Koch S.

\[cos(2 x) sin(y) cos(z) + cos(x) cos(2 y) sin(z) + sin(x) cos(y) cos(2 z) = 0\]
_images/microgen.shape_16_0.png
microgen.shape.surface_functions.fischer_koch_s(x: ndarray, y: ndarray, z: ndarray) ndarray

Fischer-Koch S.

\[cos(2 x) sin(y) cos(z) + cos(x) cos(2 y) sin(z) + sin(x) cos(y) cos(2 z) = 0\]
_images/microgen.shape_17_0.png
microgen.shape.surface_functions.gyroid(x: ndarray, y: ndarray, z: ndarray) ndarray

Gyroid.

\[sin(x) cos(y) + sin(y) cos(z) + sin(z) cos(x) = 0\]
_images/microgen.shape_18_0.png
microgen.shape.surface_functions.honeycomb(x: ndarray, y: ndarray, z: ndarray) ndarray

Honneycomb.

\[sin(x) cos(y) + sin(y) + cos(z) = 0\]
_images/microgen.shape_19_0.png
microgen.shape.surface_functions.honeycomb_gyroid(x: float, y: float, _: float) float

Honeycomb Gyroid.

\[sin(x) cos(y) + sin(y) + cos(x) = 0\]
_images/microgen.shape_20_0.png
microgen.shape.surface_functions.honeycomb_lidinoid(x: float, y: float, _: float) float

Honeycomb Lidinoid.

\[1.1 (sin(2 x) cos(y) + sin(2 y) sin(x) + cos(x) sin(y)) - (cos(2 x) cos(2 y) + cos(2 y) + cos(2 x)) = 0\]
_images/microgen.shape_21_0.png
microgen.shape.surface_functions.honeycomb_schoenIWP(x: float, y: float, _: float) float

Honneycomb Schoen IWP.

\[cos(x) cos(y) + cos(y) + cos(x) = 0\]
_images/microgen.shape_22_0.png
microgen.shape.surface_functions.honeycomb_schoen_iwp(x: float, y: float, _: float) float

Honneycomb Schoen IWP.

\[cos(x) cos(y) + cos(y) + cos(x) = 0\]
_images/microgen.shape_23_0.png
microgen.shape.surface_functions.honeycomb_schwarzD(x: float, y: float, _: float) float

Honneycomb Schwarz D.

\[cos(x) cos(y) + sin(x) sin(y) + sin(x) cos(y) + cos(x) sin(y) = 0\]
_images/microgen.shape_24_0.png
microgen.shape.surface_functions.honeycomb_schwarzP(x: float, y: float, _: float) float

Honeycomb Schwarz P.

\[cos(x) + cos(y) = 0\]
_images/microgen.shape_25_0.png
microgen.shape.surface_functions.honeycomb_schwarz_d(x: float, y: float, _: float) float

Honneycomb Schwarz D.

\[cos(x) cos(y) + sin(x) sin(y) + sin(x) cos(y) + cos(x) sin(y) = 0\]
_images/microgen.shape_26_0.png
microgen.shape.surface_functions.honeycomb_schwarz_p(x: float, y: float, _: float) float

Honeycomb Schwarz P.

\[cos(x) + cos(y) = 0\]
_images/microgen.shape_27_0.png
microgen.shape.surface_functions.lidinoid(x: ndarray, y: ndarray, z: ndarray) ndarray

Lidinoid.

\[0.5 (sin(2 x) cos(y) sin(z) + sin(2 y) cos(z) sin(x) + sin(2 z) cos(x) sin(y)) - 0.5 (cos(2 x) cos(2 y) + cos(2 y) cos(2 z) + cos(2 z) cos(2 x)) + 0.3 = 0\]
_images/microgen.shape_28_0.png
microgen.shape.surface_functions.neovius(x: ndarray, y: ndarray, z: ndarray) ndarray

Neovius.

\[3 cos(x) + cos(y) + cos(z) + 4 cos(x) cos(y) cos(z) = 0\]
_images/microgen.shape_29_0.png
microgen.shape.surface_functions.pmy(x: ndarray, y: ndarray, z: ndarray) ndarray

PMY.

\[2 cos(x) cos(y) cos(z) + sin(2 x) sin(y) + sin(x) sin(2 z) + sin(2 y) sin(z) = 0\]
_images/microgen.shape_30_0.png
microgen.shape.surface_functions.schoenFRD(x: ndarray, y: ndarray, z: ndarray) ndarray

Schoen FRD.

\[4 cos(x) cos(y) cos(z) - (cos(2 x) cos(2 y) + cos(2 y) cos(2 z) + cos(2 z) cos(2 x)) = 0\]
_images/microgen.shape_31_0.png
microgen.shape.surface_functions.schoenIWP(x: ndarray, y: ndarray, z: ndarray) ndarray

Schoen IWP.

\[2 (cos(x) cos(y) + cos(y) cos(z) + cos(z) cos(x)) - (cos(2 x) + cos(2 y) + cos(2 z)) = 0\]
_images/microgen.shape_32_0.png
microgen.shape.surface_functions.schoen_frd(x: ndarray, y: ndarray, z: ndarray) ndarray

Schoen FRD.

\[4 cos(x) cos(y) cos(z) - (cos(2 x) cos(2 y) + cos(2 y) cos(2 z) + cos(2 z) cos(2 x)) = 0\]
_images/microgen.shape_33_0.png
microgen.shape.surface_functions.schoen_iwp(x: ndarray, y: ndarray, z: ndarray) ndarray

Schoen IWP.

\[2 (cos(x) cos(y) + cos(y) cos(z) + cos(z) cos(x)) - (cos(2 x) + cos(2 y) + cos(2 z)) = 0\]
_images/microgen.shape_34_0.png
microgen.shape.surface_functions.schwarzD(x: ndarray, y: ndarray, z: ndarray) ndarray

Schwarz D.

\[sin(x) sin(y) sin(z) + sin(x) cos(y) cos(z) + cos(x) sin(y) cos(z) + cos(x) cos(y) sin(z) = 0\]
_images/microgen.shape_35_0.png
microgen.shape.surface_functions.schwarzP(x: ndarray, y: ndarray, z: ndarray) ndarray

Schwarz P.

\[cos(x) + cos(y) + cos(z) = 0\]
_images/microgen.shape_36_0.png
microgen.shape.surface_functions.schwarz_d(x: ndarray, y: ndarray, z: ndarray) ndarray

Schwarz D.

\[sin(x) sin(y) sin(z) + sin(x) cos(y) cos(z) + cos(x) sin(y) cos(z) + cos(x) cos(y) sin(z) = 0\]
_images/microgen.shape_37_0.png
microgen.shape.surface_functions.schwarz_p(x: ndarray, y: ndarray, z: ndarray) ndarray

Schwarz P.

\[cos(x) + cos(y) + cos(z) = 0\]
_images/microgen.shape_38_0.png
microgen.shape.surface_functions.split_p(x: ndarray, y: ndarray, z: ndarray) ndarray

Split P.

\[1.1 (sin(2 x) cos(y) sin(z) + sin(2 y) cos(z) sin(x) + sin(2 z) cos(x) sin(y)) - 0.2 (cos(2 x) cos(2 y) + cos(2 y) cos(2 z) + cos(2 z) cos(2 x)) - 0.4 (cos(2 x) + cos(2 y) + cos(2 z)) = 0\]
_images/microgen.shape_39_0.png