Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Ogre::Math Class Reference

Class to provide access to common mathematical functions. More...

#include <OgreMath.h>

List of all members.

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.

 ~Math ()
 Default destructor.


Static Public Member Functions

int IAbs (int iValue)
int ICeil (float fValue)
int IFloor (float fValue)
int ISign (int iValue)
Real Abs (Real fValue)
Degree Abs (const Degree &dValue)
Radian Abs (const Radian &rValue)
Radian ACos (Real fValue)
Radian ASin (Real fValue)
Radian ATan (Real fValue)
Radian ATan2 (Real fY, Real fX)
Real Ceil (Real fValue)
Real Cos (const Radian &fValue, bool useTables=false)
 Cosine function.

Real Cos (Real fValue, bool useTables=false)
 Cosine function.

Real Exp (Real fValue)
Real Floor (Real fValue)
Real Log (Real fValue)
Real Pow (Real fBase, Real fExponent)
Real Sign (Real fValue)
Radian Sign (const Radian &rValue)
Degree Sign (const Degree &dValue)
Real Sin (const Radian &fValue, bool useTables=false)
 Sine function.

Real Sin (Real fValue, bool useTables=false)
 Sine function.

Real Sqr (Real fValue)
Real Sqrt (Real fValue)
Radian Sqrt (const Radian &fValue)
Degree Sqrt (const Degree &fValue)
Real InvSqrt (Real fValue)
 Inverse square root i.e.

Real UnitRandom ()
Real RangeRandom (Real fLow, Real fHigh)
Real SymmetricRandom ()
Real Tan (const Radian &fValue, bool useTables=false)
 Tangent function.

Real Tan (Real fValue, bool useTables=false)
 Tangent function.

Real DegreesToRadians (Real degrees)
Real RadiansToDegrees (Real radians)
void setAngleUnit (AngleUnit unit)
 These functions used to set the assumed angle units (radians or degrees) expected when using the Angle type.

AngleUnit getAngleUnit (void)
 Get the unit being used for angles.

Real AngleUnitsToRadians (Real units)
 Convert from the current AngleUnit to radians.

Real RadiansToAngleUnits (Real radians)
 Convert from radians to the current AngleUnit .

Real AngleUnitsToDegrees (Real units)
 Convert from the current AngleUnit to degrees.

Real DegreesToAngleUnits (Real degrees)
 Convert from degrees to the current AngleUnit.

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.

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.

std::pair< bool, Realintersects (const Ray &ray, const Plane &plane)
 Ray / plane intersection, returns boolean result and distance.

std::pair< bool, Realintersects (const Ray &ray, const Sphere &sphere, bool discardInside=true)
 Ray / sphere intersection, returns boolean result and distance.

std::pair< bool, Realintersects (const Ray &ray, const AxisAlignedBox &box)
 Ray / box intersection, returns boolean result and distance.

bool intersects (const Ray &ray, const AxisAlignedBox &box, Real *d1, Real *d2)
 Ray / box intersection, returns boolean result and two intersection distance.

std::pair< bool, Realintersects (const Ray &ray, const Vector3 &a, const Vector3 &b, const Vector3 &c, const Vector3 &normal, bool positiveSide=true, bool negativeSide=true)
 Ray / triangle intersection, returns boolean result and distance.

std::pair< bool, Realintersects (const Ray &ray, const Vector3 &a, const Vector3 &b, const Vector3 &c, bool positiveSide=true, bool negativeSide=true)
 Ray / triangle intersection, returns boolean result and distance.

bool intersects (const Sphere &sphere, const AxisAlignedBox &box)
 Sphere / box intersection test.

bool intersects (const Plane &plane, const AxisAlignedBox &box)
 Plane / box intersection test.

std::pair< bool, Realintersects (const Ray &ray, const std::vector< Plane > &planeList, bool normalIsOutside)
 Ray / convex plane list intersection test.

std::pair< bool, Realintersects (const Ray &ray, const std::list< Plane > &planeList, bool normalIsOutside)
 Ray / convex plane list intersection test.

bool intersects (const Sphere &sphere, const Plane &plane)
 Sphere / plane intersection test.

bool RealEqual (Real a, Real b, Real tolerance=std::numeric_limits< Real >::epsilon())
 Compare 2 reals, using tolerance for inaccuracies.

Vector3 calculateTangentSpaceVector (const Vector3 &position1, const Vector3 &position2, const Vector3 &position3, Real u1, Real v1, Real u2, Real v2, Real u3, Real v3)
 Calculates the tangent space vector for a given set of positions / texture coords.

Matrix4 buildReflectionMatrix (const Plane &p)
 Build a reflection matrix for the passed in plane.

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.

Vector3 calculateBasicFaceNormal (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3)
 Calculate a face normal, no w-information.

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.

Vector3 calculateBasicFaceNormalWithoutNormalize (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3)
 Calculate a face normal without normalize, no w-information.


Static Public Attributes

const Real POS_INFINITY
const Real NEG_INFINITY
const Real PI
const Real TWO_PI
const Real HALF_PI
const Real fDeg2Rad
const Real fRad2Deg

Protected Member Functions

void buildTrigTables ()
 Private function to build trig tables.


Static Protected Member Functions

Real SinTable (Real fValue)
Real TanTable (Real fValue)

Static Protected Attributes

AngleUnit msAngleUnit
int mTrigTableSize
 Size of the trig tables as determined by constructor.

Real mTrigTableFactor
 Radian -> index factor value ( mTrigTableSize / 2 * PI ).

RealmSinTable
RealmTanTable


Detailed Description

Class to provide access to common mathematical functions.

Remarks:
Most of the maths functions are aliased versions of the C runtime library functions. They are aliased here to provide future optimisation opportunities, either from faster RTLs or custom math approximations.
Note:

This is based on MgcMath.h from Wild Magic.

Definition at line 165 of file OgreMath.h.


Member Enumeration Documentation

enum Ogre::Math::AngleUnit
 

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

Enumeration values:
AU_DEGREE 
AU_RADIAN 

Definition at line 173 of file OgreMath.h.


Constructor & Destructor Documentation

Ogre::Math::Math unsigned int  trigTableSize = 4096  ) 
 

Default constructor.

Parameters:
trigTableSize Optional parameter to set the size of the tables used to implement Sin, Cos, Tan

Ogre::Math::~Math  ) 
 

Default destructor.


Member Function Documentation

Radian Ogre::Math::Abs const Radian rValue  )  [static]
 

Definition at line 216 of file OgreMath.h.

References Ogre::Radian::valueRadians().

Degree Ogre::Math::Abs const Degree dValue  )  [static]
 

Definition at line 215 of file OgreMath.h.

References Ogre::Degree::valueDegrees().

Real Ogre::Math::Abs Real  fValue  )  [static]
 

Definition at line 214 of file OgreMath.h.

References Ogre::Real.

Radian Ogre::Math::ACos Real  fValue  )  [static]
 

Real Ogre::Math::AngleUnitsToDegrees Real  units  )  [static]
 

Convert from the current AngleUnit to degrees.

Real Ogre::Math::AngleUnitsToRadians Real  units  )  [static]
 

Convert from the current AngleUnit to radians.

Radian Ogre::Math::ASin Real  fValue  )  [static]
 

Radian Ogre::Math::ATan Real  fValue  )  [static]
 

Definition at line 219 of file OgreMath.h.

References Ogre::Real.

Radian Ogre::Math::ATan2 Real  fY,
Real  fX
[static]
 

Definition at line 220 of file OgreMath.h.

References Ogre::Real.

Matrix4 Ogre::Math::buildReflectionMatrix const Plane p  )  [static]
 

Build a reflection matrix for the passed in plane.

void Ogre::Math::buildTrigTables  )  [protected]
 

Private function to build trig tables.

Vector3 Ogre::Math::calculateBasicFaceNormal const Vector3 v1,
const Vector3 v2,
const Vector3 v3
[static]
 

Calculate a face normal, no w-information.

