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