zoukankan      html  css  js  c++  java
  • 制作简单的2D物理引擎(零)

    最近发现了Github上的开源物理引擎项目Matter.js,对它很感兴趣,发现源码并不算长,算上注释大约1万行左右,值得剖析一番。Matter.js实现一个最小化的2D物理引擎,性能不错,故打算用C#重写并学习之。

    由于JS是弱类型,而C#是强类型的,所以不得不还原相应的类型。在重写过程中,我也发现了源码中的一些问题,以及代码冗余,不过都无关紧要。在一万行之内实现一个简单的物理引擎本来就很令人激动了,这样可以以最小的工作量来熟悉物理引擎。

    重写过程中,渲染用自带GDI实现,所以只需考虑物理引擎中的代码逻辑即可。因需要最简化代码,故有些内容如Sleep等就略过了,只考虑核心部分,即力的仿真和碰撞检测。

    最终,我们的物理引擎有下列几个部分:

    • 几何体树
    • 物理学意义上的基本对象(如点、点集、边界等)
    • 简单的碰撞检测(宽、窄)
    • 位置修正
    • 速度修正

    代码在Github上:https://github.com/bajdcc/PhysicsEngine

    不过,在这之前,需要好好复习一下牛顿力学,包括平动和转动。

    本章为目录,将不断更新。

  • 相关阅读:
    12.静态目录
    11.Git线上操作
    10.分离的前后台交互
    09.后台主页应用
    08.前端主页
    爬虫介绍
    python2与python3爬虫中get与post对比
    HTML+CSS+JavaScript
    数据库 Mysql-mongodb-redis
    时频工具箱介绍与使用
  • 原文地址:https://www.cnblogs.com/bajdcc/p/5925837.html
Copyright © 2011-2022 走看看