![]() |
OGRE
13.6
Object-Oriented Graphics Rendering Engine
|
Class to provide access to common mathematical functions. More...
#include <OgreMath.h>
Classes | |
| class | RandomValueProvider |
| This class is used to provide an external random value provider. More... | |
Public Types | |
| enum | AngleUnit { AU_DEGREE , AU_RADIAN } |
| The angular units used by the API. More... | |
Public Member Functions | |
| Math (unsigned int trigTableSize=4096) | |
| Default constructor. More... | |
| ~Math () | |
| Default destructor. More... | |
Static Public Member Functions | |
| static Degree | Abs (const Degree &dValue) |
| Absolute value function. More... | |
| static Radian | Abs (const Radian &rValue) |
| Absolute value function. More... | |
| static Real | Abs (Real fValue) |
| Absolute value function. More... | |
| static Radian | ACos (Real fValue) |
| Arc cosine function. More... | |
| static float | AngleUnitsToDegrees (float units) |
| Convert from the current AngleUnit to degrees. More... | |
| static float | AngleUnitsToRadians (float units) |
| Convert from the current AngleUnit to radians. More... | |
| static Radian | ASin (Real fValue) |
| Arc sine function. More... | |
| static Radian | ATan (float fValue) |
| Arc tangent function. More... | |
| static Radian | ATan2 (float fY, float fX) |
| Arc tangent between two values function. More... | |
| static Real | boundingRadiusFromAABB (const AxisAlignedBox &aabb) |
| Get the radius of the origin-centered bounding sphere from the bounding box. More... | |
| static Real | boundingRadiusFromAABBCentered (const AxisAlignedBox &aabb) |
| Get the radius of the bbox-centered bounding sphere from the bounding box. More... | |
| static Affine3 | buildReflectionMatrix (const Plane &p) |
| Build a reflection matrix for the passed in plane. More... | |
| static Vector3 | calculateBasicFaceNormal (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3) |
| Calculate a face normal, no w-information. More... | |
| static Vector3 | calculateBasicFaceNormalWithoutNormalize (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3) |
| Calculate a face normal without normalize, no w-information. More... | |
| static Vector4 | calculateFaceNormal (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3) |
| Calculate a face normal, including the w component which is the offset from the origin. More... | |
| static Vector4 | calculateFaceNormalWithoutNormalize (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3) |
| Calculate a face normal without normalize, including the w component which is the offset from the origin. More... | |
| static Vector3 | calculateTangentSpaceVector (const Vector3 &position1, const Vector3 &position2, const Vector3 &position3, Real u1, Real v1, Real u2, Real v2, Real u3, Real v3) |
| static Real | Ceil (Real fValue) |
| Ceiling function Returns the smallest following integer. More... | |
| template<typename T > | |
| static T | Clamp (T val, T minval, T maxval) |
| Clamp a value within an inclusive range. More... | |
| static float | Cos (const Radian &fValue, bool useTables=false) |
| Cosine function. More... | |
| static float | Cos (float fValue, bool useTables=false) |
| Cosine function. More... | |
| static float | DegreesToAngleUnits (float degrees) |
| Convert from degrees to the current AngleUnit. More... | |
| static float | DegreesToRadians (float degrees) |
| static Real | Exp (Real fValue) |
| static Real | Floor (Real fValue) |
| Floor function Returns the largest previous integer. More... | |
| static Real | gaussianDistribution (Real x, Real offset=0.0f, Real scale=1.0f) |
| Generates a value based on the Gaussian (normal) distribution function with the given offset and scale parameters. More... | |
| static AngleUnit | getAngleUnit (void) |
| Get the unit being used for angles. More... | |
| static int | IAbs (int iValue) |
| static int | ICeil (float fValue) |
| static int | IFloor (float fValue) |
| static bool | intersects (const Plane &plane, const AxisAlignedBox &box) |
| Plane / box intersection test. More... | |
| static RayTestResult | intersects (const Ray &ray, const AxisAlignedBox &box) |
| Ray / box intersection. More... | |
| static bool | intersects (const Ray &ray, const AxisAlignedBox &box, Real *d1, Real *d2) |
| Ray / box intersection, returns boolean result and two intersection distance. More... | |
| static RayTestResult | intersects (const Ray &ray, const Plane &plane) |
| Ray / plane intersection. More... | |
| static RayTestResult | intersects (const Ray &ray, const Sphere &sphere, bool discardInside=true) |
| Ray / sphere intersection. More... | |
| static RayTestResult | intersects (const Ray &ray, const std::list< Plane > &planeList, bool normalIsOutside) |
| static RayTestResult | intersects (const Ray &ray, const std::vector< Plane > &planeList, bool normalIsOutside) |
| Ray / convex plane list intersection test. More... | |
| static RayTestResult | intersects (const Ray &ray, const Vector3 &a, const Vector3 &b, const Vector3 &c, bool positiveSide=true, bool negativeSide=true) |
| Ray / triangle intersection [12], returns boolean result and distance. More... | |
| static RayTestResult | intersects (const Ray &ray, const Vector3 &a, const Vector3 &b, const Vector3 &c, const Vector3 &normal, bool positiveSide=true, bool negativeSide=true) |
| static bool | intersects (const Sphere &sphere, const AxisAlignedBox &box) |
| Sphere / box intersection test. More... | |
| static bool | intersects (const Sphere &sphere, const Plane &plane) |
| Sphere / plane intersection test. More... | |
| static Real | InvSqrt (Real fValue) |
| Inverse square root i.e. More... | |
| static int | ISign (int iValue) |
| static bool | isNaN (Real f) |
| template<typename V , typename T > | |
| static V | lerp (const V &v0, const V &v1, const T &t) |
| Simulate the shader function lerp which performers linear interpolation. More... | |
| static Real | Log (Real fValue) |
| static Real | Log2 (Real fValue) |
| static Real | LogN (Real base, Real fValue) |
| static Matrix3 | lookRotation (const Vector3 &direction, const Vector3 &yaw) |
| Create a rotation matrix from direction and yaw. More... | |
| static Matrix4 | makePerspectiveMatrix (Real left, Real right, Real bottom, Real top, Real zNear, Real zFar) |
| This creates 'uniform' perspective projection matrix, which depth range [-1,1], right-handed rules. More... | |
| static Affine3 | makeViewMatrix (const Vector3 &position, const Quaternion &orientation, const Affine3 *reflectMatrix=0) |
| This creates a view matrix. More... | |
| static bool | pointInTri2D (const Vector2 &p, const Vector2 &a, const Vector2 &b, const Vector2 &c) |
| Checks whether a given point is inside a triangle, in a 2-dimensional (Cartesian) space. More... | |
| static bool | pointInTri3D (const Vector3 &p, const Vector3 &a, const Vector3 &b, const Vector3 &c, const Vector3 &normal) |
| Checks whether a given 3D point is inside a triangle. More... | |
| static Real | Pow (Real fBase, Real fExponent) |
| static float | RadiansToAngleUnits (float radians) |
| Convert from radians to the current AngleUnit . More... | |
| static float | RadiansToDegrees (float radians) |
| static float | RangeRandom (float fLow, float fHigh) |
| Generate a random number within the range provided. More... | |
| static bool | RealEqual (Real a, Real b, Real tolerance=std::numeric_limits< Real >::epsilon()) |
| Compare 2 reals, using tolerance for inaccuracies. More... | |
| static double | saturate (double t) |
| static float | saturate (float t) |
| Simulate the shader function saturate that clamps a parameter value between 0 and 1. More... | |
| static void | setAngleUnit (AngleUnit unit) |
| These functions used to set the assumed angle units (radians or degrees) expected when using the Angle type. More... | |
| static void | SetRandomValueProvider (RandomValueProvider *provider) |
| static Degree | Sign (const Degree &dValue) |
| static Radian | Sign (const Radian &rValue) |
| static Real | Sign (Real fValue) |
| static float | Sin (const Radian &fValue, bool useTables=false) |
| Sine function. More... | |
| static float | Sin (Real fValue, bool useTables=false) |
| Sine function. More... | |
| static Real | Sqr (Real fValue) |
| Squared function. More... | |
| static Degree | Sqrt (const Degree &fValue) |
| Square root function. More... | |
| static Radian | Sqrt (const Radian &fValue) |
| Square root function. More... | |
| static Real | Sqrt (Real fValue) |
| Square root function. More... | |
| static float | SymmetricRandom () |
| Generate a random number in the range [-1,1]. More... | |
| static float | Tan (const Radian &fValue, bool useTables=false) |
| Tangent function. More... | |
| static float | Tan (Real fValue, bool useTables=false) |
| Tangent function. More... | |
| static uint16 | uint16Cast (size_t t) |
| saturated cast of size_t to uint16 More... | |
| static float | UnitRandom () |
| Generate a random number of unit length. More... | |
Static Public Attributes | |
| static constexpr float | fDeg2Rad = PI / Real(180.0) |
| static constexpr float | fRad2Deg = Real(180.0) / PI |
| static constexpr Real | HALF_PI = Real( 0.5 * PI ) |
| static constexpr Real | LOG2 = static_cast<Real> (0.69314718055994530942) |
| Stored value of log(2) for frequent use. More... | |
| static constexpr Real | NEG_INFINITY = -std::numeric_limits<Real>::infinity() |
| static constexpr Real | PI = static_cast<Real> (3.14159265358979323846) |
| static constexpr Real | POS_INFINITY = std::numeric_limits<Real>::infinity() |
| static constexpr Real | TWO_PI = Real( 2.0 * PI ) |
Class to provide access to common mathematical functions.
The angular units used by the API.
This functionality is now deprecated in favor of discreet angular unit types ( see Degree and Radian above ). The only place this functionality is actually still used is when parsing files. Search for usage of the Angle class for those instances
| Enumerator | |
|---|---|
| AU_DEGREE | |
| AU_RADIAN | |
| Ogre::Math::Math | ( | unsigned int | trigTableSize = 4096 | ) |
Default constructor.
| trigTableSize | Optional parameter to set the size of the tables used to implement Sin, Cos, Tan |
| Ogre::Math::~Math | ( | ) |
Default destructor.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Absolute value function.
| fValue | The value whose absolute value will be returned. |
Referenced by Ogre::VectorBase< 3, Real >::absDotProduct(), Ogre::VectorBase< 3, Real >::directionEquals(), Ogre::Quaternion::equals(), Ogre::VectorBase< 3, Real >::getRotationTo(), Ogre::Ray::intersects(), Ogre::Sphere::intersects(), Ogre::Volume::OctreeNode::isIsoSurfaceNear(), Ogre::VectorBase< 3, Real >::perpendicular(), Ogre::VectorBase< 3, Real >::primaryAxis(), and Ogre::AxisAlignedBox::transform().
Absolute value function.
| dValue | The value, in degrees, whose absolute value will be returned. |
References Ogre::Degree::valueDegrees().
Absolute value function.
| rValue | The value, in radians, whose absolute value will be returned. |
References Ogre::Radian::valueRadians().
Arc cosine function.
| fValue | The value whose arc cosine will be returned. |
Referenced by Ogre::Vector< dims, T >::angleBetween(), Ogre::VectorBase< 3, Real >::directionEquals(), and Ogre::Quaternion::equals().
Arc sine function.
| fValue | The value whose arc sine will be returned. |
|
inlinestatic |
Arc tangent function.
| fValue | The value whose arc tangent will be returned. |
|
inlinestatic |
Arc tangent between two values function.
| fY | The first value to calculate the arc tangent with. |
| fX | The second value to calculate the arc tangent with. |
Ceiling function Returns the smallest following integer.
(example: Ceil(1.1) = 2)
| fValue | The value to round up to the nearest integer. |
|
inlinestatic |
Referenced by Ogre::DualQuaternion::isNaN(), Ogre::Quaternion::isNaN(), and Ogre::Vector< dims, T >::isNaN().
|
inlinestatic |
Cosine function.
| fValue | Angle in radians |
| useTables | If true, uses lookup tables rather than calculation - faster but less accurate. |
References Ogre::Radian::valueRadians().
Referenced by Ogre::VectorBase< 2, Real >::randomDeviant().
|
inlinestatic |
Cosine function.
| fValue | Angle in radians |
| useTables | If true, uses lookup tables rather than calculation - faster but less accurate. |
Floor function Returns the largest previous integer.
(example: Floor(1.9) = 1)
| fValue | The value to round down to the nearest integer. |
References Ogre::Radian::valueRadians().
References Ogre::Degree::valueDegrees().
|
inlinestatic |
Simulate the shader function saturate that clamps a parameter value between 0 and 1.
|
inlinestatic |
|
inlinestatic |
saturated cast of size_t to uint16
|
inlinestatic |
Simulate the shader function lerp which performers linear interpolation.
given 3 parameters v0, v1 and t the function returns the value of (1 - t)* v0 + t * v1. where v0 and v1 are matching vector or scalar types and t can be either a scalar or a vector of the same type as a and b.
|
inlinestatic |
Sine function.
| fValue | Angle in radians |
| useTables | If true, uses lookup tables rather than calculation - faster but less accurate. |
References Ogre::Radian::valueRadians().
Referenced by Ogre::VectorBase< 2, Real >::randomDeviant().
|
inlinestatic |
Sine function.
| fValue | Angle in radians |
| useTables | If true, uses lookup tables rather than calculation - faster but less accurate. |
Squared function.
| fValue | The value to be squared (fValue^2) |
Referenced by Ogre::Sphere::intersects(), and Ogre::Sphere::merge().
Square root function.
| fValue | The value whose square root will be calculated. |
Referenced by Ogre::AxisAlignedBox::distance(), Ogre::VectorBase< 3, Real >::getRotationTo(), Ogre::Ray::intersects(), Ogre::Vector< dims, T >::length(), Ogre::Sphere::merge(), and Ogre::Quaternion::Norm().
Square root function.
| fValue | The value, in radians, whose square root will be calculated. |
References Ogre::Radian::valueRadians().
Square root function.
| fValue | The value, in degrees, whose square root will be calculated. |
References Ogre::Degree::valueDegrees().
Inverse square root i.e.
1 / Sqrt(x), good for vector normalisation.
| fValue | The value whose inverse square root will be calculated. |
|
static |
Generate a random number of unit length.
Referenced by Ogre::VectorBase< 3, Real >::randomDeviant().
|
inlinestatic |
Generate a random number within the range provided.
| fLow | The lower bound of the range. |
| fHigh | The upper bound of the range. |
Referenced by Ogre::VectorBase< 2, Real >::randomDeviant().
|
inlinestatic |
Generate a random number in the range [-1,1].
|
static |
|
inlinestatic |
Tangent function.
| fValue | Angle in radians |
| useTables | If true, uses lookup tables rather than calculation - faster but less accurate. |
References Ogre::Radian::valueRadians().
|
inlinestatic |
Tangent function.
| fValue | Angle in radians |
| useTables | If true, uses lookup tables rather than calculation - faster but less accurate. |
|
inlinestatic |
Referenced by Ogre::Degree::valueRadians().
|
inlinestatic |
Referenced by Ogre::Radian::valueDegrees().
|
static |
|
static |
Get the unit being used for angles.
|
static |
Convert from the current AngleUnit to radians.
Referenced by Ogre::Angle::operator Radian().
|
static |
Convert from radians to the current AngleUnit .
Referenced by Ogre::Radian::valueAngleUnits().
|
static |
Convert from the current AngleUnit to degrees.
Referenced by Ogre::Angle::operator Degree().
|
static |
Convert from degrees to the current AngleUnit.
Referenced by Ogre::Degree::valueAngleUnits().
|
static |
Checks whether a given point is inside a triangle, in a 2-dimensional (Cartesian) space.
| p | The point. |
| a | The triangle's first vertex. |
| b | The triangle's second vertex. |
| c | The triangle's third vertex. |
|
static |
Checks whether a given 3D point is inside a triangle.
| p | p The point. |
| a | The triangle's first vertex. |
| b | The triangle's second vertex. |
| c | The triangle's third vertex. |
| normal | The triangle plane's normal (passed in rather than calculated on demand since the caller may already have it) |
|
static |
Ray / box intersection.
|
static |
Ray / box intersection, returns boolean result and two intersection distance.
| ray | The ray. |
| box | The box. |
| d1 | A real pointer to retrieve the near intersection distance from the ray origin, maybe null which means don't care about the near intersection distance. |
| d2 | A real pointer to retrieve the far intersection distance from the ray origin, maybe null which means don't care about the far intersection distance. |
|
static |
Ray / triangle intersection [12], returns boolean result and distance.
| ray | The ray. |
| a | The triangle's first vertex. |
| b | The triangle's second vertex. |
| c | The triangle's third vertex. |
| positiveSide | Intersect with "positive side" of the triangle (as determined by vertex winding) |
| negativeSide | Intersect with "negative side" of the triangle (as determined by vertex winding) |
|
inlinestatic |
|
static |
Sphere / box intersection test.
|
static |
Ray / convex plane list intersection test.
| ray | The ray to test with |
| planeList | List of planes which form a convex volume |
| normalIsOutside | Does the normal point outside the volume |
|
static |
|
inlinestatic |
Compare 2 reals, using tolerance for inaccuracies.
Referenced by Ogre::VectorBase< 3, Real >::getRotationTo(), Ogre::Matrix3::hasScale(), and Ogre::Vector< dims, T >::positionEquals().
Build a reflection matrix for the passed in plane.
|
static |
Generates a value based on the Gaussian (normal) distribution function with the given offset and scale parameters.
|
inlinestatic |
Clamp a value within an inclusive range.
Referenced by Ogre::Vector< dims, T >::angleBetween().
|
static |
This creates a view matrix.
[ Lx Uy Dz Tx ] [ Lx Uy Dz Ty ] [ Lx Uy Dz Tz ] [ 0 0 0 1 ]
Where T = -(Transposed(Rot) * Pos)
|
static |
This creates 'uniform' perspective projection matrix, which depth range [-1,1], right-handed rules.
[ A 0 C 0 ] [ 0 B D 0 ] [ 0 0 q qn ] [ 0 0 -1 0 ]
A = 2 * near / (right - left) B = 2 * near / (top - bottom) C = (right + left) / (right - left) D = (top + bottom) / (top - bottom) q = - (far + near) / (far - near) qn = - 2 * (far * near) / (far - near)
|
static |
Get the radius of the origin-centered bounding sphere from the bounding box.
|
static |
Get the radius of the bbox-centered bounding sphere from the bounding box.
Stored value of log(2) for frequent use.
Referenced by Ogre::VectorBase< 2, Real >::angleTo(), and Ogre::VectorBase< 3, Real >::randomDeviant().