Box2D个人学习笔记 - 介绍

参考:

官方Manual和对应翻译的中文手册(感谢译者)。


下面的所有内容基于版本Box2D_v2.2.0。

1. 介绍

Box2D是一个2D刚体仿真库。可移植C++写成。引擎中数据类型大多以b2开头。


2. 核心概念:

刚体(rigid body):

一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。一般用物体(body)简单的来描述刚体。
形状(shape):

一块严格依附于物体(body)的 2D 碰撞几何结构(collision geometry)。形状具有摩擦(friction)和恢复(restitution)的材料性质。
约束(constraint):

一个约束(constraint)就是消除物体自由度的物理连接。在 2D 中,一个物体有 3 个自由度。如果我们把一个物体钉在墙上(像摆锤那样),那我们就把它约束到了墙上。这样,此物体就只能绕着这个钉子旋转,所以这个约束消除了它 2 个自由度。
接触约束(contact constraint):

一个防止刚体穿透,以及用于模拟摩擦(friction)和恢复(restitution)的特殊约束。你永远都不必创建一个接触约束,它们会自动被 Box2D 创建。
关节(joint):

它是一种用于把两个或多个物体固定到一起的约束。Box2D 支持的关节类型有:旋转,棱柱,距离等等。关节可以支持限制(limits)和马达(motors)。
关节限制(joint limit):

一个关节限制(joint limit)限定了一个关节的运动范围。例如人类的胳膊肘只能做某一范围角度的运动。
关节马达(joint motor):

一个关节马达能依照关节的自由度来驱动所连接的物体。例如,你可以使用一个马达来驱动一个肘的旋转。
世界(world):

一个物理世界就是物体,形状和约束相互作用的集合。Box2D 支持创建多个世界,但这通常是不必要的。


Box2D_v2.2.0的手册关于这部分有一些改变,当然,后面的内容也会有一些改变,总体的理解是类似的:

形状:
一个2D几何对象,如圆或多边形。
刚体:
配件(fixture):
一个fixture将一个形状绑定到一个刚体,同时增加一些材料属性,比如密度(density)、摩擦力(friction)、恢复系数(restitution)等。
约束(constraint):
接触约束(contact constrain):
关节(joint):
关节限制(joint limit):
关节马达(joint motor):
世界(world):
求解器(solver):
物理世界中有一个求解器,用于推进时间和解决接触约束和关节约束。
连续碰撞(continuous collision):
使用不连续的时间步来推进刚体的求解器。

显然,大部分都是类似的,主要是对于刚体和形状的定义上有了小的改变,通过一个配件fixture将形状、密度、摩擦力、回复系数等绑定到一个刚体。


3. 模块

Box2D主要有三个模块:Common, Collision, and Dynamics。

你可能感兴趣的:(c,引擎)