QGIS API Documentation  2.99.0-Master (08ee180)
Functions
MathUtils Namespace Reference

Functions

double ANALYSIS_EXPORT angle (Point3D *p1, Point3D *p2, Point3D *p3, Point3D *p4)
 Calculates the angle between two segments (in 2 dimension, z-values are ignored) More...
 
bool ANALYSIS_EXPORT BarycentricToXY (double u, double v, double w, Point3D *p1, Point3D *p2, Point3D *p3, Point3D *result)
 
bool ANALYSIS_EXPORT calcBarycentricCoordinates (double x, double y, Point3D *p1, Point3D *p2, Point3D *p3, Point3D *result)
 Calculates the barycentric coordinates of a point (x,y) with respect to p1, p2, p3 and stores the three barycentric coordinates in 'result'. Thus the u-coordinate is stored in result::x, the v-coordinate in result::y and the w-coordinate in result::z. Attention: p1, p2 and p3 have to be ordered counterclockwise. More...
 
double ANALYSIS_EXPORT calcBernsteinPoly (int n, int i, double t)
 Calculates the value of a Bernstein polynomial. More...
 
double ANALYSIS_EXPORT calcCubicHermitePoly (int n, int i, double t)
 Calculates the value of a cubic Hermite polynomial. More...
 
double ANALYSIS_EXPORT cFDerBernsteinPoly (int n, int i, double t)
 Calculates the first derivative of a Bernstein polynomial with respect to the parameter t. More...
 
double ANALYSIS_EXPORT cFDerCubicHermitePoly (int n, int i, double t)
 Calculates the first derivative of a cubic Hermite polynomial with respect to the parameter t. More...
 
bool ANALYSIS_EXPORT circumcenter (Point3D *p1, Point3D *p2, Point3D *p3, Point3D *result)
 Calculates the center of the circle passing through p1, p2 and p3. Returns true in case of success and false otherwise (e.g. all three points on a line) More...
 
double ANALYSIS_EXPORT crossVec (Point3D *first, Vector3D *vec1, Point3D *second, Vector3D *vec2)
 Calculates the intersection of the two vectors vec1 and vec2, which start at first(vec1) and second(vec2) end. The return value is t2(multiplication of v2 with t2 and adding to 'second' results the intersection point) More...
 
bool ANALYSIS_EXPORT derVec (const Vector3D *v1, const Vector3D *v2, Vector3D *result, double x, double y)
 Calculates the z-component of a vector with coordinates 'x' and 'y'which is in the same tangent plane as the tangent vectors 'v1' and 'v2'. The result is assigned to 'result'. More...
 
double ANALYSIS_EXPORT distPointFromLine (Point3D *thepoint, Point3D *p1, Point3D *p2)
 Calculates the (2 dimensional) distance from 'thepoint' to the line defined by p1 and p2. More...
 
int ANALYSIS_EXPORT faculty (int n)
 Faculty function. More...
 
bool ANALYSIS_EXPORT inCircle (Point3D *testp, Point3D *p1, Point3D *p2, Point3D *p3)
 Tests, whether 'testp' is inside the circle through 'p1', 'p2' and 'p3'. More...
 
bool ANALYSIS_EXPORT inDiametral (Point3D *p1, Point3D *p2, Point3D *point)
 Tests, whether 'point' is inside the diametral circle through 'p1' and 'p2'. More...
 
double ANALYSIS_EXPORT leftOf (Point3D *thepoint, Point3D *p1, Point3D *p2)
 Returns whether 'thepoint' is left or right of the line from 'p1' to 'p2'. Negativ values mean left and positiv values right. There may be numerical instabilities, so a threshold may be useful. More...
 
bool ANALYSIS_EXPORT lineIntersection (Point3D *p1, Point3D *p2, Point3D *p3, Point3D *p4)
 Returns true, if line1 (p1 to p2) and line2 (p3 to p4) intersect. If the lines have an endpoint in common, false is returned. More...
 
bool ANALYSIS_EXPORT lineIntersection (Point3D *p1, Point3D *p2, Point3D *p3, Point3D *p4, Point3D *intersection_point)
 Returns true, if line1 (p1 to p2) and line2 (p3 to p4) intersect. If the lines have an endpoint in common, false is returned. The intersecting point is stored in 'intersection_point. More...
 
int ANALYSIS_EXPORT lower (int n, int i)
 Lower function. More...
 
double ANALYSIS_EXPORT max (double x, double y)
 Returns the maximum of two doubles or the first argument if both are equal. More...
 
double ANALYSIS_EXPORT min (double x, double y)
 Returns the minimum of two doubles or the first argument if both are equal. More...
 
