3Depict
|
#include <cmath>
#include <limits>
#include <iostream>
#include <vector>
#include <gsl/gsl_matrix.h>
#include "endianTest.h"
Classes | |
class | Point3D |
A 3D point data class storage. More... | |
class | RandNumGen |
struct | Quaternion |
struct | Point3f |
class | LinearFeedbackShiftReg |
Functions | |
void | quat_rot (Point3D &p, const Point3D &r, float angle) |
void | quat_rot (Point3f *point, const Point3f *rotVec, float angle) |
void | quat_rot_array (Point3f *point, unsigned int n, const Point3f *rotVec, float angle) |
void | quat_rot_array (Point3D *point, 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 | applyQuaternionRotation (std::vector< Point3D > &pts, const Quaternion &q) |
double | pyramidVol (const Point3D *planarPts, const Point3D &apex) |
float | dotProduct (float a1, float a2, float a3, float b1, float b2, float b3) |
Inline func for calculating a(dot)b. More... | |
unsigned int | ilog2 (unsigned int value) |
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 std::vector< Point3D > &vpts, const gsl_matrix *m, std::vector< Point3D > &r) |
float | clockwiseAngle (const Point3D &v1, const Point3D &v2, const Point3D &normal) |
void | scatterPointsInPolygon (const std::vector< Point3D > &polygon, const Point3D &normal, float scatterDensity, RandNumGen &rng, std::vector< Point3D > &result) |
void | rotatePointsToXYPlane (std::vector< Point3D > &pts, const Point3D &normal, const Point3D &origin, Quaternion &q) |
void applyQuaternionRotation | ( | std::vector< Point3D > & | pts, |
const Quaternion & | q | ||
) |
References Point3D::angle(), Point3D::crossProd(), Point3D::dotProd(), and M_PI.
Referenced by applyQuaternion(), BoundCube::getPlaneIntersectVertices(), and ilog2().
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().
|
inline |
Inline func for calculating a(dot)b.
Referenced by GetReducedHullPts().
|
inline |
References clockwiseAngle(), computeRotationMatrix(), rotateByMatrix(), rotatePointsToXYPlane(), and scatterPointsInPolygon().
Referenced by testFilterTree().
References det3by3().
Referenced by GetReducedHullPts(), and LinearFeedbackShiftReg::setState().
void quat_get_rot_quat | ( | const Point3f * | rotVec, |
float | angle, | ||
Quaternion * | rotQuat | ||
) |
References Quaternion::a, ASSERT, Quaternion::b, Quaternion::c, Quaternion::d, Point3f::fx, Point3f::fy, and Point3f::fz.
Referenced by TransformFilter::refresh(), rotatePointsToXYPlane(), and CropHelper::runFilter().
References Point3f::fx, Point3f::fy, Point3f::fz, and quat_rot().
Referenced by DrawGLText::draw(), drawCone(), BoxCropEffect::enable(), DrawGLText::getBoundingBox(), CameraLookAt::move(), Camera::pivot(), CameraLookAt::pivot(), quat_rot(), and CameraLookAt::roll().
References Quaternion::a, ASSERT, Quaternion::b, Quaternion::c, Quaternion::d, Point3f::fx, Point3f::fy, Point3f::fz, quat_mult_no_second_a(), and quat_pointmult().
void quat_rot_apply_quat | ( | Point3f * | point, |
const Quaternion * | rotQuat | ||
) |
References Quaternion::b, Quaternion::c, Quaternion::d, Point3f::fx, Point3f::fy, Point3f::fz, quat_mult_no_second_a(), and quat_pointmult().
Referenced by applyQuaternion(), TransformFilter::refresh(), rotatePointsToXYPlane(), and CropHelper::runFilter().
References Quaternion::a, ASSERT, Quaternion::b, Quaternion::c, Quaternion::d, Point3f::fx, Point3f::fy, Point3f::fz, quat_mult_no_second_a(), and quat_pointmult().
References Point3f::fx, Point3f::fy, Point3f::fz, and quat_rot_array().
Referenced by DrawGLText::getBoundingBox(), and quat_rot_array().
void rotatePointsToXYPlane | ( | std::vector< Point3D > & | pts, |
const Point3D & | normal, | ||
const Point3D & | origin, | ||
Quaternion & | q | ||
) |
References Point3D::angle(), Point3D::crossProd(), Point3f::fx, Point3f::fy, Point3f::fz, Point3D::normalise(), Point3D::Point3D(), quat_get_rot_quat(), quat_rot_apply_quat(), and Point3D::sqrt().
Referenced by ilog2().
void scatterPointsInPolygon | ( | const std::vector< Point3D > & | polygon, |
const Point3D & | normal, | ||
float | scatterDensity, | ||
RandNumGen & | rng, | ||
std::vector< Point3D > & | result | ||
) |
References Point3D::angle(), ASSERT, Point3D::centroid(), generatePointInTri(), RandNumGen::genUniformDev(), Point3D::mag(), and Point3D::sqrt().
Referenced by ilog2(), and VoxeliseFilter::refresh().