Blender V2.61 - r43446
Defines | Enumerations | Functions

gim_math.h File Reference

#include "LinearMath/btScalar.h"

Go to the source code of this file.

Defines

#define GREAL   btScalar
#define GREAL2   double
#define GINT   int
#define GUINT   unsigned int
#define GSHORT   short
#define GUSHORT   unsigned short
#define GINT64   long long
#define GUINT64   unsigned long long
#define G_PI   3.14159265358979f
#define G_HALF_PI   1.5707963f
#define G_TWO_PI   6.28318530f
#define G_ROOT3   1.73205f
#define G_ROOT2   1.41421f
#define G_UINT_INFINITY   0xffffffff
 A very very high value.
#define G_REAL_INFINITY   FLT_MAX
#define G_SIGN_BITMASK   0x80000000
#define G_EPSILON   SIMD_EPSILON
#define G_DEGTORAD(X)   ((X)*3.1415926f/180.0f)
#define G_RADTODEG(X)   ((X)*180.0f/3.1415926f)
#define GIM_IR(x)   ((GUINT&)(x))
 Integer representation of a floating-point value.
#define GIM_SIR(x)   ((GINT&)(x))
 Signed integer representation of a floating-point value.
#define GIM_AIR(x)   (GIM_IR(x)&0x7fffffff)
 Absolute integer representation of a floating-point value.
#define GIM_FR(x)   ((GREAL&)(x))
 Floating-point representation of an integer value.
#define GIM_MAX(a, b)   (a<b?b:a)
#define GIM_MIN(a, b)   (a>b?b:a)
#define GIM_MAX3(a, b, c)   GIM_MAX(a,GIM_MAX(b,c))
#define GIM_MIN3(a, b, c)   GIM_MIN(a,GIM_MIN(b,c))
#define GIM_IS_ZERO(value)   (value < G_EPSILON && value > -G_EPSILON)
#define GIM_IS_NEGATIVE(value)   (value <= -G_EPSILON)
#define GIM_IS_POSISITVE(value)   (value >= G_EPSILON)
#define GIM_NEAR_EQUAL(v1, v2)   GIM_IS_ZERO((v1-v2))
#define GIM_CLAMP(number, minval, maxval)   (number<minval?minval:(number>maxval?maxval:number))
 returns a clamped number
#define GIM_GREATER(x, y)   btFabs(x) > (y)
#define GIM_SWAP_NUMBERS(a, b)
 Swap numbers.
#define GIM_INV_SQRT(va, isva)
#define GIM_SQRT(va, sva)

Enumerations

enum  GIM_SCALAR_TYPES {
  G_STYPE_REAL = 0, G_STYPE_REAL2, G_STYPE_SHORT, G_STYPE_USHORT,
  G_STYPE_INT, G_STYPE_UINT, G_STYPE_INT64, G_STYPE_UINT64
}

Functions

GREAL gim_inv_sqrt (GREAL f)
 Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html.
GREAL gim_sqrt (GREAL f)

Detailed Description

Author:
Francisco Leon Najera

Definition in file gim_math.h.


Define Documentation

#define G_DEGTORAD (   X)    ((X)*3.1415926f/180.0f)

Definition at line 78 of file gim_math.h.

#define G_EPSILON   SIMD_EPSILON
#define G_HALF_PI   1.5707963f

Definition at line 51 of file gim_math.h.

#define G_PI   3.14159265358979f

Definition at line 50 of file gim_math.h.

#define G_RADTODEG (   X)    ((X)*180.0f/3.1415926f)

Definition at line 79 of file gim_math.h.

#define G_REAL_INFINITY   FLT_MAX

Definition at line 58 of file gim_math.h.

Referenced by GIM_AABB::invalidate().

#define G_ROOT2   1.41421f

Definition at line 56 of file gim_math.h.

#define G_ROOT3   1.73205f

Definition at line 55 of file gim_math.h.

#define G_SIGN_BITMASK   0x80000000

Definition at line 59 of file gim_math.h.

#define G_TWO_PI   6.28318530f

Definition at line 53 of file gim_math.h.

