Files
OpenSceneGraph/include/osg/Math
Robert Osfield f848c54ba3 Made the following name changes to Matrix and Quat to clean them up and make
the functionality clear given the name.  This will break user code unfortunately
so please be away of the following mapping.

  osg::Matrix::makeTrans(..)?\026 -> osg::Matrix::makeTranslate(..)
  osg::Matrix::makeRot(..)?\026   -> osg::Matrix::makeRotate(..)
  osg::Matrix::trans(..)?\026     -> osg::Matrix::translate(..)

  osg::Quat::makeRot(..)?\026     -> osg::Quat::makeRotate(..)

Also updated the rest of the OSG distribution to use the new names, and
have removed the old deprecated Matrix methods too.
2001-12-12 20:29:10 +00:00

98 lines
2.6 KiB
Plaintext

//C++ header - Open Scene Graph - Copyright (C) 1998-2001 Robert Osfield
//Distributed under the terms of the GNU Library General Public License (LGPL)
//as published by the Free Software Foundation.
#ifndef __OSG_MATH
#define __OSG_MATH
#include <math.h>
#if defined(WIN32) || defined (macintosh)
#include <float.h>
#define M_E 2.7182818284590452354
#define M_LOG2E 1.4426950408889634074
#define M_LOG10E 0.43429448190325182765
#define M_LN2 0.69314718055994530942
#define M_LN10 2.30258509299404568402
#define M_PI 3.14159265358979323846
#define M_PI_2 1.57079632679489661923
#define M_PI_4 0.78539816339744830962
#define M_1_PI 0.31830988618379067154
#define M_2_PI 0.63661977236758134308
#define M_2_SQRTPI 1.12837916709551257390
#define M_SQRT2 1.41421356237309504880
#define M_SQRT1_2 0.70710678118654752440
#endif
// PJA MAC OSX
// This appears to be the simplest way to get these defined under MACOSX
// where they arent in math.h
#ifndef acosf
#define acosf acos
#endif
#ifndef asinf
#define asinf asin
#endif
#ifndef cosf
#define cosf cos
#endif
#ifndef sinf
#define sinf sin
#endif
#ifndef logf
#define logf log
#endif
#ifndef floorf
#define floorf floor
#endif
#ifndef powf
#define powf pow
#endif
#ifndef sqrtf
#define sqrtf sqrt
#endif
#if defined(WIN32)
// needed for _isnan & _finite used below.
#include <float.h>
#endif
namespace osg {
inline double inDegrees(double angle) { return angle*M_PI/180.0; }
inline double inRadians(double angle) { return angle; }
inline double DegreesToRadians(double angle) { return angle*M_PI/180.0; }
inline double RadiansToDegrees(double angle) { return angle*180.0/M_PI; }
#ifdef WIN32
inline bool isNaN(float v) { return ::_isnan(v)!=0; }
inline bool isNaN(double v) { return ::_isnan(v)!=0; }
inline bool isInfinite(float v) { return !::_finite(v); }
inline bool isInfinite(double v) { return !::_finite(v); }
#elif __sgi
inline bool isNaN(float v) { return ::isnan(v); }
inline bool isNaN(double v) { return ::isnan(v); }
// can't find a function to test for infiniting on sgi yet..
inline bool isInfinite(float v) { return false; }
inline bool isInfinite(double v) { return false; }
#else
inline bool isNaN(float v) { return ::isnan(v); }
inline bool isNaN(double v) { return ::isnan(v); }
inline bool isInfinite(float v) { return ::isinf(v); }
inline bool isInfinite(double v) { return ::isinf(v); }
#endif
};
#endif // __OSG_MATH