2011-12-11 00:40:04 +00:00
|
|
|
/********************************************************************************
|
|
|
|
* ReactPhysics3D physics library, http://code.google.com/p/reactphysics3d/ *
|
|
|
|
* Copyright (c) 2010-2012 Daniel Chappuis *
|
|
|
|
*********************************************************************************
|
|
|
|
* *
|
|
|
|
* This software is provided 'as-is', without any express or implied warranty. *
|
|
|
|
* In no event will the authors be held liable for any damages arising from the *
|
|
|
|
* use of this software. *
|
|
|
|
* *
|
|
|
|
* Permission is granted to anyone to use this software for any purpose, *
|
|
|
|
* including commercial applications, and to alter it and redistribute it *
|
|
|
|
* freely, subject to the following restrictions: *
|
|
|
|
* *
|
|
|
|
* 1. The origin of this software must not be misrepresented; you must not claim *
|
|
|
|
* that you wrote the original software. If you use this software in a *
|
|
|
|
* product, an acknowledgment in the product documentation would be *
|
|
|
|
* appreciated but is not required. *
|
|
|
|
* *
|
|
|
|
* 2. Altered source versions must be plainly marked as such, and must not be *
|
|
|
|
* misrepresented as being the original software. *
|
|
|
|
* *
|
|
|
|
* 3. This notice may not be removed or altered from any source distribution. *
|
|
|
|
* *
|
|
|
|
********************************************************************************/
|
|
|
|
|
|
|
|
#ifndef CONFIGURATION_H
|
|
|
|
#define CONFIGURATION_H
|
|
|
|
|
2012-01-18 23:06:33 +00:00
|
|
|
// Libraries
|
|
|
|
#include <limits>
|
|
|
|
#include <cfloat>
|
2012-09-26 21:07:40 +00:00
|
|
|
#include <utility>
|
2012-01-18 23:06:33 +00:00
|
|
|
#include "decimal.h"
|
|
|
|
|
2011-12-11 00:40:04 +00:00
|
|
|
// Windows platform
|
2012-10-09 20:21:02 +00:00
|
|
|
#if defined(WIN32) ||defined(_WIN32) || defined(_WIN64) ||defined(__WIN32__) || defined(__WINDOWS__)
|
2011-12-11 00:40:04 +00:00
|
|
|
#define WINDOWS_OS
|
|
|
|
#elif defined(__APPLE__) // Apple platform
|
|
|
|
#define APPLE_OS
|
|
|
|
#elif defined(__linux__) || defined(linux) || defined(__linux) // Linux platform
|
|
|
|
#define LINUX_OS
|
|
|
|
#endif
|
|
|
|
|
2012-08-02 21:33:56 +00:00
|
|
|
// Namespace reactphysics3d
|
|
|
|
namespace reactphysics3d {
|
|
|
|
|
2012-10-09 20:21:02 +00:00
|
|
|
// ------------------- Type definitions ------------------- //
|
|
|
|
|
2012-01-18 23:06:33 +00:00
|
|
|
typedef unsigned int uint;
|
|
|
|
typedef long unsigned int luint;
|
2012-10-09 20:21:02 +00:00
|
|
|
typedef short unsigned int bodyindex;
|
2012-09-26 21:07:40 +00:00
|
|
|
typedef std::pair<bodyindex, bodyindex> bodyindexpair;
|
2012-01-18 23:06:33 +00:00
|
|
|
|
2012-10-09 20:21:02 +00:00
|
|
|
// ------------------- Constants ------------------- //
|
|
|
|
|
|
|
|
const reactphysics3d::decimal DECIMAL_SMALLEST = - std::numeric_limits<decimal>::max();
|
|
|
|
|
|
|
|
// Maximum decimal value
|
|
|
|
const reactphysics3d::decimal DECIMAL_LARGEST = std::numeric_limits<decimal>::max();
|
|
|
|
|
|
|
|
// Machine epsilon
|
|
|
|
const reactphysics3d::decimal MACHINE_EPSILON = std::numeric_limits<decimal>::epsilon();
|
|
|
|
|
|
|
|
// Infinity
|
|
|
|
const reactphysics3d::decimal DECIMAL_INFINITY = std::numeric_limits<decimal>::infinity();
|
|
|
|
|
|
|
|
// Pi constant
|
|
|
|
const reactphysics3d::decimal PI = 3.14159265;
|
|
|
|
|
|
|
|
// Default internal constant timestep in seconds
|
|
|
|
const reactphysics3d::decimal DEFAULT_TIMESTEP = 1.0 / 60.0;
|
|
|
|
|
|
|
|
// True if the deactivation (sleeping) of inactive bodies is enabled
|
|
|
|
const bool DEACTIVATION_ENABLED = true;
|
|
|
|
|
|
|
|
// // Object margin for collision detection in cm (For GJK-EPA Algorithm)
|
|
|
|
const reactphysics3d::decimal OBJECT_MARGIN = 0.04;
|
|
|
|
|
|
|
|
// Friction coefficient
|
|
|
|
const reactphysics3d::decimal FRICTION_COEFFICIENT = 0.4;
|
|
|
|
|
|
|
|
// Distance threshold for two contact points for a valid persistent contact
|
|
|
|
const reactphysics3d::decimal PERSISTENT_CONTACT_DIST_THRESHOLD = 0.02;
|
|
|
|
|
|
|
|
// Maximum number of bodies
|
|
|
|
const int NB_MAX_BODIES = 100000;
|
|
|
|
|
|
|
|
// Maximum number of constraints
|
|
|
|
const int NB_MAX_CONSTRAINTS = 100000;
|
|
|
|
|
|
|
|
// Number of iterations when solving a LCP problem
|
|
|
|
const uint DEFAULT_LCP_ITERATIONS = 15;
|
|
|
|
|
|
|
|
// Number of iterations when solving a LCP problem for error correction
|
|
|
|
const uint DEFAULT_LCP_ITERATIONS_ERROR_CORRECTION = 5;
|
|
|
|
|
|
|
|
// True if the error correction projection (first order world) is active in the constraint solver
|
|
|
|
const bool ERROR_CORRECTION_PROJECTION_ENABLED = true;
|
|
|
|
|
|
|
|
// Contacts with penetration depth (in meters) larger that this use error correction with projection
|
|
|
|
const reactphysics3d::decimal PENETRATION_DEPTH_THRESHOLD_ERROR_CORRECTION = 0.20;
|
2012-01-18 23:06:33 +00:00
|
|
|
|
2012-08-02 21:33:56 +00:00
|
|
|
}
|
2012-01-18 23:06:33 +00:00
|
|
|
|
2011-12-11 00:40:04 +00:00
|
|
|
#endif
|