KASKADE 7 development version
Public Types | Public Member Functions | List of all members
Kaskade::AngleFeatureDetector< Index, ctype, dim > Class Template Reference

Specifying geometric features in terms of angles between face normals and edge tangents. More...

#include <boundaryInterpolation.hh>

Detailed Description

template<class Index, class ctype, int dim>
class Kaskade::AngleFeatureDetector< Index, ctype, dim >

Specifying geometric features in terms of angles between face normals and edge tangents.

Definition at line 408 of file boundaryInterpolation.hh.

Inheritance diagram for Kaskade::AngleFeatureDetector< Index, ctype, dim >:
Kaskade::GeometricFeatureDetector< Index, ctype, dim >

Public Types

using Vector = Simplex::Vector< ctype, dim >
 

Public Member Functions

 AngleFeatureDetector (ctype featureCurveAngle=1.0, ctype featureEdgeAngle=0.5)
 Constructor. More...
 
virtual ~AngleFeatureDetector ()
 
virtual bool isFeatureVertex (Index vidx, Vector const &t1, Vector const &t2, int bsid1, int bsid2) const
 Decides whether two boundary edges emanating from a joint vertex of a 2D domain are part of a smooth boundary curve or not. More...
 
virtual bool isFeatureEdge (Index vidx, Vector const &n1, Vector const &n2, int bsid1, int bsid2) const
 Decides whether a boundary edge of a 3D domain is part of a smooth boundary patch or not. More...
 
virtual bool isFeatureCurve (Index vidx, Vector const &t1, Vector const &t2) const
 Decides whether two feature boundary edges of a 3D domain meeting in a joint vertex are part of a smooth boundary curve or not. More...
 
virtual Vector vertexNormal (Index vidx, Vector const &n) const
 Provides a surface normal at non-feature vertices (where no feature edge passes through). More...
 

Member Typedef Documentation

◆ Vector

template<class Index , class ctype , int dim>
using Kaskade::AngleFeatureDetector< Index, ctype, dim >::Vector = Simplex::Vector<ctype,dim>

Definition at line 411 of file boundaryInterpolation.hh.

Constructor & Destructor Documentation

◆ AngleFeatureDetector()

template<class Index , class ctype , int dim>
Kaskade::AngleFeatureDetector< Index, ctype, dim >::AngleFeatureDetector ( ctype  featureCurveAngle = 1.0,
ctype  featureEdgeAngle = 0.5 
)

Constructor.

Parameters
featureCurveAnglethe angle (in radians) between two edges (feature edges in 3D, boundary edges in 2D) that determines whether they form a differentiable feature curve. Defaults to roughly 57°.
featureEdgeAnglethe angle (in radians) between adjacent facets' normals that determines whether they share a feature edge or a normal ( \( G^1 \) continuous) edge. Defaults to roughly 29°. This is only of effect in 3D grids.

◆ ~AngleFeatureDetector()

template<class Index , class ctype , int dim>
virtual Kaskade::AngleFeatureDetector< Index, ctype, dim >::~AngleFeatureDetector ( )
inlinevirtual

Definition at line 424 of file boundaryInterpolation.hh.

Member Function Documentation

◆ isFeatureCurve()

template<class Index , class ctype , int dim>
virtual bool Kaskade::AngleFeatureDetector< Index, ctype, dim >::isFeatureCurve ( Index  vidx,
Vector const &  t1,
Vector const &  t2 
) const
virtual

Decides whether two feature boundary edges of a 3D domain meeting in a joint vertex are part of a smooth boundary curve or not.

This method is called only when 3D domains are processed.

Parameters
thevertex index in the level 0 coarse grid view
t1tangent vector of first edge
t2tangent vector of second edge

The tangent vectors are normalized and point away from the vertex. Thus, t1+t2==0 means they form a straight line.

Implements Kaskade::GeometricFeatureDetector< Index, ctype, dim >.

◆ isFeatureEdge()

template<class Index , class ctype , int dim>
virtual bool Kaskade::AngleFeatureDetector< Index, ctype, dim >::isFeatureEdge ( Index  vidx,
Vector const &  n1,
Vector const &  n2,
int  bsid1,
int  bsid2 
) const
virtual

Decides whether a boundary edge of a 3D domain is part of a smooth boundary patch or not.

More precisely, it determines whether an edge-vertex incidence is a feature "edge". Edges can be specified as being smooth at one of its vertices and shart on the other.

This method is called only when 3D domains are processed.

Parameters
vidxthe vertex index in the level 0 coarse grid view
n1the outer normal vector of the face on one side of the edge, evaluated at the vertex
n2the outer normal vector of the face on the other side of the edge, evaluated at the vertex
bsid1the boundary segment index of the first face
bsid2the boundary segment index of the second face

Implements Kaskade::GeometricFeatureDetector< Index, ctype, dim >.

◆ isFeatureVertex()

template<class Index , class ctype , int dim>
virtual bool Kaskade::AngleFeatureDetector< Index, ctype, dim >::isFeatureVertex ( Index  vidx,
Vector const &  t1,
Vector const &  t2,
int  bsid1,
int  bsid2 
) const
virtual

Decides whether two boundary edges emanating from a joint vertex of a 2D domain are part of a smooth boundary curve or not.

This method is called only when 2D domains are processed.

Parameters
vidxthe vertex index in the level 0 coarse grid view
t1tangent vector of first edge
t2tangent vector of second edge
bsid1the boundary segment index of the first edge
bsid2the boundary segment index of the second edge

The tangent vectors are normalized and point away from the vertex. Thus, t1+t2==0 means they form a straight line.

Implements Kaskade::GeometricFeatureDetector< Index, ctype, dim >.

◆ vertexNormal()

template<class Index , class ctype , int dim>
virtual Vector Kaskade::GeometricFeatureDetector< Index, ctype, dim >::vertexNormal ( Index  vidx,
Vector const &  n 
) const
inlinevirtualinherited

Provides a surface normal at non-feature vertices (where no feature edge passes through).

Parameters
vidxthe vertex index
na suggested normal, usually an average of incident face normals
Returns
the actual normal \( n_a \) to use. It holds \( n_a^T n > 0 \) and \( \|n_a\| > 0 \).

The default implementation just passes the suggested normal on.

Definition at line 396 of file boundaryInterpolation.hh.


The documentation for this class was generated from the following file: