功能模块LinearMath

.title { text-align: center; margin-bottom: .2em }
.subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 }
.todo { font-family: monospace; color: red }
.done { font-family: monospace; color: green }
.priority { font-family: monospace; color: orange }
.tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal }
.timestamp { color: #bebebe }
.timestamp-kwd { color: #5f9ea0 }
.org-right { margin-left: auto; margin-right: 0px; text-align: right }
.org-left { margin-left: 0px; margin-right: auto; text-align: left }
.org-center { margin-left: auto; margin-right: auto; text-align: center }
.underline { text-decoration: underline }
#postamble p,#preamble p { font-size: 90%; margin: .2em }
p.verse { margin-left: 3% }
pre { border: 1px solid #ccc; padding: 8pt; font-family: monospace; overflow: auto; margin: 1.2em }
pre.src { position: relative; overflow: visible; padding-top: 1.2em }
pre.src::before { display: none; position: absolute; background-color: white; top: -10px; right: 10px; padding: 3px; border: 1px solid black }
pre.src:hover::before { display: inline }
pre.src-sh::before { content: "sh" }
pre.src-bash::before { content: "sh" }
pre.src-emacs-lisp::before { content: "Emacs Lisp" }
pre.src-R::before { content: "R" }
pre.src-perl::before { content: "Perl" }
pre.src-java::before { content: "Java" }
pre.src-sql::before { content: "SQL" }
table { border-collapse: collapse }
caption.t-above { caption-side: top }
caption.t-bottom { caption-side: bottom }
td,th { vertical-align: top }
th.org-right { text-align: center }
th.org-left { text-align: center }
th.org-center { text-align: center }
td.org-right { text-align: right }
td.org-left { text-align: left }
td.org-center { text-align: center }
dt { font-weight: bold }
.footpara { display: inline }
.footdef { margin-bottom: 1em }
.figure { padding: 1em }
.figure p { text-align: center }
.inlinetask { padding: 10px; border: 2px solid gray; margin: 10px; background: #ffffcc }
#org-div-home-and-up { text-align: right; font-size: 70%; white-space: nowrap }
textarea { }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00 }
.org-info-js_info-navigation { border-style: none }
#org-info-js_console-label { font-size: 10px; font-weight: bold; white-space: nowrap }
.org-info-js_search-highlight { background-color: #ffff00; color: #000000; font-weight: bold }

功能模块LinearMath

Table of Contents

  • btScalar

    • 宏定义
    • 类型
    • 函数
  • btAlignedAllocator
    • 宏定义
    • 函数
  • btAlignedObjectArray
    • 宏定义
    • btAlignedObjectArray类

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

原文地址:https://www.cnblogs.com/fhln/p/9859081.html

时间: 2024-10-09 22:46:52

功能模块LinearMath的相关文章

订单功能模块设计与实现

在商城项目中,之前我们介绍了购物车功能模块的实现,商品加入到购物车之后,就是到购物车结算,然后显示购物车的商品列表,点击去结算,然后到了未提交前的订单列表, 点击提交订单后,生成此订单,返回订单的订单号,付款金额,订单预计到达时间.订单系统是一个非常重要的系统,我们的移动端.PC端都需要订单系统,所以这里我们将订单系统单独作为一个服务来,留出接口供客户单来调用 今天我们来看下这个订单系统到底是如何实现的: 一.订单系统功能 订单系统主要包含哪些功能模块呢? 创建订单功能.查看订单列表.根据订单i

智点财务软件的功能模块介绍

智点财务软件由多个功能模块构成,包括:总账.工资管理.固定资产.资产负债表.损益表等.各模块间相对独立,各自具有完善和系统的功能,又有机地结合为一体. 智点财务软件是一个企业经营管理平台,用以解决不同满足各级管理者对信息化的不同要求:为高层经营管理者提供大量收益与风险的决策信息,辅助企业制定长远发展战略:为中层管理人员提供企业各个运作层面的运作状况,帮助做到各种事件的监控.发现.分析.解决.反馈等处理流程,帮助做到投入产出最优配比:为基层管理人员提供便利的作业环境,易用的操作方式实现工作岗位.工

易网通物流平台报表功能模块是怎样的?

目前,很多物流平台都能够直观的展示物流公司各个物流环节的处理结果和进度,对于异常情况能够及时呈现预警结果.但是,现有物流系统各物流环节之间状态参数并不能实时.方便传递.如第三方货代庄家.物流公司之间,各自建立自己的数据库,没有进行很好的集成,同时物流行业舱位价格等实时变化过快,无法提供移动终端的方式以方便物流角色进行业务操作,及保证客户所查看数据实时更新. 此外,货主.物流公司.第三方货代.船东等角色之间仍然停留在依靠传统纷繁的电话.邮件联系和查询,人力交流成本随着接单数量增加而成倍增加. 在物

如何通过反射实现动态功能模块加载

程序集包含模块,而模块包含类型,类型又包含成员.反射则提供了封装程序集.模块和类型的对象.您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访问其字段和属性. 下面我们将介绍如何通过不使用反射的方式和使用反射的方式加载功能模块.实现效果: 1.        WinForm 主程序 主程序我们使用Winform程序,VS2008 工具C#语言开发.包括工具栏.状态栏及TabControl控件.我们使用TabControl 作为功能模块容器

在#AOS开发平台# 新增了【首选项】功能模块

在#AOS开发平台# 新增了[首选项]功能模块.缺省包含:我的个人资料维护.我的偏好设置.系统安全选项.自定义菜单.我的操作日志等功能,并提供了扩展点.在二次开发时候可以通过新增设置项按钮增加业务系统所需的和当前登录操作员有关的新开发的设置页面.

[转] 通过反射实现动态功能模块加载

原文 如何通过反射实现动态功能模块加载 程序集包含模块,而模块包含类型,类型又包含成员.反射则提供了封装程序集.模块和类型的对象.您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访问其字段和属性. 下面我们将介绍如何通过不使用反射的方式和使用反射的方式加载功能模块.实现效果: 1. WinForm 主程序 主程序我们使用Winform程序,VS2008 工具C#语言开发.包括工具栏.状态栏及TabControl控件.我们使用TabCon

10天学会phpWeChat——第二天:hello world!我的第一个功能模块

今天我们开始进入<10天学会phpWeChat>系列教程的第二天:创建我的第一个hello world! 功能模块. 1.登录后台,进入 系统设置--自定义模块,如图: 自定义模块参数说明: 上级模块:上级模块一共三个选项:会员member (一般很少会在其下面建立模块).pc电脑端(建立Pc访问的官网.单页.商城模块等).wechat微信公共号端(建立微信公共号端访问的微官网.微资讯.微商城等) 这里我们可以根据实际需求选择,此处示例我们选择wechat. 模块名称:模块的中文名称,命名没特

jeesite功能模块介绍

   1.文档介绍 最近开始接触jeesite平台,很多资料已经以树形的方式,列出了jeesite的功能模块名称. 这里对模块做简单的描述,在以后的开发中,可以结合业务需求来使用这些模块.(这里为自己的理解,不正确的地方请多多指正) javaBeanValidator :利用注解的方式,在javabean代码内部,利用注解实现校验.(参考网址:http://www.th7.cn/Program/java/201511/689536.shtml)

ERC功能模块特点介绍

ERC功能模块特点介绍 客户管理 客户自定义多级分组和等级管理首创的业务大厅协同工作处理中心首创的员工工作日记和业务跟踪管理通过客户服务中心协同各部门作业 销售管理 首创的订单处理中心和看板管理功能产销需求中心自动跟踪订单的执行适应加工型企业的特殊产销模式支持POS机开单和多仓库开单功能彻底解决开单与发货不在同一地点 采购管理 首创的采购处理中心,提供看板管理供应商客户自定义多级分组分等级在线解决采购和收货不在同一地点支持多种灵活的委外加工模式通过物料台账有效管理外加工物料 库存管理 彻底解决各