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().