0.简介
一直对物理引擎比较感兴趣,始终想找一些比较好的教程来学一学,但是资料太少,所以通过阅读源码来学习吧,我将我阅读Box2D-Lite的笔记和心得会记录在这里,是Box2D-Lite,不是Box2D,从简单的读起。
1.记录流程
记录过程也没什么顺序可以确定,我就是根据我调试代码的顺序来进行阅读,调到哪里就看到哪里。
阅读源码的时候,必要时刻可以看看相关文档。
墨衍会员
·
AI 创作全网分发
墨衍智能分发
本文由作者通过墨衍一键同步至各平台
1分发平台
600+累计阅读
671平均单平台
已同步平台
优快云
微信公众号
微博
知乎
掘金
百家号
博客园
抖音
小红书
你的文章也可以这样分发
墨衍会员 ¥399起/年,写一次发全网
我也要 →
码龄12年
一直对物理引擎比较感兴趣,始终想找一些比较好的教程来学一学,但是资料太少,所以通过阅读源码来学习吧,我将我阅读Box2D-Lite的笔记和心得会记录在这里,是Box2D-Lite,不是Box2D,从简单的读起。
记录过程也没什么顺序可以确定,我就是根据我调试代码的顺序来进行阅读,调到哪里就看到哪里。
阅读源码的时候,必要时刻可以看看相关文档。
Box2D-Lite源码阅读
当前文章被以下社区和专栏收录:
cpp-Box2DLite是一个小型2D物理引擎Lite版本更适合学习游戏物理
Box2D-Lite是一个小型2D物理引擎,Lite版本更适合学习游戏物理
Box2D-Lite源码阅读笔记(12)
简介 这次讲解动理学的最后一部分,动量计算后更新速度。 正文 下面这段代码,主要流程就是分别计算分离轴方向的动量和垂直分离轴方向的动量。 void Arbiter::ApplyImpulse() { Body* b1 = body1; Body* b2 = body2; for (int i = 0; i < numContacts; ++i) { Contact* c = contacts + i; c->r1 = c->position - b1->posi.
Box2D_v2.1.2已经编译好的文件
Box2D is a 2D physics engine for games. For help with Box2D, please visit http://www.box2d.org. There is a forum there where you may post your questions.
Box2D-Lite源码阅读笔记(11)
简介 这次我来看详细的运动处理函数。 计算准备工作 看下面的这个函数里的实现。 void World::Step(float dt) { ... for (ArbIter arb = arbiters.begin(); arb != arbiters.end(); ++arb) { arb->second.PreStep(inv_dt); } ... } 代码如下,注释和后面都会有说明 void Arbiter::PreStep(float inv_dt) { //补偿系数参数.
vos如何对接okcc(保姆级教程)
1.添加账户 点击 系统->账户管理 [图片] 2.创建费率 系统->费率管理 点击添加
TexGen模型导出到ABAQUS的inp文件:如何快速修改纱线材料属性(避坑指南)
本文针对TexGen模型导出到ABAQUS的inp文件后纱线材料属性缺失或错误的问题,提供了高效的解决方案。文章详细解析了inp文件结构,指导用户如何手动定位并修改纱线材料属性,并提供了可批量处理的Python脚本,帮助用户快速、精准地完成材料参数赋值,有效提升复合材料仿真工作效率。
Box2D的编译与运行 - Hello world
转发,请保持地址:http://blog.youkuaiyun.com/stalendp/article/details/8574894 最近在编写一个手机游戏,用到Box2D,学习后顺带写了这几篇文章。 整合的方式:把Box2D编译成static Lib, 然后整合 =============== Box2D的编译 =============== 1)新建一个名为Box2D的static...
cst-python联合仿真的问题解决
cst与python联合仿真出现无法调用CST的问题解决
Box2D-Lite源码阅读笔记(5)
0.简介 前一篇对碰撞检测的准备工作做了阅读,这回我们看第一步,分离轴定理检测矩形是否相交。 1.分离轴定理 这里面简单对分离轴定理做一个说明,这个里面有详细说明分离轴定理详细说明 大概就是比如两个凸多边形,这两个多边形分别向每条边的垂直方向做投影,如果有一个方向上的投影不相交,则两个多边形不相交,反之则相交。 具体就看上面的链接吧。 2.代码阅读 int Collide(Contact* contacts, Body* bodyA, Body* bodyB) { ...
PROFINET非周期数据通信实战:从报文解析到参数读写
本文详细解析了PROFINET非周期数据通信的实战应用,从报文结构到参数读写全流程。通过西门子PLC与驱动器的配置案例,深入讲解非周期通信在工业自动化中的关键作用,包括硬件选型、软件配置及常见问题排查,帮助工程师高效实现设备参数配置与诊断。
有之以为利,无之以为用,在 RAP 开发里的虚实取舍
摘要(149字) SAP RAP框架通过"有"与"无"的哲学平衡实现业务应用价值。其"有"体现在CDS视图、行为定义、服务绑定等具体对象,为系统提供形体;而"无"则表现为保留的扩展空间、未暴露的实现细节和框架托管的生命周期。在采购审批应用中,RAP既通过明确定义的行为模型建立业务语义,又通过验证、动作等机制保持灵活性。这种架构既确保核心功能稳固,又为未来演进留出余地,印证了"有之以为利,无之以为用"的技术智慧
探索Box2D Lite:轻量级物理引擎的魅力
探索Box2D Lite:轻量级物理引擎的魅力 项目地址:https://gitcode.com/gh_mirrors/bo/box2d-lite 是由Erin Catto开发的一个轻量级2D物理模拟库,专注于游戏和图形应用。它提供了现实世界的物理行为,如重力、碰撞检测和刚体动力学,让你的应用程序具备更真实的交互体验。 项目简介 Box2D Lite是一个C++库,致力于为开发者提供简单易用但功能...
2024.12.29 【RNA-seq】Rawdata数据缺失问题与解决方案
Fastq格式是一种用于存储高通量测序数据的文件格式,包含序列和相应的质量信息。第一行以开头,后接序列标识符;第二行是测序的DNA序列;第三行以开头,可能会跟随序列标识符;第四行是对应的质量值,以ASCII字符表示。Rawdata的数据完整性通常情况下是没有问题的,但我们仍然需要对下机数据进行验证,确保后续分析的正常进行,好的分析习惯可以提高整体的分析效率,避免很多不必要的麻烦。
Box2D-Lite源码阅读笔记(7)
简介 上一篇阅读了碰撞点计算框架和碰撞深度获取的代码,这次阅读碰撞点计算的具体步骤之一,计算候选点。 选择候选点 候选点说明现在计算的并不是具体的碰撞点,而是一些可能的碰撞点,或者与碰撞点相关的点,或者是需要加工一个才能成为碰撞点。 /*参数列表:返回结果(预测相交点),另一个矩形的半径大小,另一个矩形的位置 另一个矩形的旋转矩阵,调用这个函数的矩形的正面方向 */ static void ComputeIncidentEdge(ClipVertex c[2], const Vec2& h, .
国债期货的日线趋势跟踪策略实现(基于backtrader框架)
通过backtrader框架,我们可以轻松地实现国债期货的日线趋势跟踪策略,并进行回测和验证。通过这种策略,我们可以尝试捕捉国债期货价格的短期趋势,并根据趋势的方向进行交易决策。backtrader提供了许多内置的指标、订单类型和其他功能,可以帮助你进一步优化和改进你的策略。它提供了丰富的工具和功能,使我们能够快速实现和验证我们的交易想法。方法中,我们根据当前价格和前一天的价格判断趋势的方向,并根据趋势的变化进行买入或卖出操作。然后,我们设置了初始资金和交易手续费,并将我们定义的策略。来跟踪每日的收盘价。
基于R-CNN深度学习的常见手势识别系统:数据集、模型和UI界面的完整实现
卷积神经网络(CNN):用于从图像中提取特征。区域提议网络(RPN):用于生成可能包含手势的候选区域。:将候选区域调整为固定大小,并进行进一步的分类和回归。接下来,我们需要加载一个预训练的Faster R-CNN模型,并对其进行微调。我们将使用# 加载预训练的Faster R-CNN模型# 获取分类器的输入特征数# 替换分类器头部,设置为我们数据集的类别数(假设有5类手势)
Box2D-Lite源码阅读笔记(4)
0.简介 前面我们发现了物体碰撞检测的函数,这回我将来读物体碰撞检测函数的代码。 1.碰撞检测 这个碰撞检测主要是针对矩形与矩形的碰撞检测,以为例子中只给了矩形的物理碰撞。这里先对开始部分做一个阅读和注释。 这段代码是一些准备工作,主要目的是获取物体在空间中的姿态和基本位置信息。 int Collide(Contact* contacts, Body* bodyA, Body* bodyB) { // Setup //取A B两个物体的半径,width中存储的是边长 //这里获取到的是一半
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
Box2D-Lite源码阅读笔记(3)
0.简介 这次来看step函数。 1.step开始 step函数里看起来如下的样子,当然我们只关注一块。 void World::Step(float dt) { float inv_dt = dt > 0.0f ? 1.0f / dt : 0.0f; // 碰撞检测 BroadPhase(); ... } BroadPhase函数是碰撞碰撞检测函数。具体讲解在代码注释 void World::BroadPhase() { //这是一个O(n^2)的循环 for
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
Box2D-Lite源码阅读笔记(6)
0.简介 上一篇介绍了碰撞检测部分,这次阅读后面的碰撞点计算和最小碰撞深度计算的代码。 1.获取碰撞点和碰撞深度 碰撞后要计算出碰撞点,因为在计算运动方向,转动惯量等数据的时候需要碰撞点信息,碰撞深度是为了分离两个物体用的信息,因为物体碰撞时刻,不能正好点边接触,两个物体可能会有一些交叉,这个交叉导致碰撞点会落在形状内部,而不是边界,并且两个物体分离,运动状态信息也需要这个交叉深度来进行各种视觉效果上的平衡。 // Find best axis Axis axis;//选定的轴 float
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
Box2D-Lite源码阅读笔记(10)
简介 这次我来探究一下step剩下的部分。 动量计算,位移计算 void World::Step(float dt) { float inv_dt = dt > 0.0f ? 1.0f / dt : 0.0f; //碰撞检测并获取碰撞信息 BroadPhase(); // Integrate forces. for (int i = 0; i < (int)bodies.size(); ++i) { Body* b = bodies[i]; //质量无穷大作为固定的物体.
Box2D-Lite源码阅读笔记(8)
简介 上一篇完成了碰撞点的初步获取,这回阅读的是碰撞点的第二步获取。 碰撞点截取 因为有一定可能使得取得的B上的碰撞点在A的宽度范围之外,这样一来,范围之外的点属于没有意义的点,所以需要根据A的宽度将点截断在A的宽度范围内。 代码 /*参数列表:vOut[2]输出结果,vIn[2]输入的碰撞点候选点,normal侧方向上的向量(假设以矩形A坐标系为主) offset侧方向上的坐标值。 这假设前面是以A坐标系为主,vIn[2]是获取自矩形B上的顶点且已经转换到世界坐标 */ int ClipSegment.
Box2D-Lite源码阅读笔记(9)
简介 到这里就是碰撞检测的最后一个阶段,在前面已经获取了粗略位置点的时候,这里要获取精确的碰撞点。 碰撞点筛选 目前位置,待定的碰撞点已经处于A的宽度范围内了,但是是否与A碰撞,或者是否在A内还需要判断。 int numContacts = 0; for (int i = 0; i < 2; ++i) { //计算出相交深度 float separation = Dot(frontNormal, clipPoints2[i].v) - front; //深度小于等于0的点说明点相交.
Box2D-Lite源码阅读笔记(1)
0.简介 先从工程配置开始。 1.环境配置 下载好源码后,我在源码包里发现了build.bat,我的电脑里有VS2019,于是我运行了一下,生成了一个VS工程,之后看代码就用VS来看了,打开工程后,直接就编译ALL_BUILD那个项目,编译好后,我们选择sample这个项目 ,之后的源码阅读都从这里开始。 2.起点 找到了main函数,大概在下面这个位置,我们开始进入源码探究。 int main(int, char**) { ... InitDemo(0); ... world.
FARM企业级部署:AWS SageMaker与Docker容器化实战指南
FARM(Fast & easy transfer learning for NLP)作为一款专注于自然语言处理迁移学习的开源框架,特别在问答系统领域表现出色。本文将详细介绍如何通过AWS SageMaker与Docker容器化技术实现FARM的企业级部署,帮助企业快速构建高性能NLP应用。 ## 核心概念解析:FARM架构与部署优势 FARM框架采用模块化设计,核心组件包括**Adaptiv
Box2D编译
Box2D主页: http://box2d.org/ 说明:Box2D需要OpenGL和相关库的支持。 参考编译脚本: #! /bin/bash # filename: gcc_build_box2d.sh here=`pwd` if [ -d gcc_Box2D_v2.2.0 ]; then rm -rf gcc_Box2D_v2.2.0 fi expor
Box2D-Lite 项目教程
Box2D-Lite 项目教程 1. 项目的目录结构及介绍 Box2D-Lite 是一个小型的 2D 物理引擎,其目录结构如下: box2d-lite/ ├── include/ │ └── box2d-lite/ # 包含引擎的头文件 ├── samples/ # 示例代码 ├── src/ # 引擎的源代码 ├── .gitattributes ...

被折叠的 条评论
为什么被折叠?



