QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RMath Class Reference

Math functions. More...

#include <RMath.h>

List of all members.

Static Public Member Functions

static int absmod (int a, int b)
static QString angleToString (double a)
 Converts the given string to an angle.
static double deg2rad (double a)
 Converts degrees to radians.
static double eval (const QString &expression, bool *ok=NULL)
static bool fuzzyCompare (double v1, double v2, double tolerance=RS::PointTolerance)
static double getAngleDifference (double a1, double a2)
static double getAngleDifference180 (double a1, double a2)
static void getBiQuadRoots (double p[], double r[][5])
static void getCubicRoots (double p[], double r[][5])
static QString getError ()
static int getGcd (int a, int b)
 Finds greatest common divider using Euclid's algorithm.
static double getNormalizedAngle (double a)
 Gets the normalized angle from a.
static void getQuadRoots (double p[], double r[][5])
static double gra2deg (double a)
 Converts grads to degrees.
static bool hasError ()
static bool isAngleBetween (double a, double a1, double a2, bool reversed)
 Tests if angle a is between a1 and a2.
static bool isAngleReadable (double angle, double tolerance=RS::AngleTolerance)
static bool isInf (double v)
static bool isNaN (double v)
static bool isNormal (double v)
static bool isSameDirection (double dir1, double dir2, double tol=RS::AngleTolerance)
 Tests if two angels point approximately in the same direction.
static double makeAngleReadable (double angle, bool readable=true, bool *corrected=NULL)
 Adds 180° to the given angle if a text constructed with that angle otherwise wouldn't be readable.
static int mround (double v)
 Rounds the given double to the next int.
static double parseScale (const QString &scaleString)
static double pow (double x, double y)
 Safe pow function.
static double rad2deg (double a)
 Converts radians to degrees.
static double rad2gra (double a)
 Converts radians to gradians.
static void simplify (int numerator, int denominator, int &numeratorRes, int &denominatorRes)
template<class T >
static void swap (T &a, T &b)
 Swaps two given values.
static void toFraction (double v, int maxDenominator, int &number, int &numerator, int &denominator)
static QString toFractionString (double v, int maxDenominator)
static double trunc (double v)

Static Private Attributes

static QString lastError = ""

Detailed Description

Math functions.

Scriptable:
This class is wrapped for script environments.

Member Function Documentation

int RMath::absmod ( int  a,
int  b 
)
static
QString RMath::angleToString ( double  a)
static

Converts the given string to an angle.

Accepted formats are: #.## for an angle in degrees, #.##r for an angle in rad, #.##g for an angle in gon,

d##.#'##.##" for an angle in degrees, minutes, seconds,</h2> N##d##'##"E, S##D##'##"E for suveyors units. Converts the given angle in rad to the given angle format. todo 27.

double RMath::deg2rad ( double  a)
static

Converts degrees to radians.

Parameters:
aangle in degrees
double RMath::eval ( const QString &  expression,
bool *  ok = NULL 
)
static
bool RMath::fuzzyCompare ( double  v1,
double  v2,
double  tolerance = RS::PointTolerance 
)
static
double RMath::getAngleDifference ( double  a1,
double  a2 
)
static
Parameters:
a1first angle in rad
a2s second angle in rad
Returns:
The angle that needs to be added to a1 to reach a2. Always positive and less than 2*pi.
double RMath::getAngleDifference180 ( double  a1,
double  a2 
)
static
Parameters:
a1first angle in rad
a2s second angle in rad
Returns:
The angle that needs to be added to a1 to reach a2. Always between -pi and pi.
void RMath::getBiQuadRoots ( double  p[],
double  r[][5] 
)
static
   \par Non-Scriptable:

This function is not available in script environments.

void RMath::getCubicRoots ( double  p[],
double  r[][5] 
)
static
   \par Non-Scriptable:

This function is not available in script environments.

QString RMath::getError ( )
static
int RMath::getGcd ( int  a,
int  b 
)
static

Finds greatest common divider using Euclid's algorithm.

See also:
http://en.wikipedia.org/wiki/Greatest_common_divisor
Parameters:
athe first number
bthe second number
Returns:
The greatest common divisor of a and b.
double RMath::getNormalizedAngle ( double  a)
static

Gets the normalized angle from a.

Used to make sure that an angle is in the range between 0 and 2 pi.

Parameters:
athe unnormalized angle, e.g. 8
Returns:
The angle a normalized to the range of $ 0 \ldots 2\pi $, e.g. normalized angle from 8 is 1.716.
void RMath::getQuadRoots ( double  p[],
double  r[][5] 
)
static
   \par Non-Scriptable:

This function is not available in script environments.

double RMath::gra2deg ( double  a)
static

Converts grads to degrees.

Parameters:
aangle in grad (gon)
bool RMath::hasError ( )
static
bool RMath::isAngleBetween ( double  a,
double  a1,
double  a2,
bool  reversed 
)
static

Tests if angle a is between a1 and a2.

a, a1 and a2 must be in the range between 0 and 2*PI. All angles in rad.

Parameters:
athe test angle
a1the lower limiting angle
a2the upper limiting angle
reversedTrue for clockwise testing. False for ccw testing.
Returns:
true if the angle a is between a1 and a2.
bool RMath::isAngleReadable ( double  angle,
double  tolerance = RS::AngleTolerance 
)
static
Parameters:
anglethe angle in rad
toleranceThe tolerance by which the angle still maybe in the unreadable range.
Returns:
true: If the given angle is in a range that is readable for texts created with that angle.
bool RMath::isInf ( double  v)
static
bool RMath::isNaN ( double  v)
static
bool RMath::isNormal ( double  v)
static
bool RMath::isSameDirection ( double  dir1,
double  dir2,
double  tolerance = RS::AngleTolerance 
)
static

Tests if two angels point approximately in the same direction.

Parameters:
dir1first direction
dir2second direction
toleranceTolerance in rad.
Return values:
trueThe two angles point in the same direction.
falseThe difference between the two angles is at least tolerance radians.
double RMath::makeAngleReadable ( double  angle,
bool  readable = true,
bool *  corrected = NULL 
)
static

Adds 180° to the given angle if a text constructed with that angle otherwise wouldn't be readable.

Used for dimension texts and for mirroring texts.

Parameters:
anglethe original angle
readabletrue: make angle readable, false: unreadable
correctedPointer to boolean that will point to true if the given angle was corrected, false otherwise, or null.
Returns:
The given angle or the given angle + pi, depending which one is readable from the bottom or right.
static int RMath::mround ( double  v)
inlinestatic

Rounds the given double to the next int.

double RMath::parseScale ( const QString &  scaleString)
static
double RMath::pow ( double  x,
double  y 
)
static

Safe pow function.

Parameters:
xthe base
ythe exponent
Returns:
The value of x raised to the power of y.
double RMath::rad2deg ( double  a)
static

Converts radians to degrees.

Parameters:
aangle in radians
double RMath::rad2gra ( double  a)
static

Converts radians to gradians.

Parameters:
aangle in radians
void RMath::simplify ( int  numerator,
int  denominator,
int &  numeratorRes,
int &  denominatorRes 
)
static
template<class T >
static void RMath::swap ( T &  a,
T &  b 
)
inlinestatic

Swaps two given values.

   \par Non-Scriptable:

This function is not available in script environments.

void RMath::toFraction ( double  v,
int  maxDenominator,
int &  number,
int &  numerator,
int &  denominator 
)
static
QString RMath::toFractionString ( double  v,
int  maxDenominator 
)
static
double RMath::trunc ( double  v)
static

Member Data Documentation

QString RMath::lastError = ""
staticprivate

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