#define G_UINT_INFINITY   0xffffffff

A very very high value.

Definition at line 57 of file gim_math.h.

Referenced by GIM_TREE_TREE_COLLIDER< BOX_SET_CLASS0, BOX_SET_CLASS1 >::GIM_TREE_TREE_COLLIDER().

#define GIM_AIR (   x)    (GIM_IR(x)&0x7fffffff)

Absolute integer representation of a floating-point value.

Definition at line 88 of file gim_math.h.

#define GIM_CLAMP (   number,
  minval,
  maxval 
)    (number<minval?minval:(number>maxval?maxval:number))

returns a clamped number

Definition at line 108 of file gim_math.h.

Referenced by SEGMENT_COLLISION().

#define GIM_FR (   x)    ((GREAL&)(x))

Floating-point representation of an integer value.

Definition at line 91 of file gim_math.h.

#define GIM_GREATER (   x,
 
)    btFabs(x) > (y)

Definition at line 110 of file gim_math.h.

Referenced by GIM_AABB::collide_ray(), and GIM_AABB::overlapping_trans_cache().

#define GIM_INV_SQRT (   va,
  isva 
)
Value:
{\
    if(va<=0.0000001f)\
    {\
        isva = G_REAL_INFINITY;\
    }\
    else\
    {\
        GREAL _x = va * 0.5f;\
        GUINT _y = 0x5f3759df - ( GIM_IR(va) >> 1);\
        isva = GIM_FR(_y);\
        isva  = isva * ( 1.5f - ( _x * isva * isva ) );\
    }\
}\

Definition at line 119 of file gim_math.h.

Referenced by gim_inv_sqrt(), and GIM_CONTACT::interpolate_normals().

#define GIM_IR (   x)    ((GUINT&)(x))

Integer representation of a floating-point value.

Definition at line 82 of file gim_math.h.

#define GIM_IS_NEGATIVE (   value)    (value <= -G_EPSILON)

Definition at line 101 of file gim_math.h.

#define GIM_IS_POSISITVE (   value)    (value >= G_EPSILON)

Definition at line 103 of file gim_math.h.

#define GIM_IS_ZERO (   value)    (value < G_EPSILON && value > -G_EPSILON)

Definition at line 99 of file gim_math.h.

Referenced by BOX_AXIS_INTERSECT(), INTERSECT_PLANES(), and LINE_INTERSECTION_PARAMS().

#define GIM_MAX (   a,
 
)    (a<b?b:a)
#define GIM_MAX3 (   a,
  b,
 
)    GIM_MAX(a,GIM_MAX(b,c))
#define GIM_MIN (   a,
 
)    (a>b?b:a)
#define GIM_MIN3 (   a,
  b,
 
)    GIM_MIN(a,GIM_MIN(b,c))
#define GIM_NEAR_EQUAL (   v1,
  v2 
)    GIM_IS_ZERO((v1-v2))

Definition at line 105 of file gim_math.h.

#define GIM_SIR (   x)    ((GINT&)(x))

Signed integer representation of a floating-point value.

Definition at line 85 of file gim_math.h.

#define GIM_SQRT (   va,
  sva 
)
Value:
{\
    GIM_INV_SQRT(va,sva);\
    sva = 1.0f/sva;\
}\

Definition at line 134 of file gim_math.h.

Referenced by gim_sqrt().

#define GIM_SWAP_NUMBERS (   a,
 
)
Value:
{ \
    a = a+b; \
    b = a-b; \
    a = a-b; \
}\

Swap numbers.

Definition at line 113 of file gim_math.h.

Referenced by BOX_AXIS_INTERSECT(), SEGMENT_COLLISION(), and GIM_TRIANGLE_CALCULATION_CACHE::sort_isect().

#define GINT   int

Definition at line 41 of file gim_math.h.

Referenced by GIM_CONTACT::calc_key_contact().

#define GINT64   long long

Definition at line 45 of file gim_math.h.

#define GREAL   btScalar
#define GREAL2   double

Definition at line 40 of file gim_math.h.

#define GSHORT   short

Definition at line 43 of file gim_math.h.

#define GUINT   unsigned int

