BarycentricMapperEdgeSetTopology
sofa::component::mapping::linear::BarycentricMapperEdgeSetTopology
BarycentricMapperTopologyContainer
Doc (from source)
Class allowing barycentric mapping computation on a BaseMeshTopology with edges
Abstract (AI generated)
Facilitates barycentric mapping computations on BaseMeshTopologies with edges, enabling precise point placement along line segments in SOFA simulations.
Metadata
- module
- Sofa.Component.Mapping.Linear
- namespace
- sofa::component::mapping::linear
- include
- sofa/component/mapping/linear/BarycentricMappers/BarycentricMapperEdgeSetTopology.h
- inherits
-
- BarycentricMapperTopologyContainer
- templates
-
- sofa::sofa::defaulttype::Vec3Types, sofa::sofa::defaulttype::Vec3Types
- description
No maths data.
Methods
void
init
(const typename Out::VecCoord & out, const typename In::VecCoord & in)
int
addPointInLine
(const int edgeIndex, const SReal * baryCoords)
int
createPointInLine
(const typename Out::Coord & p, int edgeIndex, const typename In::VecCoord * points)
int
getElements
()
int
getBarycentricCoefficients
(const int & barycentricCoordinates)
void
computeBase
(Mat3x3 & base, const typename In::VecCoord & in, const Edge & element)
void
computeCenter
(Vec3 & center, const typename In::VecCoord & in, const Edge & element)
void
computeDistance
(SReal & d, const Vec3 & v)
void
addPointInElement
(const int elementIndex, const SReal * baryCoords)
{
"name": "BarycentricMapperEdgeSetTopology",
"namespace": "sofa::component::mapping::linear",
"module": "Sofa.Component.Mapping.Linear",
"include": "sofa/component/mapping/linear/BarycentricMappers/BarycentricMapperEdgeSetTopology.h",
"doc": "Class allowing barycentric mapping computation on a BaseMeshTopology with edges",
"inherits": [
"BarycentricMapperTopologyContainer"
],
"templates": [
"sofa::sofa::defaulttype::Vec3Types, sofa::sofa::defaulttype::Vec3Types"
],
"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": "addPointInLine",
"return_type": "int",
"params": [
{
"name": "edgeIndex",
"type": "const int"
},
{
"name": "baryCoords",
"type": "const SReal *"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "createPointInLine",
"return_type": "int",
"params": [
{
"name": "p",
"type": "const typename Out::Coord &"
},
{
"name": "edgeIndex",
"type": "int"
},
{
"name": "points",
"type": "const typename In::VecCoord *"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "getElements",
"return_type": "int",
"params": [],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "getBarycentricCoefficients",
"return_type": "int",
"params": [
{
"name": "barycentricCoordinates",
"type": "const int &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"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 Edge &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"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 Edge &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "computeDistance",
"return_type": "void",
"params": [
{
"name": "d",
"type": "SReal &"
},
{
"name": "v",
"type": "const Vec3 &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "addPointInElement",
"return_type": "void",
"params": [
{
"name": "elementIndex",
"type": "const int"
},
{
"name": "baryCoords",
"type": "const SReal *"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
}
],
"description": "The `BarycentricMapperEdgeSetTopology` is a SOFA component that facilitates barycentric mapping computations on a BaseMeshTopology with edges, specifically designed for linear mappings in the Sofa.Component.Mapping.Linear module. It inherits from `BarycentricMapperTopologyContainer`, indicating it deals with topological data structures and provides methods to manage points within edges of the mesh topology.\n\nThis component interacts with other SOFA components through its initialization method (`init`), which requires input and output coordinates, and by extending methods for adding and creating points within line segments (edges) using barycentric coordinates. The `addPointInLine` and `createPointInLine` methods are crucial for this functionality.\n\nPractical usage involves setting up the component with appropriate topology containers (`fromTopology`, `toTopology`). It supports operations such as adding a point to an edge based on barycentric coordinates, computing the center of an edge, and retrieving elements in the form of edges. However, it's noted that some methods like `computeBase` and `computeDistance` are not implemented for edges.\n\nThis component is particularly useful in simulations requiring precise handling of point placements along edges using linear mappings.",
"math_description": {
"overview": "The `BarycentricMapperEdgeSetTopology` component facilitates barycentric mapping computations for points within the edges of a mesh topology in SOFA. It enables linear mappings by providing methods to manage these points using barycentric coordinates.",
"functions_and_methods": [
{
"name": "`addPointInLine(const Index edgeIndex, const SReal* baryCoords)`",
"description": "Adds a point on an edge defined by `edgeIndex` using the barycentric coordinate `baryCoords`. The barycentric coordinates are stored in a data structure and used to map points within the edge."
},
{
"name": "`createPointInLine(const typename Out::Coord& p, Index edgeIndex, const typename In::VecCoord* points)`",
"description": "Creates a point `p` on an edge defined by `edgeIndex`, where `points` are the coordinates of the vertices of the edge. It computes the barycentric coordinate for `p` and uses it to place the point along the edge."
},
{
"name": "`getElements()`",
"description": "Returns a vector of edges from the mesh topology, each represented as an index pair corresponding to its vertices."
},
{
"name": "`getBarycentricCoefficients(const std::array<Real, MappingData::NumberOfCoordinates>& barycentricCoordinates)`",
"description": "Computes and returns the barycentric coefficients for a given set of coordinates. For an edge with two nodes, this method computes the weights [1 - t, t], where `t` is the barycentric coordinate."
},
{
"name": "`computeCenter(Vec3& center, const typename In::VecCoord& in, const Edge& element)`",
"description": "Computes the center of an edge `element`, which is the midpoint between its two vertices. The coordinates of the vertices are provided by `in`."
}
],
"unimplemented_methods": [
{
"name": "`computeBase(Mat3x3& base, const typename In::VecCoord& in, const Edge& element)`",
"description": "This method is not implemented for edges. It would be used to compute a basis transformation matrix if applicable."
},
{
"name": "`computeDistance(SReal& d, const Vec3& v)`",
"description": "This method is also not implemented for edges and would typically be used to calculate some distance metric or projection."
}
]
},
"abstract": "Facilitates barycentric mapping computations on BaseMeshTopologies with edges, enabling precise point placement along line segments in SOFA simulations.",
"sheet": "# BarycentricMapperEdgeSetTopology\n\n## Overview\nThe `BarycentricMapperEdgeSetTopology` is a component within the Sofa.Component.Mapping.Linear module that handles barycentric mapping computations on BaseMeshTopologies with edges. It inherits from `BarycentricMapperTopologyContainer`, indicating its role in managing points within line segments (edges) using barycentric coordinates.\n\n## Parameters and Data\nThis component does not expose any significant Data fields, as it primarily relies on inherited functionality from the parent class for its operations.\n\n## Dependencies and Connections\nThe `BarycentricMapperEdgeSetTopology` typically requires appropriate topology containers (`fromTopology`, `toTopology`) to be set up. It interacts with other SOFA components through methods such as `init`, which requires input and output coordinates, and extends methods for adding and creating points within line segments using barycentric coordinates.\n\n## Practical Notes\nThis component is particularly useful in simulations requiring precise handling of point placements along edges using linear mappings. Methods like `computeBase` and `computeDistance` are not implemented for edges, so users should be aware that these functionalities are limited."
}