void ANALYSIS_EXPORT normalFromPoints (Point3D *p1, Point3D *p2, Point3D *p3, Vector3D *vec)
 Calculates the normal vector of the plane through the points p1, p2 and p3 and assigns the result to vec. If the points are ordered counterclockwise, the normal will have a positive z-coordinate;. More...
 
bool ANALYSIS_EXPORT normalLeft (Vector3D *v1, Vector3D *result, double length)
 Assigns the vector 'result', which is normal to the vector 'v1', on the left side of v1 and has length 'length'. This method works only with two dimensions. More...
 
bool ANALYSIS_EXPORT normalMinDistance (Vector3D *tangent, Vector3D *target, Vector3D *result)
 Calculates a Vector orthogonal to 'tangent' with length 1 and closest possible to result. Returns true in case of success and false otherwise. More...
 
bool ANALYSIS_EXPORT normalRight (Vector3D *v1, Vector3D *result, double length)
 Assigns the vector 'result', which is normal to the vector 'v1', on the right side of v1 and has length 'length'. The calculation is only in two dimensions. More...
 
double ANALYSIS_EXPORT planeTest (Point3D *test, Point3D *pt1, Point3D *pt2, Point3D *pt3)
 Tests, if 'test' is in the same plane as 'p1', 'p2' and 'p3' and returns the z-difference from the plane to 'test. More...
 
bool ANALYSIS_EXPORT pointInsideTriangle (double x, double y, Point3D *p1, Point3D *p2, Point3D *p3)
 Returns true, if the point with coordinates x and y is inside (or at the edge) of the triangle p1,p2,p3 and false, if it is outside. p1, p2 and p3 have to be ordered counterclockwise. More...
 
double ANALYSIS_EXPORT power (double a, int b)
 Power function for integer coefficients. More...
 
double ANALYSIS_EXPORT triArea (Point3D *pa, Point3D *pb, Point3D *pc)
 Returns the area of a triangle. If the points are ordered counterclockwise, the value will be positiv. If they are ordered clockwise, the value will be negativ. More...
 

Function Documentation

double MathUtils::angle ( Point3D p1,
Point3D p2,
Point3D p3,
Point3D p4 
)

Calculates the angle between two segments (in 2 dimension, z-values are ignored)

Definition at line 857 of file MathUtils.cc.

bool MathUtils::BarycentricToXY ( double  u,
double  v,
double  w,
Point3D p1,
Point3D p2,
Point3D p3,
Point3D result 
)

Definition at line 53 of file MathUtils.cc.

bool MathUtils::calcBarycentricCoordinates ( double  x,
double  y,
Point3D p1,
Point3D p2,
Point3D p3,
Point3D result 
)

Calculates the barycentric coordinates of a point (x,y) with respect to p1, p2, p3 and stores the three barycentric coordinates in 'result'. Thus the u-coordinate is stored in result::x, the v-coordinate in result::y and the w-coordinate in result::z. Attention: p1, p2 and p3 have to be ordered counterclockwise.

Definition at line 24 of file MathUtils.cc.

double MathUtils::calcBernsteinPoly ( int  n,
int  i,
double  t 
)

Calculates the value of a Bernstein polynomial.

Definition at line 104 of file MathUtils.cc.

double MathUtils::calcCubicHermitePoly ( int  n,
int  i,
double  t 
)

Calculates the value of a cubic Hermite polynomial.

Definition at line 504 of file MathUtils.cc.

double MathUtils::cFDerBernsteinPoly ( int  n,
int  i,
double  t 
)

Calculates the first derivative of a Bernstein polynomial with respect to the parameter t.

Definition at line 114 of file MathUtils.cc.

double MathUtils::cFDerCubicHermitePoly ( int  n,
int  i,
double  t 
)

Calculates the first derivative of a cubic Hermite polynomial with respect to the parameter t.

Definition at line 537 of file MathUtils.cc.

bool MathUtils::circumcenter ( Point3D p1,
Point3D p2,
Point3D p3,
Point3D result 
)

Calculates the center of the circle passing through p1, p2 and p3. Returns true in case of success and false otherwise (e.g. all three points on a line)

Definition at line 119 of file MathUtils.cc.

double MathUtils::crossVec ( Point3D first,
Vector3D vec1,
Point3D second,
Vector3D vec2 
)

Calculates the intersection of the two vectors vec1 and vec2, which start at first(vec1) and second(vec2) end. The return value is t2(multiplication of v2 with t2 and adding to 'second' results the intersection point)

Definition at line 721 of file MathUtils.cc.

bool MathUtils::derVec ( const Vector3D v1,
const Vector3D v2,
Vector3D result,
double  x,
double  y 
)

Calculates the z-component of a vector with coordinates 'x' and 'y'which is in the same tangent plane as the tangent vectors 'v1' and 'v2'. The result is assigned to 'result'.

