使用 Box2D 模拟“牛顿万有引力定律”

2023-11-27

我想模拟牛顿万有引力定律使用 Box2D。

我浏览了手册,但找不到执行此操作的方法。

基本上我想做的是将几个物体放置在太空中(零重力)并模拟运动。

有小费吗?


实现起来非常容易:

for ( int i = 0; i < numBodies; i++ ) {

    b2Body* bi = bodies[i];
    b2Vec2 pi = bi->GetWorldCenter();
    float mi = bi->GetMass();

    for ( int k = i; k < numBodies; k++ ) {

        b2Body* bk = bodies[k];
        b2Vec2 pk = bk->GetWorldCenter();
        float mk = bk->GetMass();

        b2Vec2 delta = pk - pi;
        float r = delta.Length();
        float force = G * mi * mk / (r*r);

        delta.Normalize();
        bi->ApplyForce(  force * delta, pi );
        bk->ApplyForce( -force * delta, pk );
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Box2D 模拟“牛顿万有引力定律” 的相关文章

  • 二维轨道物理

    我正在为游戏开发 2D 物理引擎 我使用简单的迭代方法让重力和质量起作用 我知道我最终必须升级 我可以手动推动群众并观察他们移动 一切都按照我的预期进行 现在我正在尝试用一颗围绕行星的简单圆形轨道上的卫星提前设置游戏世界 为此 我需要在给定
  • 对推力从当前速度矢量到目标矢量的平滑变化进行编程

    TL dr 我不确定如何计算一个矢量与另一个矢量之间的推力的平滑过渡 我正在编写一个简单的游戏 敌人在开放空间 没有墙壁 中追赶玩家 我独立计算敌人的 x 和 y 速度 如果敌人朝着玩家的方向前进 则加速它们 如果敌人走错路 则快速减慢它们
  • IPython 中的物理括号符号

    我正在努力拥有ket符号通常在乳胶中写为 ket psi 然而 当写在 当使用以下方式编写时 这也不起作用IPython display latex documentclass article usepackage amsmath begi
  • 带有外部图像的 box2d-js 元素

    到目前为止 在各种 box2d js 实现的示例中 我只能找到形状 球 盒子 等 中定义的元素 有没有办法创建由图像定义的元素 例如一块巨石 您可以使用b2PolyDef and b2PolyShape对象来创建多边形 本文档 http w
  • 资源规格和代理跟踪

    我需要解决一个问题 但由于缺乏 Java 培训 我无法解决该问题 要编写什么代码来跟踪获取资源的代理 让我更好地解释一下 我有一系列房间 每个进入该结构的特工都会占用一个房间 并在整个住宿期间保留该房间 我想实时查看哪些房间被占用以及由哪个
  • R 中的 set.seed() 和 .Random.Seed()

    我正在参加模拟课程 但我无法理解 R 中的 Random seed 我知道我们使用 set seed 以便模拟是可重现的 它本质上是我们的 PRNG 的初始值 有人可以向我解释 Random seed 的作用以及它为什么重要吗 例如我什么时
  • 在anylogic中运行N次模拟

    在我的anylogic项目中 我想终止执行并运行模拟N次 在每次模拟中 我将输出存储在 Excel 文件中 该文件取决于运行计数 我不想通过点击来停止和运行 而是想自动完成 我怎样才能做到这一点 我尝试使用事件并通过 while 循环 my
  • 使用 SUMO 场景的子集进行 OMNeT++ 网络模拟(使用 VEINS)

    我正在尝试使用 OMNeT Veins 和 SUMO 评估在车载网络上运行的应用程序 因为该应用程序依赖于现实的流量行为 所以我决定使用LuST场景 https github com lcodeca LuSTScenario 这似乎是此类数
  • 获得无重力加速度

    我是安卓开发新手 我想获得手机的实际加速度 我找到了一个获得加速度的代码 但它给出了重力加速度 请任何人帮助我找到一种在没有重力的情况下获得实际加速度的方法 这是我找到的代码 请帮我解决这个代码 谢谢 package com SensorT
  • 深层类继承层次结构——坏主意?

    希望高手能指点迷津 非常高的概述是 我不是编码初学者 但对 OOP 仍然是新手 这组消息类是我们正在编写的大型模拟应用程序的核心 我不想愚蠢地这样做 这个接口将应用程序从定序器到执行器切成两半 反之亦然 我的问题是 拥有这么深的继承层次结构
  • 在 pygame 物理模拟中添加 wxPython GUI 元素

    我做了一个pygame物理模拟 抛射运动 但它缺乏交互性 比如接受发射角度 速度等 我想添加带有增加 减少箭头的输入框 但不知道如何去做 谢谢您的帮助 也许你可以尝试PGU http www pygame org project 108 菲
  • numpy正半定警告

    在我正在编写的Python脚本中 我正在使用表达式模拟多元正态随机向量 np random multivariate normal np zeros dim obs y cov 我的脚本运行 但生成以下警告 RuntimeWarning c
  • 这个洗牌算法有什么问题吗?

    我一直在做一些休闲假期计算 我的迷你项目是模拟意大利游戏 tomboli 一个关键的组成部分是对以下过程的模拟 游戏由一名男子控制 他拿着一袋 90 个弹珠 编号为 1 到 90 他从袋中随机取出一颗弹珠 每次向玩家喊出弹珠编号 经过一番思
  • 根据质量和弹跳系数计算球与球碰撞的速度和方向

    我基于以下代码使用了this http en wikipedia org wiki Elastic collision One dimensional Newtonian ballA vx u1x m1 m2 2 m2 u2x m1 m2
  • 在 box2d 主体顶部绘制字体

    如何在静态 box2d 主体顶部绘制文本 字体 背景 我能够正确地在身体顶部绘制精灵 我通过拥有一个来做到这一点box2dSpriteBatch像这样投影在 box2dCamera 上box2dSpriteBatch setProjecti
  • 不同 Android 设备上 box2D 中出现奇怪的“口吃”

    我正在用 C 同时开发引擎和游戏 并使用 box2D 作为物理后端 我正在不同的 Android 设备上进行测试 在三分之二的设备上 游戏运行良好 物理效果也很好 然而 在我的 Galaxy Tab 10 1 上 我偶尔会遇到某种 口吃 的
  • 如何在 box2d 中停止作用在物体上的力

    我正在 iPhone 上使用 box2d 来创建游戏 我的身体受重力影响向下移动 而不是向右或向左移动 它会被另一个物体击中 然后向右或向左移动 然后我有一个重置按钮 可以将身体移回到起点 唯一的问题是它仍在向右或向左移动 如何抵消球已经行
  • IOS Box2D - 身体遵循基于速度波动的点数组的特定路径

    我有一个关于身体的问题 它遵循特定的路径 首先是将身体移动到目标点的方法 const float destinationControl 0 3f b2Vec2 targetPosition path counter b2Vec2 missi
  • iPhone Simulator - 模拟慢速连接?

    有没有办法减慢 iPhone 模拟器的互联网连接速度 以便模拟当您处于蜂窝网络速度较慢的位置时应用程序的反应 如何安装 Apple 的网络链接调节器 这些说明截至 2019 年 10 月有效 警告 如果您刚刚升级到新版本的 macOS 确保
  • 在 libgdx 中渲染 box2d

    我有一个使用 FitViewport 的大小为 800x480 的游戏世界 并且最初使用像素渲染 box2d 实体 固定装置 因此所有物理效果都显得浮动且缓慢 查看文档后 我意识到 box2d 使用度量单位 因此我将 box2d 位置和大小

随机推荐

  • Python:与 list.remove 混淆

    我对 Python 很陌生 很抱歉这个可能很简单的问题 虽然我现在花了2个小时才找到答案 我简化了代码来说明问题 side 5 eva side print str side side before print str eva eva be
  • 限制Spritekit游戏中GUI元素的比例

    由于帖子太大 我提前道歉 但是每个尝试过制作某种通用应用程序的人都知道这是一个相当有问题的东西 所以请对我宽容一些 The goal 我想要实现的目标 如上图所示 是在 iPhone 5 和 6 上使用 2x 资源 并保持应用程序的相同外观
  • 动态模块/服务配置和 AOT

    我需要根据运行时开关动态配置一些 Angular 服务 在 AOT 之前的几天 我使用以下代码让它工作 NgModule imports HttpModule providers export class MyModule static f
  • 将地址分配给整型变量

    为什么你可以像这样给整型变量分配地址 编译器不会给出错误 我一直认为你只能将整数值分配给整数变量 int a 0x28ff1c 您可以对 char 变量执行相同的操作 编译器不会给出错误 char b 0x28ff1c 它将在控制台屏幕上输
  • 是否可以为整个应用程序设置自定义字体?

    我需要在整个应用程序中使用某种字体 我有相同的 ttf 文件 是否可以在应用程序启动时将其设置为默认字体 然后在应用程序的其他地方使用它 设置后 如何在布局 XML 中使用它 是的 有反思 这有效 基于这个答案 注意 这是由于缺乏对自定义字
  • NSSoftLinking - 在(空)框架中找不到函数“SLSIsSuppressedByScreenTime”

    在 macOS Catalina 测试版 上 我在 Xcode 11 测试版 中创建了一个新的 macOS 项目 在创建向导中 我选择 Objective C 和 使用 XIB 如果我运行该项目 我会得到以下控制台输出 foo projec
  • 从 Google Dataflow 访问 GKE 中运行的 HTTP 服务

    我有一个在 Google Container Engine 集群上运行的 HTTP 服务 位于 kubernetes 服务后面 我的目标是使用固定名称从在同一 GCP 项目上运行的 Dataflow 作业访问该服务 就像可以使用 DNS 从
  • 外部组件引发异常:Visual Studio 2010:SEHException:是什么原因导致的? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我在调试项目时收到此错误消息 外部组件抛出异常 昨天下
  • 如何柯里化任意数量的 JavaScript 函数?

    假设我有一些功能 function g a b c return a b c 我想将其转换为 柯里化 形式 在引号中 因为它本身并不完全柯里化 function h a b c switch true case a undefined b
  • 如何显示我的可可触摸框架故事板屏幕?

    我创建了一个带有故事板的简单 Cocoa touch 框架 在我的框架中 我有一个 MainViewController swift 视图控制器 我创建了一个新的单视图项目 导入了我的框架并尝试加载我的框架视图控制器 但我得到了黑屏 我不知
  • adb wait-for-device 和 adb wait-for-devices 之间有什么区别吗?

    我使用了两个命令来等待设备出现 adb 等待设备和 adb 等待设备 两者似乎都在等待设备启动 我没有发现它们的行为有任何区别 他们的行为有什么不同吗 添加有关我所做的更多信息 所以这就是我所做的 从android文档中我使用了adb wa
  • JAX WS 客户端无法进行身份验证

    我正在尝试在标准 JAVA 7 JAX WS 工具的帮助下使用安全 HTTPS 模式 Web 服务 此网络服务需要身份验证 我已经成功将证书添加到我的本地 java 密钥库 我在 WSDL 文件的帮助下生成了所有需要的类wsimport t
  • 将段落或单元格旋转任意角度——Itext

    我有一个网站 用户可以在其中上传照片并创建相册 此外 他们还可以在绝对位置 旋转和对齐方式添加文本 文本可以有新行 我一直在使用 Itext 库来自动创建稍后打印的高质量 Pdf 相册 将用户上传的图像添加到 PDF 中非常简单 但当我尝试
  • 如何在Python中的qrcode中心插入标志?

    我在 python 中使用 pyqrcode 模块并用它生成 QR 码 如何将徽标放在二维码的中央 代码看起来像这样 import pyqrcode data Hello World number pyqrcode create data
  • 为什么 C# 中 Int32 结构体的 MinValue 前面有两个减号?

    当我右键单击时int在我的代码中并选择 转到定义 Visual Studio 将打开一个标题为 Int32 来自元数据 的文件 该文件包含以下行 public const Int32 MinValue 2147483648 双 符号是什么意
  • Delphi XE5中的Android后台服务

    我需要为android编写一些服务 使用德尔福XE5 火猴 该服务需要在后台运行并定期读取短信收件箱 将其写入 sqlite DB 短信备份 我知道如何读取短信以及如何将其写入数据库 但我不知道如何使应用程序作为服务在后台工作 有任何想法吗
  • C++ 中的 Python 函数装饰器相当于什么?

    我正在将 Python 指标库移植到 C Python 库提供的一个 API 是函数装饰器 可以轻松记录函数的计时数据 通过将函数定义修改为 timed timing foo def foo foo result foo 本质上变成了 st
  • 为 docker 镜像创建一个图标

    我创建了我的应用程序的 docker 映像 songkong songkong 但我注意到它没有图标 而许多其他 docker 映像却有 如何向 docker 映像添加图标 我的 docker 镜像可在 docker hub 上找到 并非所
  • “发明原则”视频中的 Javascript 树源代码

    Bret Victor 的 Inventing on Principle 视频 http vimeo com 36579366 给我很大启发 另外 我对用 Javascript 绘制的那棵树非常着迷 我没有做过太多图形编程 在我的整个职业生
  • 使用 Box2D 模拟“牛顿万有引力定律”

    我想模拟牛顿万有引力定律使用 Box2D 我浏览了手册 但找不到执行此操作的方法 基本上我想做的是将几个物体放置在太空中 零重力 并模拟运动 有小费吗 实现起来非常容易 for int i 0 i lt numBodies i b2Body