Edge normal to surface, connecting a node on solid surface (_nodes[0]) and a node of the most internal layer (_nodes.back()) More...
Public Types | |
| enum | { FUN_LAPLACIAN , FUN_LENWEIGHTED , FUN_CENTROIDAL , FUN_NEFPOLY , FUN_ANGULAR , FUN_NB } |
| typedef gp_XYZ(_LayerEdge::* | PSmooFun) () |
Public Member Functions | |
| void | ChooseSmooFunction (const set< TGeomID > &concaveVertices, const TNode2Edge &n2eMap) |
| Chooses a smoothing technic giving a position most close to an initial one. For a correct result, _simplices must contain nodes lying on geometry. More... | |
| gp_XYZ | Copy (_LayerEdge &other, _EdgesOnShape &eos, SMESH_MesherHelper &helper) |
| Copy data from a _LayerEdge of other SOLID and based on the same node; this and other _LayerEdge's are inflated along a FACE or an EDGE. More... | |
| bool | FindIntersection (SMESH_ElementSearcher &searcher, double &distance, const double &epsilon, _EdgesOnShape &eos, const SMDS_MeshElement **face=0) |
| Looks for intersection of it's last segment with faces. More... | |
| void | InvalidateStep (int curStep, const _EdgesOnShape &eos, bool restoreLength=false) |
| Remove last inflation step. More... | |
| bool | IsOnEdge () const |
| gp_Ax1 | LastSegment (double &segLen, _EdgesOnShape &eos) const |
| Returns size and direction of the last segment. More... | |
| gp_XY | LastUV (const TopoDS_Face &F, _EdgesOnShape &eos) const |
| Return the last position of the target node on a FACE. More... | |
| int | NbSteps () const |
| bool | SegTriaInter (const gp_Ax1 &lastSegment, const SMDS_MeshNode *n0, const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, double &dist, const double &epsilon) const |
| Test intersection of the last segment with a given triangle using Moller-Trumbore algorithm Intersection is detected if distance to intersection is less than _LayerEdge._len. More... | |
| void | SetCosin (double cosin) |
| Set _cosin and _lenFactor. More... | |
| void | SetDataByNeighbors (const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const _EdgesOnShape &eos, SMESH_MesherHelper &helper) |
| Set _curvature and _2neibors->_plnNorm by 2 neigbor nodes residing the same EDGE. More... | |
| void | SetNewLength (double len, _EdgesOnShape &eos, SMESH_MesherHelper &helper) |
| Add a new segment to _LayerEdge during inflation. More... | |
| bool | SetNewLength2d (Handle(Geom_Surface)&surface, const TopoDS_Face &F, _EdgesOnShape &eos, SMESH_MesherHelper &helper) |
| Move target node to it's final position on the FACE during shrinking. More... | |
| int | smooFunID (PSmooFun fun=0) const |
| Returns a name of _SmooFunction. More... | |
| int | Smooth (const int step, const bool isConcaveFace, const bool findBest) |
| Perform laplacian smooth in 3D of nodes inflated from FACE. More... | |
| gp_XYZ | smoothAngular () |
| Computes a new node position using angular-based smoothing. More... | |
| gp_XYZ | smoothCentroidal () |
| Computes a new node position using angular-based smoothing. More... | |
| gp_XYZ | smoothLaplacian () |
| Computes a new node position using Laplacian smoothing. More... | |
| gp_XYZ | smoothLengthWeighted () |
| Computes a new node position using weigthed node positions. More... | |
| gp_XYZ | smoothNefPolygon () |
| Computes a new node position located inside a Nef polygon. More... | |
| bool | SmoothOnEdge (Handle(Geom_Surface)&surface, const TopoDS_Face &F, SMESH_MesherHelper &helper) |
| Perform smooth of _LayerEdge's based on EDGE's. More... | |
Static Public Attributes | |
| static const int | theNbSmooFuns = FUN_NB |
Edge normal to surface, connecting a node on solid surface (_nodes[0]) and a node of the most internal layer (_nodes.back())
| typedef gp_XYZ(_LayerEdge::* VISCOUS_3D::_LayerEdge::PSmooFun) () |
| anonymous enum |
| void _LayerEdge::ChooseSmooFunction | ( | const set< TGeomID > & | concaveVertices, |
| const TNode2Edge & | n2eMap | ||
| ) |
Chooses a smoothing technic giving a position most close to an initial one. For a correct result, _simplices must contain nodes lying on geometry.
References DraftVecUtils::dist(), FUN_CENTROIDAL, FUN_LAPLACIAN, FUN_NEFPOLY, and theNbSmooFuns.
Referenced by VISCOUS_3D::_SolidData::PrepareEdgesToSmoothOnFace().
| gp_XYZ _LayerEdge::Copy | ( | _LayerEdge & | other, |
| _EdgesOnShape & | eos, | ||
| SMESH_MesherHelper & | helper | ||
| ) |
Copy data from a _LayerEdge of other SOLID and based on the same node; this and other _LayerEdge's are inflated along a FACE or an EDGE.
References SMESH_MesherHelper::GetNodeU(), SMESH_MesherHelper::GetNodeUV(), and VISCOUS_3D::_EdgesOnShape::SWOLType().
| bool _LayerEdge::FindIntersection | ( | SMESH_ElementSearcher & | searcher, |
| double & | distance, | ||
| const double & | epsilon, | ||
| _EdgesOnShape & | eos, | ||
| const SMDS_MeshElement ** | face = 0 |
||
| ) |
Looks for intersection of it's last segment with faces.
| distance | - returns shortest distance from the last node to intersection |
References DraftVecUtils::dist(), draftutils.utils::epsilon(), SMESH_ElementSearcher::GetElementsNearLine(), LastSegment(), SMDS_MeshElement::NbCornerNodes(), and SegTriaInter().
| void _LayerEdge::InvalidateStep | ( | int | curStep, |
| const _EdgesOnShape & | eos, | ||
| bool | restoreLength = false |
||
| ) |
Remove last inflation step.
References VISCOUS_3D::_EdgesOnShape::SWOLType().
| bool VISCOUS_3D::_LayerEdge::IsOnEdge | ( | ) | const |
Referenced by SmoothOnEdge().
| gp_Ax1 _LayerEdge::LastSegment | ( | double & | segLen, |
| _EdgesOnShape & | eos | ||
| ) | const |
Returns size and direction of the last segment.
References VISCOUS_3D::_EdgesOnShape::SWOLType().
Referenced by FindIntersection().
| gp_XY _LayerEdge::LastUV | ( | const TopoDS_Face & | F, |
| _EdgesOnShape & | eos | ||
| ) | const |
Return the last position of the target node on a FACE.
| [in] | F | - the FACE this _LayerEdge is inflated along |
References VISCOUS_3D::_EdgesOnShape::SWOLType().
| int VISCOUS_3D::_LayerEdge::NbSteps | ( | ) | const |
| bool _LayerEdge::SegTriaInter | ( | const gp_Ax1 & | lastSegment, |
| const SMDS_MeshNode * | n0, | ||
| const SMDS_MeshNode * | n1, | ||
| const SMDS_MeshNode * | n2, | ||
| double & | dist, | ||
| const double & | epsilon | ||
| ) | const |
Test intersection of the last segment with a given triangle using Moller-Trumbore algorithm Intersection is detected if distance to intersection is less than _LayerEdge._len.
Referenced by FindIntersection().
| void _LayerEdge::SetCosin | ( | double | cosin | ) |
Set _cosin and _lenFactor.
| void _LayerEdge::SetDataByNeighbors | ( | const SMDS_MeshNode * | n1, |
| const SMDS_MeshNode * | n2, | ||
| const _EdgesOnShape & | eos, | ||
| SMESH_MesherHelper & | helper | ||
| ) |
Set _curvature and _2neibors->_plnNorm by 2 neigbor nodes residing the same EDGE.
References VISCOUS_3D::getEdgeDir(), VISCOUS_3D::_Curvature::New(), and VISCOUS_3D::_EdgesOnShape::ShapeType().
| void _LayerEdge::SetNewLength | ( | double | len, |
| _EdgesOnShape & | eos, | ||
| SMESH_MesherHelper & | helper | ||
| ) |
Add a new segment to _LayerEdge during inflation.
References SMESH_MesherHelper::CheckNodeU(), SMESH_MesherHelper::CheckNodeUV(), VISCOUS_3D::_EdgesOnShape::GetNormal(), and VISCOUS_3D::_EdgesOnShape::SWOLType().
| bool _LayerEdge::SetNewLength2d | ( | Handle(Geom_Surface)& | surface, |
| const TopoDS_Face & | F, | ||
| _EdgesOnShape & | eos, | ||
| SMESH_MesherHelper & | helper | ||
| ) |
Move target node to it's final position on the FACE during shrinking.
References SMESH_MesherHelper::GetNodeU(), SMESH_MesherHelper::GetNodeUV(), SMDS_MeshNode::GetPosition(), SMDS_EdgePosition::GetUParameter(), VISCOUS_3D::LEN_TGT, SMDS_EdgePosition::SetUParameter(), SMDS_MeshNode::setXYZ(), VISCOUS_3D::_EdgesOnShape::SWOLType(), VISCOUS_3D::U_SRC, and VISCOUS_3D::U_TGT.
| int _LayerEdge::smooFunID | ( | _LayerEdge::PSmooFun | fun = 0 | ) | const |
Perform laplacian smooth in 3D of nodes inflated from FACE.
| bool | - true if _tgtNode has been moved |
References VISCOUS_3D::_Curvature::lenDelta(), SMDS_MeshNode::setXYZ(), smooFunID(), and theNbSmooFuns.
| gp_XYZ _LayerEdge::smoothAngular | ( | ) |
Computes a new node position using angular-based smoothing.
| gp_XYZ _LayerEdge::smoothCentroidal | ( | ) |
Computes a new node position using angular-based smoothing.
| gp_XYZ _LayerEdge::smoothLaplacian | ( | ) |
Computes a new node position using Laplacian smoothing.
| gp_XYZ _LayerEdge::smoothLengthWeighted | ( | ) |
Computes a new node position using weigthed node positions.
| gp_XYZ _LayerEdge::smoothNefPolygon | ( | ) |
Computes a new node position located inside a Nef polygon.
References draftguitools.gui_annotationstyleeditor::param, and SMESH_MesherHelper::WrapIndex().
| bool _LayerEdge::SmoothOnEdge | ( | Handle(Geom_Surface)& | surface, |
| const TopoDS_Face & | F, | ||
| SMESH_MesherHelper & | helper | ||
| ) |
Perform smooth of _LayerEdge's based on EDGE's.
| bool | - true if node has been moved |
References SMESH_MesherHelper::CheckNodeUV(), SMESH_TNodeXYZ::Distance(), IsOnEdge(), VISCOUS_3D::_Curvature::lenDeltaByDist(), SMDS_MeshNode::setXYZ(), and VISCOUS_3D::_2NearEdges::tgtNode().
Referenced by ChooseSmooFunction(), smooFunID(), and Smooth().