17 #ifndef NORMVECDECORATOR_H 18 #define NORMVECDECORATOR_H 26 #include "qgis_analysis.h" 49 bool calcNormalForPoint(
double x,
double y,
int point,
Vector3D *result SIP_OUT );
54 bool estimateFirstDerivative(
int pointno );
56 bool estimateFirstDerivatives(
QgsFeedback *feedback =
nullptr );
62 bool getTriangle(
double x,
double y,
QgsPoint &p1 SIP_OUT,
int &ptn1 SIP_OUT,
Vector3D *v1 SIP_OUT,
PointState *state1 SIP_OUT,
QgsPoint &p2 SIP_OUT,
int &ptn2 SIP_OUT,
Vector3D *v2 SIP_OUT,
PointState *state2 SIP_OUT,
QgsPoint &p3 SIP_OUT,
int &ptn3 SIP_OUT,
Vector3D *v3 SIP_OUT,
PointState *state3 SIP_OUT );
68 bool swapEdge(
double x,
double y )
override;
75 static const unsigned int DEFAULT_STORAGE_FOR_NORMALS = 100000;
89 : mNormVec( new QVector<
Vector3D*>( DEFAULT_STORAGE_FOR_NORMALS ) )
90 , mPointState( new QVector<
PointState>( DEFAULT_STORAGE_FOR_NORMALS ) )
116 QgsDebugMsg( QStringLiteral(
"warning, null pointer" ) );
TriangleInterpolator * mInterpolator
Association with an interpolator object.
Decorator class which adds the functionality of estimating normals at the data points.
void setTriangleInterpolator(TriangleInterpolator *interpolator) override
Sets an interpolator object.
Vector3D * getNormal(int n) const
Returns a pointer to the normal vector for the point with the number n.
An interface for objects which accept features via addFeature(s) methods.
bool swapEdge(double x, double y) override
Reads the content of a taff-file.
void eliminateHorizontalTriangles() override
Eliminates the horizontal triangles by swapping.
Base class for feedback objects to be used for cancellation of something running in a worker thread...
Class Vector3D represents a 3D-Vector, capable to store x-,y- and z-coordinates in double values...
virtual bool saveTriangulation(QgsFeatureSink *sink, QgsFeedback *feedback=nullptr) const =0
Saves the triangulation features to a feature sink.
This is an interface for interpolator classes for triangulations.
bool getTriangle(double x, double y, QgsPoint &p1, int &n1, QgsPoint &p2, int &n2, QgsPoint &p3, int &n3) override
Finds out in which triangle the point with coordinates x and y is and assigns the numbers of the vert...
QVector< Vector3D * > * mNormVec
Vector that stores the normals for the points. If 'estimateFirstDerivatives()' was called and there i...
bool calcNormal(double x, double y, Vector3D *result) override
Calculates the normal at a point on the surface and assigns it to 'result'.
static const unsigned int DEFAULT_STORAGE_FOR_NORMALS
Interface for Triangulation classes.
void setTriangleInterpolator(TriangleInterpolator *inter) override
Sets an interpolator.
Point geometry type, with support for z-dimension and m-values.
QVector< PointState > * mPointState
Vector who stores, it a point is not on a breakline, if it is a normal point of the breakline or if i...
PointState
Enumeration for the state of a point. Normal means, that the point is not on a BreakLine, BreakLine means that the point is on a breakline (but not an end point of it) and EndPoint means, that it is an endpoint of a breakline.
Decorator class for Triangulations (s.
bool alreadyestimated
Is true, if the normals already have been estimated.
int addPoint(const QgsPoint &p) override
Adds a point to the triangulation.
bool calcPoint(double x, double y, QgsPoint &result) override
Calculates x-, y and z-value of the point on the surface and assigns it to 'result'.