Definition at line 42 of file gim_math.h.

Referenced by gim_hash_table< T >::_assign_hash_table_cell(), GIM_BOX_TREE::_build_sub_tree(), GIM_BOX_TREE::_calc_splitting_axis(), gim_hash_table< T >::_erase_by_index_hash_table(), gim_hash_table< T >::_erase_hash_table(), gim_hash_table< T >::_erase_sorted(), gim_hash_table< T >::_erase_unsorted(), gim_hash_table< T >::_find_avaliable_cell(), gim_hash_table< T >::_find_cell(), gim_hash_table< T >::_insert_hash_table(), gim_hash_table< T >::_insert_hash_table_replace(), gim_hash_table< T >::_insert_sorted(), gim_hash_table< T >::_insert_sorted_replace(), gim_hash_table< T >::_invalidate_keys(), gim_hash_table< T >::_rehash(), gim_hash_table< T >::_reserve_table_memory(), GIM_BOX_TREE::_sort_and_calc_splitting_index(), GIM_BOX_TREE_TEMPLATE_SET< _GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE >::boxQuery(), GIM_BOX_TREE_TEMPLATE_SET< _GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE >::buildSet(), GIM_CONTACT::calc_key_contact(), gim_hash_table< T >::clear(), gim_bitset::clear_all(), GIM_TRIANGLE_CALCULATION_CACHE::clip_triangle(), GIM_TRIANGLE_CONTACT_DATA::copy_from(), GIM_TRIANGLE_CALCULATION_CACHE::cross_line_intersection_test(), gim_hash_table< T >::erase_by_key(), gim_array< GIM_CONTACT >::erase_sorted_mem(), gim_hash_table< T >::find(), GIM_TREE_TREE_COLLIDER< BOX_SET_CLASS0, BOX_SET_CLASS1 >::find_collision_pairs(), GIM_TRIANGLE::get_uv_parameters(), gim_hash_table< T >::get_value(), gim_binary_search(), gim_binary_search_ex(), gim_heap_sort(), gim_next_prime(), gim_radix_sort(), gim_radix_sort_array_tokens(), gim_radix_sort_rtokens(), gim_array< GIM_CONTACT >::growingCheck(), gim_array< GIM_CONTACT >::insert_mem(), GIM_CONTACT::interpolate_normals(), gim_contact_array::merge_contacts(), gim_contact_array::merge_contacts_unique(), GIM_TRIANGLE_CONTACT_DATA::mergepoints_generic(), uint_key_func::operator()(), PLANE_CLIP_POLYGON_COLLECT(), PLANE_CLIP_POLYGON_GENERIC(), PLANE_CLIP_TRIANGLE_GENERIC(), POINT_IN_HULL(), gim_contact_array::push_triangle_contacts(), GIM_TRIANGLE::ray_collision(), GIM_TRIANGLE::ray_collision_front_side(), GIM_BOX_TREE_TEMPLATE_SET< _GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE >::rayQuery(), GIM_BOX_TREE_TEMPLATE_SET< _GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE >::refit(), gim_bitset::resize(), gim_bitset::set_all(), gim_hash_table< T >::sort(), SORT_3_INDICES(), and GIM_TRIANGLE_CALCULATION_CACHE::triangle_collision().

#define GUINT64   unsigned long long

Definition at line 46 of file gim_math.h.

#define GUSHORT   unsigned short

Definition at line 44 of file gim_math.h.


Enumeration Type Documentation

Enumerator:
G_STYPE_REAL 
G_STYPE_REAL2 
G_STYPE_SHORT 
G_STYPE_USHORT 
G_STYPE_INT 
G_STYPE_UINT 
G_STYPE_INT64 
G_STYPE_UINT64 

Definition at line 64 of file gim_math.h.


Function Documentation

GREAL gim_inv_sqrt ( GREAL  f) [inline]

Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html.

Definition at line 141 of file gim_math.h.

References GIM_INV_SQRT, and GREAL.

GREAL gim_sqrt ( GREAL  f) [inline]

Definition at line 148 of file gim_math.h.

References GIM_SQRT, and GREAL.