Definition at line 576 of file MathUtils.cc.

double MathUtils::distPointFromLine ( Point3D thepoint,
Point3D p1,
Point3D p2 
)

Calculates the (2 dimensional) distance from 'thepoint' to the line defined by p1 and p2.

Definition at line 204 of file MathUtils.cc.

int MathUtils::faculty ( int  n)

Faculty function.

Definition at line 224 of file MathUtils.cc.

bool MathUtils::inCircle ( Point3D testp,
Point3D p1,
Point3D p2,
Point3D p3 
)

Tests, whether 'testp' is inside the circle through 'p1', 'p2' and 'p3'.

Definition at line 244 of file MathUtils.cc.

bool MathUtils::inDiametral ( Point3D p1,
Point3D p2,
Point3D point 
)

Tests, whether 'point' is inside the diametral circle through 'p1' and 'p2'.

Definition at line 284 of file MathUtils.cc.

double MathUtils::leftOf ( Point3D thepoint,
Point3D p1,
Point3D p2 
)

Returns whether 'thepoint' is left or right of the line from 'p1' to 'p2'. Negativ values mean left and positiv values right. There may be numerical instabilities, so a threshold may be useful.

Definition at line 310 of file MathUtils.cc.

bool MathUtils::lineIntersection ( Point3D p1,
Point3D p2,
Point3D p3,
Point3D p4 
)

Returns true, if line1 (p1 to p2) and line2 (p3 to p4) intersect. If the lines have an endpoint in common, false is returned.

Definition at line 329 of file MathUtils.cc.

bool MathUtils::lineIntersection ( Point3D p1,
Point3D p2,
Point3D p3,
Point3D p4,
Point3D intersection_point 
)

Returns true, if line1 (p1 to p2) and line2 (p3 to p4) intersect. If the lines have an endpoint in common, false is returned. The intersecting point is stored in 'intersection_point.

Definition at line 372 of file MathUtils.cc.

int MathUtils::lower ( int  n,
int  i 
)

Lower function.

Definition at line 425 of file MathUtils.cc.

double MathUtils::max ( double  x,
double  y 
)

Returns the maximum of two doubles or the first argument if both are equal.

Definition at line 437 of file MathUtils.cc.

double MathUtils::min ( double  x,
double  y 
)

Returns the minimum of two doubles or the first argument if both are equal.

Definition at line 452 of file MathUtils.cc.

void MathUtils::normalFromPoints ( Point3D p1,
Point3D p2,
Point3D p3,
Vector3D vec 
)

Calculates the normal vector of the plane through the points p1, p2 and p3 and assigns the result to vec. If the points are ordered counterclockwise, the normal will have a positive z-coordinate;.

Definition at line 703 of file MathUtils.cc.

bool MathUtils::normalLeft ( Vector3D v1,
Vector3D result,
double  length 
)

Assigns the vector 'result', which is normal to the vector 'v1', on the left side of v1 and has length 'length'. This method works only with two dimensions.

Definition at line 591 of file MathUtils.cc.

bool MathUtils::normalMinDistance ( Vector3D tangent,
Vector3D target,
Vector3D result 
)

Calculates a Vector orthogonal to 'tangent' with length 1 and closest possible to result. Returns true in case of success and false otherwise.

Definition at line 769 of file MathUtils.cc.

bool MathUtils::normalRight ( Vector3D v1,
Vector3D result,
double  length 
)

Assigns the vector 'result', which is normal to the vector 'v1', on the right side of v1 and has length 'length'. The calculation is only in two dimensions.

Definition at line 647 of file MathUtils.cc.

double MathUtils::planeTest ( Point3D test,
Point3D pt1,
Point3D pt2,
Point3D pt3 
)

Tests, if 'test' is in the same plane as 'p1', 'p2' and 'p3' and returns the z-difference from the plane to 'test.

Definition at line 840 of file MathUtils.cc.

bool MathUtils::pointInsideTriangle ( double  x,
double  y,
Point3D p1,
Point3D p2,
Point3D p3 
)

Returns true, if the point with coordinates x and y is inside (or at the edge) of the triangle p1,p2,p3 and false, if it is outside. p1, p2 and p3 have to be ordered counterclockwise.

Definition at line 751 of file MathUtils.cc.

double MathUtils::power ( double  a,
int  b 
)

Power function for integer coefficients.

Definition at line 468 of file MathUtils.cc.

double MathUtils::triArea ( Point3D pa,
Point3D pb,
Point3D pc 
)

Returns the area of a triangle. If the points are ordered counterclockwise, the value will be positiv. If they are ordered clockwise, the value will be negativ.

Definition at line 490 of file MathUtils.cc.