37
37
namespace KarbonGlobal
39
const qreal pi = 3.14159265358979323846; // pi
40
const qreal twopi = 6.28318530717958647692; // 2pi
41
const qreal pi_2 = 1.57079632679489661923; // pi/2
42
const qreal pi_180 = 0.01745329251994329576; // pi/180
43
const qreal one_pi_180 = 57.29577951308232087684; // 180/pi
44
const qreal sqrt2 = 1.41421356237309504880; // sqrt(2)
45
const qreal one_3 = 0.33333333333333333333; // 1/3
46
const qreal two_3 = 0.66666666666666666667; // 2/3
47
const qreal one_6 = 0.16666666666666666667; // 1/6
48
const qreal one_7 = 0.14285714285714285714; // 1/7
51
* Constants used to decide if a number is equal zero or nearly the same
54
const qreal veryBigNumber = 1.0e8;
55
const qreal verySmallNumber = 1.0e-8;
58
* A bezier with this flatness is considered "flat". Used in subdividing.
60
const qreal flatnessTolerance = 0.01;
63
* A tolerance used to approximate bezier lengths. If the relative difference
64
* between chordlength and polylength (length of the controlpolygon) is smaller
65
* than this value, the length of the bezier is 1/2 chordlength + 1/2 polylength.
67
const qreal lengthTolerance = 0.005;
70
* A tolerance used to calculate param t on a segment at a given arc
71
* length (counting from t=0).
72
* If the relative difference between a length approximation and the given
73
* length is smaller than this value, they are assumed to be identical.
75
const qreal paramLengthTolerance = 0.001;
78
* A range for the isNear() check, to decide if a QPointF "is the same"
81
const qreal isNearRange = 0.001;
84
* A tolerance for multiplying normalized (length=1) vectors. A result of
85
* >= parallelTolerance indicates parallel vectors.
87
const qreal parallelTolerance = 0.99;
90
* Returns the sign of parameter a.
92
inline int sign( qreal a )
100
* Calculates the binomial coefficient n! / ( k! * ( n - k)! ).
102
int binomialCoeff( unsigned n, unsigned k );
105
* Calculates the value ln( n! ).
107
qreal factorialLn( unsigned n );
110
* Calculates the value ln| Gamma(x) | for x > 0.
112
qreal gammaLn( qreal x );
114
/// Returns scalar product of two given vectors
115
KARBONCOMMON_EXPORT qreal scalarProduct(const QPointF &p1, const QPointF &p2);
117
bool pointsAreNear(const QPointF &p1, const QPointF &p2, qreal range);
119
/// Returns the cross product of two given vectors
120
QPointF crossProduct( const QPointF &v1, const QPointF &v2 );
39
const qreal pi = 3.14159265358979323846; // pi
40
const qreal twopi = 6.28318530717958647692; // 2pi
41
const qreal pi_2 = 1.57079632679489661923; // pi/2
42
const qreal pi_180 = 0.01745329251994329576; // pi/180
43
const qreal one_pi_180 = 57.29577951308232087684; // 180/pi
44
const qreal sqrt2 = 1.41421356237309504880; // sqrt(2)
45
const qreal one_3 = 0.33333333333333333333; // 1/3
46
const qreal two_3 = 0.66666666666666666667; // 2/3
47
const qreal one_6 = 0.16666666666666666667; // 1/6
48
const qreal one_7 = 0.14285714285714285714; // 1/7
51
* Constants used to decide if a number is equal zero or nearly the same
54
const qreal veryBigNumber = 1.0e8;
55
const qreal verySmallNumber = 1.0e-8;
58
* A bezier with this flatness is considered "flat". Used in subdividing.
60
const qreal flatnessTolerance = 0.01;
63
* A tolerance used to approximate bezier lengths. If the relative difference
64
* between chordlength and polylength (length of the controlpolygon) is smaller
65
* than this value, the length of the bezier is 1/2 chordlength + 1/2 polylength.
67
const qreal lengthTolerance = 0.005;
70
* A tolerance used to calculate param t on a segment at a given arc
71
* length (counting from t=0).
72
* If the relative difference between a length approximation and the given
73
* length is smaller than this value, they are assumed to be identical.
75
const qreal paramLengthTolerance = 0.001;
78
* A range for the isNear() check, to decide if a QPointF "is the same"
81
const qreal isNearRange = 0.001;
84
* A tolerance for multiplying normalized (length=1) vectors. A result of
85
* >= parallelTolerance indicates parallel vectors.
87
const qreal parallelTolerance = 0.99;
90
* Returns the sign of parameter a.
92
inline int sign(qreal a)
100
* Calculates the binomial coefficient n! / ( k! * ( n - k)! ).
102
int binomialCoeff(unsigned n, unsigned k);
105
* Calculates the value ln( n! ).
107
qreal factorialLn(unsigned n);
110
* Calculates the value ln| Gamma(x) | for x > 0.
112
qreal gammaLn(qreal x);
114
/// Returns scalar product of two given vectors
115
KARBONCOMMON_EXPORT qreal scalarProduct(const QPointF &p1, const QPointF &p2);
117
bool pointsAreNear(const QPointF &p1, const QPointF &p2, qreal range);
119
/// Returns the cross product of two given vectors
120
QPointF crossProduct(const QPointF &v1, const QPointF &v2);
123
123
#endif // KARBONGLOBAL_H