3Depict
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Macros | Functions | Variables
mathfuncs.cpp File Reference
#include "../config.h"
#include "common/basics.h"
#include "common/stringFuncs.h"
#include <sys/time.h>
#include <gsl/gsl_blas.h>
Include dependency graph for mathfuncs.cpp:

Macros

#define EQ_TOL(f, g)   (fabs( (f) - (g)) < sqrtf(std::numeric_limits<float>::epsilon()))
 

Functions

std::ostream & operator<< (std::ostream &stream, const Point3D &pt)
 
void quat_mult_no_second_a (Quaternion *result, const Quaternion *q1, const Quaternion *q2)
 
void quat_pointmult (Point3f *result, const Quaternion *q1, const Quaternion *q2)
 
void quat_rot (Point3D &p, const Point3D &r, float angle)
 
void quat_rot (Point3f *point, const Point3f *rotVec, float angle)
 
void quat_rot_array (Point3D *pointArr, unsigned int n, const Point3f *rotVec, float angle)
 
void quat_rot_array (Point3f *pointArr, unsigned int n, const Point3f *rotVec, float angle)
 
void quat_get_rot_quat (const Point3f *rotVec, float angle, Quaternion *rotQuat)
 
void quat_rot_apply_quat (Point3f *point, const Quaternion *rotQuat)
 
void quat_invert (Quaternion *quat)
 
double det3by3 (const double *ptArray)
 
double pyramidVol (const Point3D *planarPts, const Point3D &apex)
 
void computeRotationMatrix (const Point3D &ur1, const Point3D &ur2, const Point3D &r1, const Point3D &r2, gsl_matrix *m)
 Use the TRIAD algorithm to compute the matrix that transforms orthogonal unit vectors. More...
 
void rotateByMatrix (const vector< Point3D > &vpts, const gsl_matrix *m, vector< Point3D > &r)
 
float clockwiseAngle (const Point3D &v1, const Point3D &v2, const Point3D &normal)
 
Point3D generatePointInTri (const Point3D &origin, const Point3D &sideV1, const Point3D &sideV2, RandNumGen &rng)
 
void scatterPointsInPolygon (const vector< Point3D > &polygon, const Point3D &normal, float scatterDensity, RandNumGen &rng, vector< Point3D > &result)
 
void rotatePointsToXYPlane (vector< Point3D > &pts, const Point3D &normal, const Point3D &origin, Quaternion &q)
 
void applyQuaternion (vector< Point3D > &pts, Quaternion &q)
 

Variables

const int MBIG = std::numeric_limits<int>::max()
 
size_t maximumLinearTable []
 

Macro Definition Documentation

◆ EQ_TOL

#define EQ_TOL (   f,
 
)    (fabs( (f) - (g)) < sqrtf(std::numeric_limits<float>::epsilon()))

Function Documentation

◆ applyQuaternion()

void applyQuaternion ( vector< Point3D > &  pts,
Quaternion q 
)

◆ clockwiseAngle()

float clockwiseAngle ( const Point3D v1,
const Point3D v2,
const Point3D normal 
)

References Point3D::angle(), Point3D::crossProd(), Point3D::dotProd(), and M_PI.

Referenced by applyQuaternion(), BoundCube::getPlaneIntersectVertices(), and ilog2().

Here is the caller graph for this function:

◆ computeRotationMatrix()

void computeRotationMatrix ( const Point3D ur1,
const Point3D ur2,
const Point3D r1,
const Point3D r2,
gsl_matrix *  m 
)

Use the TRIAD algorithm to compute the matrix that transforms orthogonal unit vectors.

References ASSERT, Point3D::crossProd(), and Point3D::sqrMag().

Referenced by ilog2().

Here is the caller graph for this function:

◆ det3by3()

double det3by3 ( const double *  ptArray)

Referenced by pyramidVol().

Here is the caller graph for this function:

◆ generatePointInTri()

Point3D generatePointInTri ( const Point3D origin,
const Point3D sideV1,
const Point3D sideV2,
RandNumGen rng 
)

References RandNumGen::genUniformDev().

Referenced by scatterPointsInPolygon().

Here is the caller graph for this function:

◆ operator<<()

std::ostream& operator<< ( std::ostream &  stream,
const Point3D pt 
)

◆ pyramidVol()

double pyramidVol ( const Point3D planarPts,
const Point3D apex 
)

References det3by3().

Referenced by GetReducedHullPts(), and LinearFeedbackShiftReg::setState().

Here is the caller graph for this function:

◆ quat_get_rot_quat()

void quat_get_rot_quat ( const Point3f rotVec,
float  angle,
Quaternion rotQuat 
)

◆ quat_invert()

void quat_invert ( Quaternion quat)

◆ quat_mult_no_second_a()

void quat_mult_no_second_a ( Quaternion result,
const Quaternion q1,
const Quaternion q2 
)

References Quaternion::a, Quaternion::b, Quaternion::c, and Quaternion::d.

Referenced by quat_rot(), quat_rot_apply_quat(), and quat_rot_array().

Here is the caller graph for this function:

◆ quat_pointmult()

void quat_pointmult ( Point3f result,
const Quaternion q1,
const Quaternion q2 
)

References Quaternion::a, Quaternion::b, Quaternion::c, Quaternion::d, Point3f::fx, Point3f::fy, and Point3f::fz.

Referenced by quat_rot(), quat_rot_apply_quat(), and quat_rot_array().

Here is the caller graph for this function:

◆ quat_rot() [1/2]

void quat_rot ( Point3D p,
const Point3D r,
float  angle 
)

◆ quat_rot() [2/2]

void quat_rot ( Point3f point,
const Point3f rotVec,
float  angle 
)

◆ quat_rot_apply_quat()

void quat_rot_apply_quat ( Point3f point,
const Quaternion rotQuat 
)

◆ quat_rot_array() [1/2]

void quat_rot_array ( Point3D pointArr,
unsigned int  n,
const Point3f rotVec,
float  angle 
)

References Point3f::fx, Point3f::fy, Point3f::fz, and quat_rot_array().

Referenced by DrawGLText::getBoundingBox(), and quat_rot_array().

Here is the caller graph for this function:

◆ quat_rot_array() [2/2]

void quat_rot_array ( Point3f pointArr,
unsigned int  n,
const Point3f rotVec,
float  angle 
)

◆ rotateByMatrix()

void rotateByMatrix ( const vector< Point3D > &  vpts,
const gsl_matrix *  m,
vector< Point3D > &  r 
)

Referenced by ilog2().

Here is the caller graph for this function:

◆ rotatePointsToXYPlane()

void rotatePointsToXYPlane ( vector< Point3D > &  pts,
const Point3D normal,
const Point3D origin,
Quaternion q 
)

◆ scatterPointsInPolygon()

void scatterPointsInPolygon ( const vector< Point3D > &  polygon,
const Point3D normal,
float  scatterDensity,
RandNumGen rng,
vector< Point3D > &  result 
)

Variable Documentation

◆ maximumLinearTable

size_t maximumLinearTable[]

◆ MBIG

const int MBIG = std::numeric_limits<int>::max()