Vector3 Ogre::Math::calculateBasicFaceNormalWithoutNormalize const Vector3 v1,
const Vector3 v2,
const Vector3 v3
[static]
 

Calculate a face normal without normalize, no w-information.

Vector4 Ogre::Math::calculateFaceNormal const Vector3 v1,
const Vector3 v2,
const Vector3 v3
[static]
 

Calculate a face normal, including the w component which is the offset from the origin.

Vector4 Ogre::Math::calculateFaceNormalWithoutNormalize const Vector3 v1,
const Vector3 v2,
const Vector3 v3
[static]
 

Calculate a face normal without normalize, including the w component which is the offset from the origin.

Vector3 Ogre::Math::calculateTangentSpaceVector const Vector3 position1,
const Vector3 position2,
const Vector3 position3,
Real  u1,
Real  v1,
Real  u2,
Real  v2,
Real  u3,
Real  v3
[static]
 

Calculates the tangent space vector for a given set of positions / texture coords.

Real Ogre::Math::Ceil Real  fValue  )  [static]
 

Definition at line 221 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::Cos Real  fValue,
bool  useTables = false
[static]
 

Cosine function.

Parameters:
fValue Angle in radians
useTables If true, uses lookup tables rather than calculation - faster but less accurate.

Definition at line 240 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::Cos const Radian fValue,
bool  useTables = false
[static]
 

Cosine function.

Parameters:
fValue Angle in radians
useTables If true, uses lookup tables rather than calculation - faster but less accurate.

Definition at line 230 of file OgreMath.h.

References Ogre::Real, and Ogre::Radian::valueRadians().

Real Ogre::Math::DegreesToAngleUnits Real  degrees  )  [static]
 

Convert from degrees to the current AngleUnit.

Real Ogre::Math::DegreesToRadians Real  degrees  )  [static]
 

Definition at line 323 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::Exp Real  fValue  )  [static]
 

Definition at line 244 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::Floor Real  fValue  )  [static]
 

Definition at line 246 of file OgreMath.h.

References Ogre::Real.

AngleUnit Ogre::Math::getAngleUnit void   )  [static]
 

Get the unit being used for angles.

int Ogre::Math::IAbs int  iValue  )  [static]
 

Definition at line 209 of file OgreMath.h.

int Ogre::Math::ICeil float  fValue  )  [static]
 

Definition at line 210 of file OgreMath.h.

int Ogre::Math::IFloor float  fValue  )  [static]
 

Definition at line 211 of file OgreMath.h.

bool Ogre::Math::intersects const Sphere sphere,
const Plane plane
[static]
 

Sphere / plane intersection test.

Remarks:
NB just do a plane.getDistance(sphere.getCenter()) for more detail!

std::pair<bool, Real> Ogre::Math::intersects const Ray ray,
const std::list< Plane > &  planeList,
bool  normalIsOutside
[static]
 

Ray / convex plane list intersection test.

Parameters:
ray The ray to test with
plaeList List of planes which form a convex volume
normalIsOutside Does the normal point outside the volume

std::pair<bool, Real> Ogre::Math::intersects const Ray ray,
const std::vector< Plane > &  planeList,
bool  normalIsOutside
[static]
 

Ray / convex plane list intersection test.

Parameters:
ray The ray to test with
plaeList List of planes which form a convex volume
normalIsOutside Does the normal point outside the volume

bool Ogre::Math::intersects const Plane plane,
const AxisAlignedBox box
[static]
 

Plane / box intersection test.

bool Ogre::Math::intersects const Sphere sphere,
const AxisAlignedBox box
[static]
 

Sphere / box intersection test.

std::pair<bool, Real> Ogre::Math::intersects const Ray ray,
const Vector3 a,
const Vector3 b,
const Vector3 c,
bool  positiveSide = true,
bool  negativeSide = true
[static]
 

Ray / triangle intersection, returns boolean result and distance.

Parameters:
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
negativeSide Intersect with "negative side" of the triangle
Returns:
If the ray is intersects the triangle, a pair of true and the distance between intersection point and ray origin returned.
If the ray isn't intersects the triangle, a pair of false and 0 returned.

