51 lines
1.8 KiB
C++
Executable File
51 lines
1.8 KiB
C++
Executable File
//-----------------------------------------------------------------------------
|
|
// Torque Game Engine
|
|
// Copyright (C) GarageGames.com, Inc.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef _MATHUTILS_H_
|
|
#define _MATHUTILS_H_
|
|
|
|
class Point3F;
|
|
class MatrixF;
|
|
|
|
/// Miscellaneous math utility functions.
|
|
namespace MathUtils
|
|
{
|
|
|
|
/// Creates orientation matrix from a direction vector. Assumes ( 0 0 1 ) is up.
|
|
MatrixF createOrientFromDir( Point3F &direction );
|
|
|
|
/// Creates random direction given angle parameters similar to the particle system.
|
|
///
|
|
/// The angles are relative to the specified axis. Both phi and theta are in degrees.
|
|
Point3F randomDir( Point3F &axis, F32 thetaAngleMin, F32 thetaAngleMax, F32 phiAngleMin = 0.0f, F32 phiAngleMax = 360.0f );
|
|
|
|
/// Returns yaw and pitch angles from a given vector.
|
|
///
|
|
/// Angles are in RADIANS.
|
|
///
|
|
/// Assumes north is (0.0, 1.0, 0.0), the degrees move upwards clockwise.
|
|
///
|
|
/// The range of yaw is 0 - 2PI. The range of pitch is -PI/2 - PI/2.
|
|
///
|
|
/// <b>ASSUMES Z AXIS IS UP</b>
|
|
void getAnglesFromVector( VectorF &vec, F32 &yawAng, F32 &pitchAng );
|
|
|
|
/// Returns vector from given yaw and pitch angles.
|
|
///
|
|
/// Angles are in RADIANS.
|
|
///
|
|
/// Assumes north is (0.0, 1.0, 0.0), the degrees move upwards clockwise.
|
|
///
|
|
/// The range of yaw is 0 - 2PI. The range of pitch is -PI/2 - PI/2.
|
|
///
|
|
/// <b>ASSUMES Z AXIS IS UP</b>
|
|
void getVectorFromAngles( VectorF &vec, F32 &yawAng, F32 &pitchAng );
|
|
|
|
// transform bounding box making sure to keep original box entirely contained - JK...
|
|
void transformBoundingBox(const Box3F &sbox, const MatrixF &mat, Box3F &dbox);
|
|
}
|
|
|
|
#endif // _MATHUTILS_H_
|