BarycentricMapperTopologyContainer
sofa::component::mapping::linear::_barycentricmappertopologycontainer_::BarycentricMapperTopologyContainer
TopologyBarycentricMapper
Doc (from source)
Template class for topology container mappers
Abstract (AI generated)
The `BarycentricMapperTopologyContainer` facilitates the mapping between different topology containers using barycentric coordinates for multi-resolution or reduced models in SOFA simulations.
Metadata
- module
- Sofa.Component.Mapping.Linear
- namespace
- sofa::component::mapping::linear::_barycentricmappertopologycontainer_
- include
- sofa/component/mapping/linear/BarycentricMappers/BarycentricMapperTopologyContainer.h
- 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
- description
No maths data.
Methods
void
init
(const typename Out::VecCoord & out, const typename In::VecCoord & in)
void
draw
(const core::visual::VisualParams * , const typename Out::VecCoord & out, const typename In::VecCoord & in)
void
clear
(int size)
void
resize
(core::State<Out> * toModel)
void
apply
(typename Out::VecCoord & out, const typename In::VecCoord & in)
void
applyJ
(typename Out::VecDeriv & out, const typename In::VecDeriv & in)
void
applyJT
(typename In::VecDeriv & out, const typename Out::VecDeriv & in)
void
applyJT
(typename In::MatrixDeriv & out, const typename Out::MatrixDeriv & in)
const sofa::linearalgebra::BaseMatrix *
getJ
(int outSize, int inSize)
bool
isEmpty
()
int
getElements
()
virtual
int
getBarycentricCoefficients
(const int & barycentricCoordinates)
virtual
void
computeBase
(Mat3x3 & base, const typename In::VecCoord & in, const Element & element)
virtual
void
computeCenter
(Vec3 & center, const typename In::VecCoord & in, const Element & element)
virtual
void
addPointInElement
(const int elementIndex, const SReal * baryCoords)
virtual
void
computeDistance
(SReal & d, const Vec3 & v)
virtual
void
checkDistanceFromElement
(unsigned int e, const Vec3 & outPos, const Vec3 & inPos, NearestParams & nearestParams)
void
computeBasesAndCenters
(const typename In::VecCoord & in)
type::Vec3i
getGridIndices
(const Vec3 & pos)
void
initHashing
(const typename In::VecCoord & in)
void
computeHashingCellSize
(const typename In::VecCoord & in)
void
computeHashTable
(const typename In::VecCoord & in)
{
"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"
}
],
"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.",
"# 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.",
"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."
}