Back

GenerateSphere

This class generates an implicit surface mesh for use in simulations within the Sofa framework.

abstract
Generates spherical tetrahedral and triangular meshes based on input parameters such as radius and origin.
sheet
# GenerateSphere ## Overview GenerateSphere is an engine that generates spherical (Bezier) tetrahedral and triangular meshes. It creates a mesh on the sphere as the tessellation of a regular tetrahedron, octahedron, or dodecahedron. ## Parameters and Data - **f_radius**: Input sphere radius (`Real` type). - **f_origin**: Sphere center point (`Coord` type). - **f_outputTetrahedraPositions**: Output array of 3D points for tetrahedral mesh (`VecCoord` type). - **f_tetrahedra**: Output mesh tetrahedra (`SeqTetrahedra` type). - **f_outputTrianglesPositions**: Output array of 3D points for triangle mesh (`VecCoord` type). - **f_triangles**: Output triangular mesh (`SeqTriangles` type).
title
SofaImplicitSurfaceMeshGenerator
description
This class generates an implicit surface mesh for use in simulations within the Sofa framework.
parameters
  • {'name': 'center', 'type': 'Vec3', 'description': 'The center of the sphere used as a reference point for generating the mesh.'}
  • {'name': 'radius', 'type': 'float', 'description': 'Radius of the sphere that defines the size of the generated mesh.'}
  • {'name': 'scale', 'type': 'Vec3', 'description': 'Scaling factor applied to the generated mesh along each axis.'}
  • {'name': 'resolutionEdge', 'type': 'int', 'description': 'Resolution for edge generation, determining the number of edges in the mesh.'}
  • {'name': 'resolutionTriangle', 'type': 'int', 'description': 'Resolution for triangle generation, controlling the detail level of triangular faces.'}
  • {'name': 'resolutionTetrahedron', 'type': 'int', 'description': 'Resolution for tetrahedron generation, influencing the density and detail of internal tetrahedral elements.'}
outputs
  • {'name': 'positionTriangle', 'type': 'VecCoord', 'description': 'Output positions for triangles generated in the mesh.'}
  • {'name': 'indexTriangle', 'type': 'VecTriangle', 'description': 'Indices defining connectivity of triangle elements in the mesh.'}
  • {'name': 'positionTetrahedron', 'type': 'VecCoord', 'description': 'Positions for tetrahedral elements generated within the mesh.'}
  • {'name': 'indexTetrahedron', 'type': 'VecTetra', 'description': 'Indices defining connectivity of tetrahedral elements in the mesh.'}
functionality_details
  • {'step': 'Mesh Initialization', 'details': 'Initializes triangle and tetrahedral elements with default positions based on specified resolutions and sphere parameters.'}
  • {'step': 'Resolution Handling', 'details': 'Adapts to different resolution levels by generating vertices, edges, triangles, and tetrahedrons accordingly. For higher resolutions, additional points are calculated within the volume of the mesh for finer detail.'}
  • {'step': 'Edge Point Calculation', 'details': 'Calculates positions for edge points using interpolation between adjacent triangle or tetrahedral points based on the given resolution settings.'}
  • {'step': 'Triangle and Tetrahedron Point Calculation', 'details': 'Generates internal points within triangles and tetrahedrons to increase mesh detail. For specific resolutions, specialized calculations are performed to ensure accurate geometry.'}