std::pair<bool, Real> Ogre::Math::intersects const Ray ray,
const Vector3 a,
const Vector3 b,
const Vector3 c,
const Vector3 normal,
bool  positiveSide = true,
bool  negativeSide = true
[static]
 

Ray / triangle intersection, returns boolean result and distance.

Parameters:
ray The ray.
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 callermay already have it), doesn't need normalised since we don't care.
positiveSide Intersect with "positive side" of the triangle
negativeSide Intersect with "negative side" of the triangle
Returns:
If the ray is intersects the triangle, a pair of true and the distance between intersection point and ray origin returned.
If the ray isn't intersects the triangle, a pair of false and 0 returned.

bool Ogre::Math::intersects const Ray ray,
const AxisAlignedBox box,
Real d1,
Real d2
[static]
 

Ray / box intersection, returns boolean result and two intersection distance.

Parameters:
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.
Returns:
If the ray is intersects the box, true is returned, and the near intersection distance is return by d1, the far intersection distance is return by d2. Guarantee 0 <= d1 <= d2.
If the ray isn't intersects the box, false is returned, and d1 and d2 is unmodified.

std::pair<bool, Real> Ogre::Math::intersects const Ray ray,
const AxisAlignedBox box
[static]
 

Ray / box intersection, returns boolean result and distance.

std::pair<bool, Real> Ogre::Math::intersects const Ray ray,
const Sphere sphere,
bool  discardInside = true
[static]
 

Ray / sphere intersection, returns boolean result and distance.

std::pair<bool, Real> Ogre::Math::intersects const Ray ray,
const Plane plane
[static]
 

Ray / plane intersection, returns boolean result and distance.

Real Ogre::Math::InvSqrt Real  fValue  )  [static]
 

Inverse square root i.e.

1 / Sqrt(x), good for vector normalisation.

int Ogre::Math::ISign int  iValue  )  [static]
 

Real Ogre::Math::Log Real  fValue  )  [static]
 

Definition at line 248 of file OgreMath.h.

References Ogre::Real.

bool Ogre::Math::pointInTri2D const Vector2 p,
const Vector2 a,
const Vector2 b,
const Vector2 c
[static]
 

Checks whether a given point is inside a triangle, in a 2-dimensional (Cartesian) space.

Remarks:
The vertices of the triangle must be given in either trigonometrical (anticlockwise) or inverse trigonometrical (clockwise) order.
Parameters:
p The point.
a The triangle's first vertex.
b The triangle's second vertex.
c The triangle's third vertex.
Returns:
If the point resides in the triangle, true is returned.
If the point is outside the triangle, false is returned.

bool Ogre::Math::pointInTri3D const Vector3 p,
const Vector3 a,
const Vector3 b,
const Vector3 c,
const Vector3 normal
[static]
 

Checks whether a given 3D point is inside a triangle.

Remarks:
The vertices of the triangle must be given in either trigonometrical (anticlockwise) or inverse trigonometrical (clockwise) order, and the point must be guaranteed to be in the same plane as the triangle
Parameters:
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 callermay already have it)
Returns:
If the point resides in the triangle, true is returned.
If the point is outside the triangle, false is returned.

Real Ogre::Math::Pow Real  fBase,
Real  fExponent
[static]
 

Definition at line 250 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::RadiansToAngleUnits Real  radians  )  [static]
 

Convert from radians to the current AngleUnit .

Real Ogre::Math::RadiansToDegrees Real  radians  )  [static]
 

Definition at line 324 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::RangeRandom Real  fLow,
Real  fHigh
[static]
 

bool Ogre::Math::RealEqual Real  a,
Real  b,
Real  tolerance = std::numeric_limits< Real >::epsilon()
[static]
 

Compare 2 reals, using tolerance for inaccuracies.

void Ogre::Math::setAngleUnit AngleUnit  unit  )  [static]
 

These functions used to set the assumed angle units (radians or degrees) expected when using the Angle type.

You can set this directly after creating a new Root, and also before/after resource creation, depending on whether you want the change to affect resource files.

