Bullet Collision Detection & Physics Library
|
#include <math.h>
#include <stdlib.h>
#include <float.h>
Go to the source code of this file.
Classes | |
struct | btTypedObject |
rudimentary class to provide type info More... | |
Macros | |
#define | BT_BULLET_VERSION 282 |
#define | SIMD_FORCE_INLINE __forceinline |
#define | ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a |
#define | ATTRIBUTE_ALIGNED64(a) __declspec(align(64)) a |
#define | ATTRIBUTE_ALIGNED128(a) __declspec (align(128)) a |
#define | btAssert(x) |
#define | btFullAssert(x) |
#define | btLikely(_c) _c |
#define | btUnlikely(_c) _c |
#define | BT_LARGE_FLOAT 1e18f |
#define | BT_INFINITY (*(float*)&btInfinityMask) |
#define | BT_DECLARE_ALIGNED_ALLOCATOR() |
#define | SIMD_PI btScalar(3.1415926535897932384626433832795029) |
#define | SIMD_2_PI btScalar(2.0) * SIMD_PI |
#define | SIMD_HALF_PI (SIMD_PI * btScalar(0.5)) |
#define | SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0)) |
#define | SIMD_DEGS_PER_RAD (btScalar(360.0) / SIMD_2_PI) |
#define | SIMDSQRT12 btScalar(0.7071067811865475244008443621048490) |
#define | btRecipSqrt(x) ((btScalar)(btScalar(1.0)/btSqrt(btScalar(x)))) /* reciprocal square root */ |
#define | btRecip(x) (btScalar(1.0)/btScalar(x)) |
#define | SIMD_EPSILON FLT_EPSILON |
#define | SIMD_INFINITY FLT_MAX |
#define | BT_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name |
#define | btFsels(a, b, c) (btScalar)btFsel(a,b,c) |
Typedefs | |
typedef float | btScalar |
The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision. More... | |
Functions | |
int | btGetVersion () |
btScalar | btSqrt (btScalar y) |
btScalar | btFabs (btScalar x) |
btScalar | btCos (btScalar x) |
btScalar | btSin (btScalar x) |
btScalar | btTan (btScalar x) |
btScalar | btAcos (btScalar x) |
btScalar | btAsin (btScalar x) |
btScalar | btAtan (btScalar x) |
btScalar | btAtan2 (btScalar x, btScalar y) |
btScalar | btExp (btScalar x) |
btScalar | btLog (btScalar x) |
btScalar | btPow (btScalar x, btScalar y) |
btScalar | btFmod (btScalar x, btScalar y) |
btScalar | btAtan2Fast (btScalar y, btScalar x) |
bool | btFuzzyZero (btScalar x) |
bool | btEqual (btScalar a, btScalar eps) |
bool | btGreaterEqual (btScalar a, btScalar eps) |
int | btIsNegative (btScalar x) |
btScalar | btRadians (btScalar x) |
btScalar | btDegrees (btScalar x) |
btScalar | btFsel (btScalar a, btScalar b, btScalar c) |
bool | btMachineIsLittleEndian () |
unsigned | btSelect (unsigned condition, unsigned valueIfConditionNonZero, unsigned valueIfConditionZero) |
btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360 Thanks Phil Knight. More... | |
int | btSelect (unsigned condition, int valueIfConditionNonZero, int valueIfConditionZero) |
float | btSelect (unsigned condition, float valueIfConditionNonZero, float valueIfConditionZero) |
template<typename T > | |
void | btSwap (T &a, T &b) |
unsigned | btSwapEndian (unsigned val) |
unsigned short | btSwapEndian (unsigned short val) |
unsigned | btSwapEndian (int val) |
unsigned short | btSwapEndian (short val) |
unsigned int | btSwapEndianFloat (float d) |
btSwapFloat uses using char pointers to swap the endianness More... | |
float | btUnswapEndianFloat (unsigned int a) |
void | btSwapEndianDouble (double d, unsigned char *dst) |
double | btUnswapEndianDouble (const unsigned char *src) |
template<typename T > | |
void | btSetZero (T *a, int n) |
btScalar | btLargeDot (const btScalar *a, const btScalar *b, int n) |
btScalar | btNormalizeAngle (btScalar angleInRadians) |
template<typename T > | |
T * | btAlignPointer (T *unalignedPtr, size_t alignment) |
align a pointer to the provided alignment, upwards More... | |
Variables | |
static int | btInfinityMask = 0x7F800000 |
#define ATTRIBUTE_ALIGNED128 | ( | a | ) | __declspec (align(128)) a |
Definition at line 61 of file btScalar.h.
#define ATTRIBUTE_ALIGNED16 | ( | a | ) | __declspec(align(16)) a |
Definition at line 59 of file btScalar.h.
#define ATTRIBUTE_ALIGNED64 | ( | a | ) | __declspec(align(64)) a |
Definition at line 60 of file btScalar.h.
#define BT_BULLET_VERSION 282 |
Definition at line 31 of file btScalar.h.
#define BT_DECLARE_ALIGNED_ALLOCATOR | ( | ) |
Definition at line 357 of file btScalar.h.
#define BT_DECLARE_HANDLE | ( | name | ) | typedef struct name##__ { int unused; } *name |
Definition at line 485 of file btScalar.h.
#define BT_INFINITY (*(float*)&btInfinityMask) |
Definition at line 338 of file btScalar.h.
#define BT_LARGE_FLOAT 1e18f |
Definition at line 268 of file btScalar.h.
#define btAssert | ( | x | ) |
Definition at line 101 of file btScalar.h.
Definition at line 493 of file btScalar.h.
#define btFullAssert | ( | x | ) |
Definition at line 104 of file btScalar.h.
#define btLikely | ( | _c | ) | _c |
Definition at line 106 of file btScalar.h.
Definition at line 442 of file btScalar.h.
#define btRecipSqrt | ( | x | ) | ((btScalar)(btScalar(1.0)/btSqrt(btScalar(x)))) /* reciprocal square root */ |
Definition at line 441 of file btScalar.h.
#define btUnlikely | ( | _c | ) | _c |
Definition at line 107 of file btScalar.h.
Definition at line 435 of file btScalar.h.
Definition at line 438 of file btScalar.h.
#define SIMD_EPSILON FLT_EPSILON |
Definition at line 448 of file btScalar.h.
#define SIMD_FORCE_INLINE __forceinline |
Definition at line 58 of file btScalar.h.
Definition at line 436 of file btScalar.h.
#define SIMD_INFINITY FLT_MAX |
Definition at line 449 of file btScalar.h.
#define SIMD_PI btScalar(3.1415926535897932384626433832795029) |
Definition at line 434 of file btScalar.h.
Definition at line 437 of file btScalar.h.
#define SIMDSQRT12 btScalar(0.7071067811865475244008443621048490) |
Definition at line 439 of file btScalar.h.
typedef float btScalar |
The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision.
Definition at line 266 of file btScalar.h.
Definition at line 411 of file btScalar.h.
T* btAlignPointer | ( | T * | unalignedPtr, |
size_t | alignment | ||
) |
align a pointer to the provided alignment, upwards
Definition at line 710 of file btScalar.h.
Definition at line 418 of file btScalar.h.
Definition at line 425 of file btScalar.h.
Definition at line 426 of file btScalar.h.
Definition at line 452 of file btScalar.h.
Definition at line 408 of file btScalar.h.
Definition at line 483 of file btScalar.h.
Definition at line 470 of file btScalar.h.
Definition at line 427 of file btScalar.h.
Definition at line 407 of file btScalar.h.
Definition at line 430 of file btScalar.h.
Definition at line 488 of file btScalar.h.
|
inline |
Definition at line 468 of file btScalar.h.
|
inline |
Definition at line 33 of file btScalar.h.
Definition at line 473 of file btScalar.h.
|
inline |
Definition at line 478 of file btScalar.h.
Definition at line 646 of file btScalar.h.
Definition at line 428 of file btScalar.h.
|
inline |
Definition at line 496 of file btScalar.h.
Definition at line 674 of file btScalar.h.
Definition at line 429 of file btScalar.h.
Definition at line 482 of file btScalar.h.
|
inline |
btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360 Thanks Phil Knight.
See also http://www.cellperformance.com/articles/2006/04/more_techniques_for_eliminatin_1.html
Definition at line 510 of file btScalar.h.
|
inline |
Definition at line 520 of file btScalar.h.
|
inline |
Definition at line 526 of file btScalar.h.
|
inline |
Definition at line 634 of file btScalar.h.
Definition at line 409 of file btScalar.h.
Definition at line 387 of file btScalar.h.
|
inline |
Definition at line 535 of file btScalar.h.
|
inline |
Definition at line 544 of file btScalar.h.
|
inline |
Definition at line 549 of file btScalar.h.
|
inline |
Definition at line 554 of file btScalar.h.
|
inline |
Definition at line 559 of file btScalar.h.
|
inline |
Definition at line 600 of file btScalar.h.
|
inline |
btSwapFloat uses using char pointers to swap the endianness
btSwapFloat/btSwapDouble will NOT return a float, because the machine might 'correct' invalid floating point values Not all values of sign/exponent/mantissa are valid floating point numbers according to IEEE 754. When a floating point unit is faced with an invalid value, it may actually change the value, or worse, throw an exception. In most systems, running user mode code, you wouldn't get an exception, but instead the hardware/os/runtime will 'fix' the number for you. so instead of returning a float/double, we return integer/long long integer
Definition at line 570 of file btScalar.h.
Definition at line 410 of file btScalar.h.
|
inline |
Definition at line 616 of file btScalar.h.
|
inline |
Definition at line 584 of file btScalar.h.
|
static |
Definition at line 337 of file btScalar.h.