功能模块LinearMath

功能模块LinearMath

btScalar

针对各系统平台的优化代码。

宏定义

  • BT_MANAGED_CODE
    托管代码,对齐的结构不支持managed code.
  • BT_BULLET_VERSION
    版本号,287
  • DEBUG和_DEBUG
    定义BT_DEBUG
  • BT_USE_DOUBLE_PRECISION
    单双精度切换
  • BT_LARGE_FLOAT
    最大的浮点数
  • BT_DECLARE_ALIGNED_ALLOCATOR
    一系列分配释放内存的宏定义
  • USE_APPROXIMATION
    使用magic function做开根号之类的近似运算
  • 常数

    #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)))) //倒开根数
    #define btRecip(x) (btScalar(1.0) / btScalar(x))
    

类型

  • btScalar 指定精度的浮点数。

函数

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);

btAlignedAllocator

自定义的内存分配器。 之后可能再重写_aligned_malloc和_aligned_free,使得其更加通用可控。

宏定义

  • BT_DEBUG_MEMORY_ALLOCATIONS
    可以在编译时定义,来测试内容泄露

函数

void* btAlignedAlloc(size_t size, int alignment); //按照对齐量分配空间
void btAlignedFree(void* ptr);//按照对齐量释放空间。
void btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc);//能够让bullet所有的内容分配器都通过custom memory allocator
void btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc);//如果开发者已经有一个custom aligned allocator,用这个函数。默认的分配器使用非对齐方式来分配额外内存。

class btAlignedAllocator //对齐分配器的接口类。分配器可以由自定义的allocator重写,使用btAlignedAllocSetCustom和btAlignedAllocSetCustomAligned。
{
 pointer address(reference ref) const;
 const_pointer address (const_reference  ref) const;
 pointer  allocate (size_type n, const_pointer*hint = 0);
 void construct ( pointer ptr, const value_type &   value);
 void deallocate( pointer ptr );
 void destroy   ( pointer ptr );
 self_type & operator=...
 bool operator==...
}
  • btAlignedAllocSetCustom

btAlignedObjectArray

宏定义

  • BT_USE_PLACEMENT_NEW
    定义的时候,支持虚函数 和non-trivial构造函数,用来提高效率,默认启用。
  • BT_USE_MEMCPY
    定义的时候,交换array中元素的话,会使用memcpy而不是operator=,默认禁用。
  • BT_ALLOW_ARRAY_COPY_OPERATOR
    深拷贝.

btAlignedObjectArray类

使用stl::vector中的子集,用来代替stl::vector,避免内存对齐问题。

Date: [2018-10-26 Fri 20:00]

Author: fhln

Created: 2018-10-26 Fri 22:27

Validate

猜你喜欢

转载自www.cnblogs.com/fhln/p/9859081.html