BarycentricMapperTopologyContainer
The `BarycentricMapperTopologyContainer` is a template class in the SOFA framework that extends `TopologyBarycentricMapper`. It facilitates the mapping between different topology containers, allowing for multi-resolution or reduced models to coexist with collision or visualization meshes. The component supports various geometric elements such as edges, triangles, quads, tetrahedrons, and hexahedrons. This mapper is designed to handle barycentric coordinate mappings, which are useful in scenarios where the topology of one mesh needs to be mapped onto another based on proximity and interpolation within elements. The `BarycentricMapperTopologyContainer` interacts with other SOFA components through methods like `init`, `apply`, `draw`, `resize`, and others that define how it processes input coordinates (`in`) and applies transformations or mappings to output coordinates (`out`). These methods ensure the mapper can initialize data, apply barycentric mapping calculations, draw visualization elements, resize according to model changes, and compute Jacobian matrices for linear algebra operations. The component is intended for use in simulations where multi-resolution models are needed. The user should be aware of the geometric types supported (edges, triangles, quads, tetrahedrons, hexahedrons) and ensure that the input coordinates (`in`) and output coordinates (`out`) are correctly managed. It can be used in conjunction with other SOFA components for more complex simulations, such as surgical or soft tissue modeling.
- abstract
- The `BarycentricMapperTopologyContainer` facilitates the mapping between different topology containers using barycentric coordinates for multi-resolution or reduced models in SOFA simulations.
- sheet
- # BarycentricMapperTopologyContainer ## Overview The `BarycentricMapperTopologyContainer` is a template class that extends `TopologyBarycentricMapper`. It handles the mapping between different topology containers using barycentric coordinates, supporting various geometric elements such as edges, triangles, quads, tetrahedrons, and hexahedrons. This component is crucial for multi-resolution or reduced models in SOFA simulations. ## Dependencies and Connections This component typically requires other SOFA components that provide the input topology containers (`in`) and output coordinates (`out`). It interacts with these components through methods like `init`, `apply`, `draw`, and `resize` to manage the mapping process. The barycentric coordinate mappings ensure that the topology of one mesh can be accurately mapped onto another based on proximity and interpolation within elements.
- description
- The `BarycentricMapperTopologyContainer` is a template class in the SOFA framework that extends `TopologyBarycentricMapper`. It facilitates the mapping between different topology containers, allowing for multi-resolution or reduced models to coexist with collision or visualization meshes. The component supports various geometric elements such as edges, triangles, quads, tetrahedrons, and hexahedrons. This mapper is designed to handle barycentric coordinate mappings, which are useful in scenarios where the topology of one mesh needs to be mapped onto another based on proximity and interpolation within elements. The `BarycentricMapperTopologyContainer` interacts with other SOFA components through methods like `init`, `apply`, `draw`, `resize`, and others that define how it processes input coordinates (`in`) and applies transformations or mappings to output coordinates (`out`). These methods ensure the mapper can initialize data, apply barycentric mapping calculations, draw visualization elements, resize according to model changes, and compute Jacobian matrices for linear algebra operations. The component is intended for use in simulations where multi-resolution models are needed. The user should be aware of the geometric types supported (edges, triangles, quads, tetrahedrons, hexahedrons) and ensure that the input coordinates (`in`) and output coordinates (`out`) are correctly managed. It can be used in conjunction with other SOFA components for more complex simulations, such as surgical or soft tissue modeling.
- # Detailed Mathematical and Physical Description of BarycentricMapperTopologyContainer
- The `BarycentricMapperTopologyContainer` is a specialized mapping component within the SOFA (Simulation Open Framework Architecture) framework, designed to facilitate the transformation between different topological structures in simulations involving multi-resolution models or reduced order modeling. This mapper focuses on barycentric coordinate mappings, which are central for interpolation and proximity-based transformations within geometric elements.
{
"name": "BarycentricMapperTopologyContainer",
"main": {
"name": "BarycentricMapperTopologyContainer",
"namespace": "sofa::component::mapping::linear::_barycentricmappertopologycontainer_",
"module": "Sofa.Component.Mapping.Linear",
"include": "sofa/component/mapping/linear/BarycentricMappers/BarycentricMapperTopologyContainer.h",
"doc": "Template class for topology container mappers",
"inherits": [
"TopologyBarycentricMapper"
],
"templates": [
"sofa::defaulttype::Vec3Types, sofa::defaulttype::Vec3Types, typename BarycentricMapper<Vec3Types, Vec3Types>::MappingData1D, Edge",
"sofa::defaulttype::Vec3Types, sofa::defaulttype::Vec3Types, typename BarycentricMapper<Vec3Types, Vec3Types>::MappingData2D, Quad",
"sofa::defaulttype::Vec3Types, sofa::defaulttype::Vec3Types, typename BarycentricMapper<Vec3Types, Vec3Types>::MappingData2D, Triangle",
"sofa::defaulttype::Vec3Types, sofa::defaulttype::Vec3Types, typename BarycentricMapper<Vec3Types, Vec3Types>::MappingData3D, Hexahedron",
"sofa::defaulttype::Vec3Types, sofa::defaulttype::Vec3Types, typename BarycentricMapper<Vec3Types, Vec3Types>::MappingData3D, Tetrahedron"
],
"data_fields": [],
"links": [],
"methods": [
{
"name": "init",
"return_type": "void",
"params": [
{
"name": "out",
"type": "const typename Out::VecCoord &"
},
{
"name": "in",
"type": "const typename In::VecCoord &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "draw",
"return_type": "void",
"params": [
{
"name": "",
"type": "const core::visual::VisualParams *"
},
{
"name": "out",
"type": "const typename Out::VecCoord &"
},
{
"name": "in",
"type": "const typename In::VecCoord &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "clear",
"return_type": "void",
"params": [
{
"name": "size",
"type": "int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "resize",
"return_type": "void",
"params": [
{
"name": "toModel",
"type": "core::State<Out> *"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "apply",
"return_type": "void",
"params": [
{
"name": "out",
"type": "typename Out::VecCoord &"
},
{
"name": "in",
"type": "const typename In::VecCoord &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "applyJ",
"return_type": "void",
"params": [
{
"name": "out",
"type": "typename Out::VecDeriv &"
},
{
"name": "in",
"type": "const typename In::VecDeriv &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "applyJT",
"return_type": "void",
"params": [
{
"name": "out",
"type": "typename In::VecDeriv &"
},
{
"name": "in",
"type": "const typename Out::VecDeriv &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "applyJT",
"return_type": "void",
"params": [
{
"name": "out",
"type": "typename In::MatrixDeriv &"
},
{
"name": "in",
"type": "const typename Out::MatrixDeriv &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "getJ",
"return_type": "const sofa::linearalgebra::BaseMatrix *",
"params": [
{
"name": "outSize",
"type": "int"
},
{
"name": "inSize",
"type": "int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "isEmpty",
"return_type": "bool",
"params": [],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "getElements",
"return_type": "int",
"params": [],
"is_virtual": true,
"is_pure_virtual": true,
"is_static": false,
"access": "protected"
},
{
"name": "getBarycentricCoefficients",
"return_type": "int",
"params": [
{
"name": "barycentricCoordinates",
"type": "const int &"
}
],
"is_virtual": true,
"is_pure_virtual": true,
"is_static": false,
"access": "protected"
},
{
"name": "computeBase",
"return_type": "void",
"params": [
{
"name": "base",
"type": "Mat3x3 &"
},
{
"name": "in",
"type": "const typename In::VecCoord &"
},
{
"name": "element",
"type": "const Element &"
}
],
"is_virtual": true,
"is_pure_virtual": true,
"is_static": false,
"access": "protected"
},
{
"name": "computeCenter",
"return_type": "void",
"params": [
{
"name": "center",
"type": "Vec3 &"
},
{
"name": "in",
"type": "const typename In::VecCoord &"
},
{
"name": "element",
"type": "const Element &"
}
],
"is_virtual": true,
"is_pure_virtual": true,
"is_static": false,
"access": "protected"
},
{
"name": "addPointInElement",
"return_type": "void",
"params": [
{
"name": "elementIndex",
"type": "const int"
},
{
"name": "baryCoords",
"type": "const SReal *"
}
],
"is_virtual": true,
"is_pure_virtual": true,
"is_static": false,
"access": "protected"
},
{
"name": "computeDistance",
"return_type": "void",
"params": [
{
"name": "d",
"type": "SReal &"
},
{
"name": "v",
"type": "const Vec3 &"
}
],
"is_virtual": true,
"is_pure_virtual": true,
"is_static": false,
"access": "protected"
},
{
"name": "checkDistanceFromElement",
"return_type": "void",
"params": [
{
"name": "e",
"type": "unsigned int"
},
{
"name": "outPos",
"type": "const Vec3 &"
},
{
"name": "inPos",
"type": "const Vec3 &"
},
{
"name": "nearestParams",
"type": "NearestParams &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "computeBasesAndCenters",
"return_type": "void",
"params": [
{
"name": "in",
"type": "const typename In::VecCoord &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "getGridIndices",
"return_type": "type::Vec3i",
"params": [
{
"name": "pos",
"type": "const Vec3 &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "initHashing",
"return_type": "void",
"params": [
{
"name": "in",
"type": "const typename In::VecCoord &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "computeHashingCellSize",
"return_type": "void",
"params": [
{
"name": "in",
"type": "const typename In::VecCoord &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "computeHashTable",
"return_type": "void",
"params": [
{
"name": "in",
"type": "const typename In::VecCoord &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
}
]
},
"desc": {
"description": "The `BarycentricMapperTopologyContainer` is a template class in the SOFA framework that extends `TopologyBarycentricMapper`. It facilitates the mapping between different topology containers, allowing for multi-resolution or reduced models to coexist with collision or visualization meshes. The component supports various geometric elements such as edges, triangles, quads, tetrahedrons, and hexahedrons. This mapper is designed to handle barycentric coordinate mappings, which are useful in scenarios where the topology of one mesh needs to be mapped onto another based on proximity and interpolation within elements.\n\nThe `BarycentricMapperTopologyContainer` interacts with other SOFA components through methods like `init`, `apply`, `draw`, `resize`, and others that define how it processes input coordinates (`in`) and applies transformations or mappings to output coordinates (`out`). These methods ensure the mapper can initialize data, apply barycentric mapping calculations, draw visualization elements, resize according to model changes, and compute Jacobian matrices for linear algebra operations.\n\nThe component is intended for use in simulations where multi-resolution models are needed. The user should be aware of the geometric types supported (edges, triangles, quads, tetrahedrons, hexahedrons) and ensure that the input coordinates (`in`) and output coordinates (`out`) are correctly managed. It can be used in conjunction with other SOFA components for more complex simulations, such as surgical or soft tissue modeling."
},
"maths": {
"# Detailed Mathematical and Physical Description of BarycentricMapperTopologyContainer": "The `BarycentricMapperTopologyContainer` is a specialized mapping component within the SOFA (Simulation Open Framework Architecture) framework, designed to facilitate the transformation between different topological structures in simulations involving multi-resolution models or reduced order modeling. This mapper focuses on barycentric coordinate mappings, which are central for interpolation and proximity-based transformations within geometric elements."
},
"summary": {
"abstract": "The `BarycentricMapperTopologyContainer` facilitates the mapping between different topology containers using barycentric coordinates for multi-resolution or reduced models in SOFA simulations.",
"sheet": "# BarycentricMapperTopologyContainer\n\n## Overview\nThe `BarycentricMapperTopologyContainer` is a template class that extends `TopologyBarycentricMapper`. It handles the mapping between different topology containers using barycentric coordinates, supporting various geometric elements such as edges, triangles, quads, tetrahedrons, and hexahedrons. This component is crucial for multi-resolution or reduced models in SOFA simulations.\n\n## Dependencies and Connections\nThis component typically requires other SOFA components that provide the input topology containers (`in`) and output coordinates (`out`). It interacts with these components through methods like `init`, `apply`, `draw`, and `resize` to manage the mapping process. The barycentric coordinate mappings ensure that the topology of one mesh can be accurately mapped onto another based on proximity and interpolation within elements."
}
}