Degree Ogre::Math::Sign const Degree dValue  )  [static]
 

Definition at line 257 of file OgreMath.h.

References Ogre::Degree::valueDegrees().

Radian Ogre::Math::Sign const Radian rValue  )  [static]
 

Definition at line 253 of file OgreMath.h.

References Ogre::Radian::valueRadians().

Real Ogre::Math::Sign Real  fValue  )  [static]
 

Real Ogre::Math::Sin Real  fValue,
bool  useTables = false
[static]
 

Sine function.

Parameters:
fValue Angle in radians
useTables If true, uses lookup tables rather than calculation - faster but less accurate.

Definition at line 279 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::Sin const Radian fValue,
bool  useTables = false
[static]
 

Sine function.

Parameters:
fValue Angle in radians
useTables If true, uses lookup tables rather than calculation - faster but less accurate.

Definition at line 269 of file OgreMath.h.

References Ogre::Real, and Ogre::Radian::valueRadians().

Real Ogre::Math::SinTable Real  fValue  )  [static, protected]
 

Real Ogre::Math::Sqr Real  fValue  )  [static]
 

Definition at line 283 of file OgreMath.h.

References Ogre::Real.

Degree Ogre::Math::Sqrt const Degree fValue  )  [static]
 

Definition at line 289 of file OgreMath.h.

References Ogre::Degree::valueDegrees().

Radian Ogre::Math::Sqrt const Radian fValue  )  [static]
 

Definition at line 287 of file OgreMath.h.

References Ogre::Radian::valueRadians().

Real Ogre::Math::Sqrt Real  fValue  )  [static]
 

Definition at line 285 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::SymmetricRandom  )  [static]
 

Real Ogre::Math::Tan Real  fValue,
bool  useTables = false
[static]
 

Tangent function.

Parameters:
fValue Angle in radians
useTables If true, uses lookup tables rather than calculation - faster but less accurate.

Definition at line 319 of file OgreMath.h.

References Ogre::Real.

Real Ogre::Math::Tan const Radian fValue,
bool  useTables = false
[static]
 

Tangent function.

Parameters:
fValue Angle in radians
useTables If true, uses lookup tables rather than calculation - faster but less accurate.

Definition at line 309 of file OgreMath.h.

References Ogre::Real, and Ogre::Radian::valueRadians().

Real Ogre::Math::TanTable Real  fValue  )  [static, protected]
 

Real Ogre::Math::UnitRandom  )  [static]
 


Member Data Documentation

const Real Ogre::Math::fDeg2Rad [static]
 

Definition at line 536 of file OgreMath.h.

const Real Ogre::Math::fRad2Deg [static]
 

Definition at line 537 of file OgreMath.h.

const Real Ogre::Math::HALF_PI [static]
 

Definition at line 535 of file OgreMath.h.

AngleUnit Ogre::Math::msAngleUnit [static, protected]
 

Definition at line 181 of file OgreMath.h.

Real* Ogre::Math::mSinTable [static, protected]
 

Definition at line 188 of file OgreMath.h.

Real* Ogre::Math::mTanTable [static, protected]
 

Definition at line 189 of file OgreMath.h.

Real Ogre::Math::mTrigTableFactor [static, protected]
 

Radian -> index factor value ( mTrigTableSize / 2 * PI ).

Definition at line 187 of file OgreMath.h.

int Ogre::Math::mTrigTableSize [static, protected]
 

Size of the trig tables as determined by constructor.

Definition at line 184 of file OgreMath.h.

const Real Ogre::Math::NEG_INFINITY [static]
 

Definition at line 532 of file OgreMath.h.

const Real Ogre::Math::PI [static]
 

Definition at line 533 of file OgreMath.h.

const Real Ogre::Math::POS_INFINITY [static]
 

Definition at line 531 of file OgreMath.h.

const Real Ogre::Math::TWO_PI [static]
 

Definition at line 534 of file OgreMath.h.


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

Copyright © 2000-2005 by The OGRE Team
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Mar 12 14:40:01 2006