既然是"最小化", 那么就要明确最少需要哪些功能. 对于一般的物理应用来说, 只是简单地模拟碰撞, 柔体什么的都用不到....在上面的前提下, 物理方面可以抽象成一个程序对象和三个物理对象:
程序对象: 就是对物理引擎的包装, 一般只有三个行为: 创建, 销毁, 更新....物理对象:
世界: 就是场景, 物体模拟发生的舞台. 基本功能有添加Actor(下面这俩东西), 设置重力, 射线拣取
静态物件: 不可移动的碰撞物件, 如房子, 树. ...动态刚体: 可以移动的或可被碰撞影响的物件, 如皮球, 人, 车等. 需要与图形表示(图形引擎中的模型)进行绑定的属性有位置, 朝向, 大小. 通常只需要从中获取变换矩阵并更新到图形引擎即可....以Bullet的.net wapper为例, 它只在C-API的基础上抽象了三个对象:
image.png
这只是最基本的功能, 不过在这基础上添加受力, 材质属性什么的就很容易了.