box2d
扭曲45
说出去别人嗤之,开始做别人笑之。
继续做别人讥之,成功后别人仰之。
展开
-
Box2d源码学习<二>内存管理之SOA的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8258166SOA,全称small object allocator,中文意思是小对象分配器。box2d虽然是用c++写的,但是并没有使用c++自带的new/delete实现内存管理,而是使用在c的malloc/free做法的基础上封装了类b2Bl原创 2012-12-05 23:51:29 · 4975 阅读 · 4 评论 -
Box2d源码学习<十一>GJK之距离的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8352227Box2d中距离是指两个形状最近点之间的距离,主要用于形状的碰撞检测,通过GJK算法实现,在GJK中又使用voroni区域算法和重心坐标来完成的。在Box2d最终调用b2Ditance方法来求得距离。使用此方法需要将两个形状转换成一个b2D原创 2012-12-21 01:53:14 · 4856 阅读 · 1 评论 -
Box2d源码学习<十>形状(下):圆形和多边形的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8303010我们今天就来看看另外两个形状的实现。1、圆形,有坐标和半径,(有点废话了,没有坐标和半径的能叫圆吗?)。圆形不能是空心的,必须是实心的。下面我们就来看看圆形是如何实现的。在b2CircleShape.h文件中,我们来看看源码。原创 2012-12-16 23:51:22 · 8593 阅读 · 3 评论 -
Box2d源码学习<四>数学库API的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8275826为了满足Box2d中所要用到的数学知识,在Box2d的公共模块中,包含了一个小巧而简便的向量矩阵的数学库。这部分所有的定义实现均有结构体实现的,所以其内部的成员均对外部公开,所以你可以任意使用和访问。该部分主要由以下内容:a原创 2012-12-10 00:30:24 · 4238 阅读 · 1 评论 -
Box2d源码学习<一>之Box2d简介
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8257607 随着智能手机的大量普及,手机的性能也越来越好,伴随而来出现大量的手机游戏 ,其中不乏很多优秀的游戏,如《愤怒的小鸟》、《鳄鱼小玩皮》、《翼飞冲天》等等。同时它们也大量的模拟了现实生活中的相关东西,比如小鸟飞行、碰撞的模拟,流体的模拟,都用原创 2012-12-04 22:47:05 · 5152 阅读 · 0 评论 -
Box2d源码学习<八>形状(上):父形状的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8300800Box2d中每种物体它都是要有形状的,关于形状的是如何定义和实现的,我们今天就来说说。要将一个形状描述出来,我们必须知道它的定义,不禁要问形状是什么呢?用来干什么的呢?形状是几何体,用来给物体(body)定型的。同时形状可以在物理模拟中原创 2012-12-16 03:42:41 · 2943 阅读 · 2 评论 -
Box2d源码学习<九>形状(中):边缘形状和链形状的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8302347Box2d 2.2.1中父形状shape将有4个子形状,分别是b2EdgeShape(边缘形状)、b2ChainShape(链形状)、b2Circle(圆形状)和b2PolygonShape(多边形形状)。我们今天就来先看看边缘形状和链原创 2012-12-16 20:03:47 · 6880 阅读 · 2 评论 -
Box2d源码学习<七>Broad-phase的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8300658在一个物理步长内,碰撞处理可以被划分成narrow-phase和broad-phase两个阶段。在narrow-phase阶段计算一对形状的接触。假设有N个形状,直接使用蛮力进行计算,我们需要调用N*N/2次narrow-phase算法原创 2012-12-16 03:07:02 · 5582 阅读 · 1 评论 -
Box2d源码学习<十三>b2Collision之碰撞(下) 具体形状间的碰撞的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8441463Box2d中,要形状间实现碰撞,必须两个碰撞形状中至少有一个形状要有体积,而链形状每条边都被看作一个边缘形状,此时我们只要实现圆形、多边形、边缘三个具体形状间的碰撞,因为边缘形状没有体积,故不存在边缘与边缘之间的碰撞。剩下还有边缘和圆,原创 2012-12-26 23:58:35 · 6885 阅读 · 3 评论 -
Box2d源码学习<三> 内存管理之栈的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8271251Box2d上有两个和栈有关的类,它们分别是b2StackAllocator和b2GrowableStack。B2StackAllocator主要是为了运行一个步长时满足box2d需要的临时内存空间,作为栈分配器来防止单步堆分配。原创 2012-12-07 23:29:00 · 2551 阅读 · 0 评论 -
Box2d源码学习<十四>TOI之碰撞时间的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8441644TOI全称Time of Impact,中文的意思是撞击时间,在Box2d中,我们用b2TimeOfImpact来确定两个形状运动时的撞击时间(TOI)。同时b2TimeOfImpact也主要防止两个形状快速移动时可能在一个时间步内彼此穿越对方原创 2012-12-27 03:19:19 · 5380 阅读 · 1 评论 -
Box2d源码学习<五>b2Timer、b2Draw和b2Settings的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8280463今天我们要说在公共模块剩下的三个小模块的实现,分别是:计时器类、调试辅助类、和box2d引擎设置部分。1、 计时器b2Timer计时器主要是用来计算一段时间内的时间,通过对某个函数执行计时,可用来查看相关函数的效率和性能。Box原创 2012-12-10 23:52:15 · 4185 阅读 · 0 评论 -
Box2d源码学习<十二>b2Collision之碰撞(上)公共部分的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8390560Box2d中将碰撞部分单独放到几个文件中去实现的,它的结构和函数用于计算接触点,距离查询和TOI查询。我们根据这些文件实现功能的不同,我们将该部分分成两个小的部分。它们是:1、 公共部分的实现2、 具体形状间的碰撞的实现原创 2012-12-23 04:43:48 · 5993 阅读 · 2 评论 -
Box2d源码学习<六>动态树的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8293049今天我们将学习碰撞模块(collision)部分,该部分主要有一下内容:1、 形状,该部分包括的定义、实现。2、 操作形状方法,该部分包括距离(Distance)、撞击时间(Time of Impact)等。3、 算法辅助类原创 2012-12-13 23:44:13 · 9218 阅读 · 9 评论