maths
The provided code generates an implicit surface mesh that can be used in simulations within the Sofa framework. The primary goal is to create a detailed and accurate representation of a geometric structure, which typically could be a sphere or some other complex shape defined by its vertices (points) and faces (triangles/tetrahedra). This process involves several mathematical and computational steps: 1. **Input Parameters**: - `radius`: The radius of the sphere that is being generated. - `origin`: The center point of the sphere in 3D space. - `degree`: The degree of polynomial used to define the implicit surface, which impacts the complexity and smoothness of the mesh. 2. **Mesh Generation**: - The code first generates an initial set of vertices (`posTrian` for triangular meshes and `posTetra` for tetrahedral meshes) that lie on the surface of a sphere centered at `origin` with radius `radius`. - It then adds additional points to create higher-order elements (Bezier curves or surfaces), especially in cases where the degree is greater than 2. 3. **Bezier Curves and Surfaces**: - For higher degrees, it creates Bezier curves along edges (for triangles) or faces (for tetrahedra). These are generated by interpolating positions between existing vertices to create smoother geometry. The weights (`bezierWeights` for triangular and `bezierTetraWeights` for tetrahedral elements) are computed based on specific mathematical formulas, such as binomial coefficients and interpolation rules. 4. **Implicit Surface Representation**: - An implicit surface is defined by a function F(x,y,z)=0 where the zero level set represents the surface of interest. In this context, the generated mesh approximates this implicit surface through a combination of vertices (points) and higher-order elements that ensure continuity and smoothness. 5. **Normalization and Translation**: - After generating these points, they are scaled by `radius` and translated to be centered at `origin`. This ensures that the final mesh is appropriately positioned and sized according to the input parameters. 6. **Mesh Integrity**: - The code also handles special cases such as triangles and tetrahedra within a sphere, ensuring that each face/triangle and volume/tetrahedron maintains its geometric integrity while being part of the larger implicit surface mesh. Overall, this component leverages mathematical concepts like interpolation, Bezier curves/surfaces, and implicit surfaces to generate detailed geometries suitable for simulation purposes in the Sofa framework.
{
  "name": "GenerateSphere",
  "main": {
    "name": "GenerateSphere",
    "namespace": "sofa::component::engine::generate",
    "module": "Sofa.Component.Engine.Generate",
    "include": "sofa/component/engine/generate/GenerateSphere.h",
    "doc": "Engine generating a spherical (Bezier) tetrahedral and triangular mesh.\n\nThis class creates a mesh on the sphere as the tessellation of a regular tetrahedron,\n regular octahedron or regular dodecahedron.\n The mesh can be either a triangulation, a tetrahedal mesh (with the sphere center) or a\n rational Bezier triangulation or tetrahedral mesh.",
    "inherits": [
      "DataEngine"
    ],
    "templates": [
      "sofa::defaulttype::Vec3Types"
    ],
    "data_fields": [
      {
        "name": "f_outputTetrahedraPositions",
        "type": "VecCoord",
        "xmlname": "output_TetrahedraPosition",
        "help": "output array of 3d points of tetrahedra mesh"
      },
      {
        "name": "f_tetrahedra",
        "type": "SeqTetrahedra",
        "xmlname": "tetrahedra",
        "help": "output mesh tetrahedra"
      },
      {
        "name": "f_outputTrianglesPositions",
        "type": "VecCoord",
        "xmlname": "output_TrianglesPosition",
        "help": "output array of 3d points of triangle mesh"
      },
      {
        "name": "f_triangles",
        "type": "SeqTriangles",
        "xmlname": "triangles",
        "help": "output triangular mesh"
      },
      {
        "name": "f_radius",
        "type": "Real",
        "xmlname": "radius",
        "help": "input sphere radius"
      },
      {
        "name": "f_origin",
        "type": "Coord",
        "xmlname": "origin",
        "help": "sphere center point"
      }
    ],
    "links": [],
    "methods": [
      {
        "name": "init",
        "return_type": "void",
        "params": [],
        "is_virtual": true,
        "is_pure_virtual": false,
        "is_static": false,
        "access": "public"
      },
      {
        "name": "reinit",
        "return_type": "void",
        "params": [],
        "is_virtual": true,
        "is_pure_virtual": false,
        "is_static": false,
        "access": "public"
      },
      {
        "name": "doUpdate",
        "return_type": "void",
        "params": [],
        "is_virtual": true,
        "is_pure_virtual": false,
        "is_static": false,
        "access": "public"
      }
    ]
  },
  "desc": {
    "title": "SofaImplicitSurfaceMeshGenerator",
    "description": "This class generates an implicit surface mesh for use in simulations within the Sofa framework.",
    "parameters": [
      {
        "name": "center",
        "type": "Vec3",
        "description": "The center of the sphere used as a reference point for generating the mesh."
      },
      {
        "name": "radius",
        "type": "float",
        "description": "Radius of the sphere that defines the size of the generated mesh."
      },
      {
        "name": "scale",
        "type": "Vec3",
        "description": "Scaling factor applied to the generated mesh along each axis."
      },
      {
        "name": "resolutionEdge",
        "type": "int",
        "description": "Resolution for edge generation, determining the number of edges in the mesh."
      },
      {
        "name": "resolutionTriangle",
        "type": "int",
        "description": "Resolution for triangle generation, controlling the detail level of triangular faces."
      },
      {
        "name": "resolutionTetrahedron",
        "type": "int",
        "description": "Resolution for tetrahedron generation, influencing the density and detail of internal tetrahedral elements."
      }
    ],
    "outputs": [
      {
        "name": "positionTriangle",
        "type": "VecCoord",
        "description": "Output positions for triangles generated in the mesh."
      },
      {
        "name": "indexTriangle",
        "type": "VecTriangle",
        "description": "Indices defining connectivity of triangle elements in the mesh."
      },
      {
        "name": "positionTetrahedron",
        "type": "VecCoord",
        "description": "Positions for tetrahedral elements generated within the mesh."
      },
      {
        "name": "indexTetrahedron",
        "type": "VecTetra",
        "description": "Indices defining connectivity of tetrahedral elements in the mesh."
      }
    ],
    "functionality_details": [
      {
        "step": "Mesh Initialization",
        "details": "Initializes triangle and tetrahedral elements with default positions based on specified resolutions and sphere parameters."
      },
      {
        "step": "Resolution Handling",
        "details": "Adapts to different resolution levels by generating vertices, edges, triangles, and tetrahedrons accordingly. For higher resolutions, additional points are calculated within the volume of the mesh for finer detail."
      },
      {
        "step": "Edge Point Calculation",
        "details": "Calculates positions for edge points using interpolation between adjacent triangle or tetrahedral points based on the given resolution settings."
      },
      {
        "step": "Triangle and Tetrahedron Point Calculation",
        "details": "Generates internal points within triangles and tetrahedrons to increase mesh detail. For specific resolutions, specialized calculations are performed to ensure accurate geometry."
      }
    ]
  },
  "maths": {
    "maths": "The provided code generates an implicit surface mesh that can be used in simulations within the Sofa framework. The primary goal is to create a detailed and accurate representation of a geometric structure, which typically could be a sphere or some other complex shape defined by its vertices (points) and faces (triangles/tetrahedra). This process involves several mathematical and computational steps:\n\n1. **Input Parameters**: \n    - `radius`: The radius of the sphere that is being generated.\n    - `origin`: The center point of the sphere in 3D space.\n    - `degree`: The degree of polynomial used to define the implicit surface, which impacts the complexity and smoothness of the mesh.\n\n2. **Mesh Generation**:\n   - The code first generates an initial set of vertices (`posTrian` for triangular meshes and `posTetra` for tetrahedral meshes) that lie on the surface of a sphere centered at `origin` with radius `radius`. \n    - It then adds additional points to create higher-order elements (Bezier curves or surfaces), especially in cases where the degree is greater than 2.\n\n3. **Bezier Curves and Surfaces**:\n   - For higher degrees, it creates Bezier curves along edges (for triangles) or faces (for tetrahedra). These are generated by interpolating positions between existing vertices to create smoother geometry. The weights (`bezierWeights` for triangular and `bezierTetraWeights` for tetrahedral elements) are computed based on specific mathematical formulas, such as binomial coefficients and interpolation rules.\n\n4. **Implicit Surface Representation**:\n   - An implicit surface is defined by a function F(x,y,z)=0 where the zero level set represents the surface of interest. In this context, the generated mesh approximates this implicit surface through a combination of vertices (points) and higher-order elements that ensure continuity and smoothness.\n\n5. **Normalization and Translation**:\n   - After generating these points, they are scaled by `radius` and translated to be centered at `origin`. This ensures that the final mesh is appropriately positioned and sized according to the input parameters.\n\n6. **Mesh Integrity**:\n   - The code also handles special cases such as triangles and tetrahedra within a sphere, ensuring that each face/triangle and volume/tetrahedron maintains its geometric integrity while being part of the larger implicit surface mesh.\n\nOverall, this component leverages mathematical concepts like interpolation, Bezier curves/surfaces, and implicit surfaces to generate detailed geometries suitable for simulation purposes in the Sofa framework."
  },
  "summary": {
    "abstract": "Generates spherical tetrahedral and triangular meshes based on input parameters such as radius and origin.",
    "sheet": "# GenerateSphere\n\n## Overview\nGenerateSphere is an engine that generates spherical (Bezier) tetrahedral and triangular meshes. It creates a mesh on the sphere as the tessellation of a regular tetrahedron, octahedron, or dodecahedron.\n\n## Parameters and Data\n- **f_radius**: Input sphere radius (`Real` type).\n- **f_origin**: Sphere center point (`Coord` type).\n- **f_outputTetrahedraPositions**: Output array of 3D points for tetrahedral mesh (`VecCoord` type).\n- **f_tetrahedra**: Output mesh tetrahedra (`SeqTetrahedra` type).\n- **f_outputTrianglesPositions**: Output array of 3D points for triangle mesh (`VecCoord` type).\n- **f_triangles**: Output triangular mesh (`SeqTriangles` type)."
  }
}