python球物理模拟

2023-11-25

我看过 Peter Colling Ridge 的精彩教程
http://www.petercollingridge.co.uk/pygame-physical-simulation/
我正在扩展 PyParticles 脚本
该代码可以在网站上获得(免费),我正在使用 PyParticles4.py

教程中使用的类

粒子类
具有半径、质量、速度、位置的圆形二维物体
春季班
绑定 2 个对象(粒子)并使用胡克定律(F = -kx) 以确定它们之间的相互作用
环境类
粒子相互作用的环境

我想知道是否可以使用 2 个粒子并创建一个具有特定长度的“Rod”类(如教程中的 Spring 类),并且不允许粒子靠近超过该(指定)长度。
Also,
对每个粒子施加一个力(需要时),这样如果一个粒子被拉向左侧,另一个粒子也会被拉向左侧,但实际上......
就像使用钢棒将两种不同类型的球(从中心)连接起来一样,但是在二维中......
And I 不想使用第三方模块

提前致谢..

编辑/更新:
尝试应用约束定理(失败)
这是代码:

class Rod:
    def __init__(self, p1, p2, length=50):
        self.p1 = p1
        self.p2 = p2
        self.length = length

    def update(self):
        'Updates The Rod and Particles'
        # Temp store of co-ords of Particles involved
        x1 = self.p1.x
        x2 = self.p2.x
        ###### Same for Y #######
        y1 = self.p1.y
        y2 = self.p2.y

        # Calculation of d1,d2,d3 and final values (x2,y2) 
        # from currently known values(x1,y1)...
        # From Constraint algorithm(see @HristoIliev's comment)
        dx1 = x2 - x1
        dy1 = y2 - y1
        # the d1, d2, d3
        d1 = math.hypot(dx1,dy1)
        d2 = abs(d1)
        d3 = (d2-self.length)/d2
        x1 = x1 + 0.5*d1*d3
        x2 = x2 - 0.5*d1*d3
        y1 = y1 + 0.5*d1*d3
        y2 = y1 - 0.5*d1*d3

        # Reassign next positions
        self.p1.x = x1
        self.p2.x = x2
        ###### Same for Y #######
        self.p1.y = y1
        self.p2.y = y2

二维杆有 3 个自由度(2 个速度/位置 + 1 个旋转/角频率)。
我将表示以通常的方式受力修改的中心位置,并使用旋转(为简单起见,围绕系统中心)变量计算粒子的位置。
旋转由力改变

ang_accel = F * r * sin (angle(F,r)) / (2*M * r^2)

Where

ang_accel是角加速度

F是作用在特定球上的力,因此有 2torques* 相加是因为有两个力相加(矢量方式)以更新中心的位置。

r是长度的一半
angle(F,r)是力矢量和半径矢量之间的角度(从中心到受到力的粒子),

So that
F * r * sin (angle(F,r)) is the torque关于中心,以及
2*M * r^2 is the 惯性矩围绕中心的两点系统。

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

python球物理模拟 的相关文章

  • 在 Clojure 中处理两个序列中的值对

    我正在尝试加入 Clojure 社区 我经常使用 Python 我广泛使用的功能之一是 zip 方法 用于迭代值对 在 Clojure 中是否有一种 聪明且简短的 方法可以实现相同的目标 另一种方法是简单地将 map 与一些按顺序收集其参数
  • 如何配置 VS Code 以便能够单步执行调试 Python 脚本时加载的共享库 (.so)?

    从命令行使用 gdb 我可以在加载共享库时中断 知道我有共享库的源代码 如何在 VS Code 中获得相同的行为 对我来说 它以某种方式起作用 这是我的设置 Ubuntu 18 04 调试我从 Python3 加载的 C 共享库 更具体地说
  • 将 for 循环转换为列表理解

    我有一个for循环 将字符串列表中每个元素的子字符串与另一个字符串列表中的元素进行比较 mylist for x in list1 mat False for y in list2 if x 14 in y mat True if not
  • 如何使用Python从pdf文件中删除页面?

    我有一些超过 500 页的 pdf 文件 但每个文件中只需要几页 有必要保留文档的标题页 我确切地知道程序应该删除的页数 如何使用安装在 MS Visual Studio 上的 Python 2 7 环境来完成此操作 尝试使用PyPDF2
  • pythonic方式来反转一个字典,其中值是列表?

    我有一本看起来像这样的字典 letters by number 1 a b c d 2 b d 3 a c 4 a d 5 b c 我想将其反转为如下所示 numbers by letter a 1 3 4 b 1 2 5 c 1 3 5
  • 如何在pytorch中动态索引张量?

    例如 我有一个张量 tensor torch rand 12 512 768 我得到了一个索引列表 说它是 0 2 3 400 5 32 7 8 321 107 100 511 我希望从给定索引列表的维度 2 上的 512 个元素中选择 1
  • 忽略 NaN 的列表理解

    我正在尝试构建一个列表理解 其条件是不导入 nan 值 但运气不佳 以下是当前代码以及结果输出 什么条件会将 nan 从列表中删除 def generate labels filtered df columnName return labe
  • Scrapy规则如何与爬行蜘蛛一起工作

    我很难理解 scrapy 爬行蜘蛛规则 我有一个例子 它并不像我希望的那样工作 所以它可能是两件事 我不明白规则是如何运作的 我形成了不正确的正则表达式 导致我无法获得所需的结果 好吧 这就是我想做的 我想编写爬行蜘蛛 它将获取所有可用的统
  • lxml 属性需要完整的命名空间

    下面的代码使用 lxml python 3 3 从 Excel 2003 XML 工作簿中读取表格 该代码工作正常 但是为了通过 get 方法访问 Data 元素的 Type 属性 我需要使用键 urn schemas microsoft
  • 有一些 numpy.map 吗?

    我可能在这里遗漏了一些明显的东西 但我遗漏了一个功能numpy map 这与 Python 的相同map函数 但将输出收集在numpy大批 例如 我可以有一个图像生成器genImage i 生成 2D 图像 大小 m n 基于单个输入 我想
  • 在 python 中以半小时为增量创建选择列表

    我正在尝试创建一个
  • 如何使绘图的 xtick 标签成为简单的绘图?

    我不想用单词或数字作为 x 轴的刻度标签 而是想绘制一个简单的绘图 由直线和圆圈组成 作为每个 x 刻度的标签 这可能吗 如果是这样 在 matplotlib 中处理它的最佳方法是什么 我会删除刻度标签并将文本替换为patches http
  • 包含文件中的块未被扩展模板填充

    我有一个如下所示的模板 include base top html with context include base nav html with context div Stuff block content endblock div i
  • 从 Python 调试 C 库 (ctypes)

    我有一个使用 ctypes 和 C 共享库 dll 文件 的 Python 程序 作为 IDE 我使用 Eclipse 其中将开发两个项目 C 共享库和使用它的 python 程序 我的想法是 当我在调试模式下启动Python程序时 我可以
  • 将2个暗淡数组“列表列表”输出到python中的文本文件

    简单的问题 我正在创建一个两个暗淡的数组 ddist 0 d for in 0 d 在下面的代码中使用列表 它使用 gis 数据输出距离 我只是想要一种简单的方法来获取数组 列表的结果并将其输出到保持相同的 N N 结构的文本文件 我过去曾
  • 无法使用 pandas 获取平均日期

    我有一个时间序列数据集 我想从中获取平均日期 这是一个人为的示例 显示 pandas datetime64 对象的溢出错误 import pandas as pd import numpy as np rng pd date range 2
  • 带过滤器的 SQLAlchemy func.count

    我正在使用一个进行分页的框架 如下所示 def get count query self return self session query func count select from self model def paginate se
  • 将人员分配到床位 - 自动化方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我每年都会帮助举办青年营 将与会者分配到卧室是一项艰巨的任务 有 92 个卧室 活动持续一周 与会者停留的时间长短不一 而且床需要重复
  • 打开 PDF 到书签/指定目标?

    我正在尝试使用 python 打开特定书签的 PDF 到目前为止 我可以在命令提示符中运行以下命令并得到我想要的 last是 PDF test pdf 中指定目的地的名称 C Program Files x86 Adobe Reader 1
  • Django MySQL 创建表时出错

    我有一个类似的问题这张票 https code djangoproject com ticket 18256在 Django 论坛上提出 我该如何解决这个问题 我还扩展了一个用户模型 如下所示 class Profile models Mo

随机推荐

  • Qt SDK、Apwrapper:它是什么,它有什么作用。

    我已阻止 Visual Studio 的网络连接 使用 Visual Studio 添加安装 Qt SDK 后 我收到一条错误消息 无法连接到 AppWrapper 卸载了 SDK 并且不再尝试连接到 AppWrapper 随 Qt 安装的
  • 关于未引用变量的 JavaScript 闭包

    我知道有关闭包的精彩帖子here and here 但似乎都没有解决我想到的具体情况 这个问题最好用代码来证明 function foo var x var y whatever return function bar alert y va
  • Python 解释器如何在动态类型中工作?

    我读过这个问题 但它没有给我明确的答案 Python解释器如何寻找类型 python解释器如何知道变量的类型 我不是在寻找如何获得类型 我在这里看看幕后发生的事情 在下面的示例中 它如何将类 int 或 string 与我的变量关联起来 它
  • jQuery 图像加载回调

    加载后动态地将图像添加到页面 然后进行用户交互 并且在该图像完全加载后启动功能时遇到问题 我认为使用 jQuery load 方法会很好 但是根据我的控制台和一堆文档 log它从未执行过的业务 见下文 谢谢 body append img
  • 为什么“即使有不同的条件界限,也不能有多个一致性”?

    我希望 Swift 能够让我为具有指定条件的类型创建扩展where堵塞 我想象我可以根据具体的泛型类型值使用不同的扩展来扩展相同的泛型类型 T 但不是 以下示例演示了我的问题 protocol P associatedtype Prop v
  • 线裁剪为任意二维多边形

    如果我得到一条足够长的线段来穿过给定的多边形 该多边形可能是凹多边形或凸多边形 我如何找到多边形中包含的所有相交的光段 如果目标区域不是多边形 而是隐式曲线函数或样条曲线 怎么办 Thanks 对于您的问题确实没有简单的解决方案 尤其是曲线
  • 如何在 Windows XP 中写入 I/O 端口? (德尔福7)

    我试图写入端口 0x60 和 0x64 但没有成功 德尔福代码 procedure PortOut IOport WORD Value BYTE assembler register asm XCHG DX AX OUT DX AL end
  • 计数器每次都会初始化?

    我尝试制作一个简单的计数器 然而我的计数器没有上升 在我看来 好像它们每次都被函数 inc 重新初始化 或者可能 n 1 不起作用 我该如何最好地解决这个问题 inc Int gt IO Int inc n return n 1 main
  • 使用 python 保存换行符分隔的 json(又名 linejson、jsonlines、.jsonl 文件)的模式

    使用 Python 我将 json 文档保存到单独的行中 如下所示 from bson import json util pymongo with open test json ab as f for document in documen
  • Delphi IDE 有 git 插件吗?

    是否有一些不错的 git 集成可以让 Delphi IDE 2010 的工作变得更轻松 您可以使用乌龟Git在 Delphi IDE 2007 及更高版本中 通过文件浏览器功能 TortoiseGit 集成到 Windows 资源管理器中
  • 从活动目录获取用户的密码

    是否可以获取计算机所加入的活动目录上的帐户密码 我知道这听起来可能是一件危险的事情 但我想使用管理员用户的用户 ctx 启动一个进程 而不需要硬编码密码 我正在使用 NET 3 5 SLaks 我知道你是主持人 但在这里 这不是正确的答案
  • 将一张图像移动到另一张图像内

    背景 我允许用户上传蒙版图像内的图像 一旦用户上传图像 我就填充用户上传里面的图像mask image 1 遮罩图像 2 用户上传的图片 3 用户上传的面具图像 最终图像 代码笔 https codepen io kidsdial2 pen
  • 找出哪个进程对 USB 设备句柄具有独占锁

    我有一个使用 CreateFile API 读取 写入 USB 设备的库 该设备恰好实现了 HID 设备配置文件 因此它与 Microsoft 的 HID 类驱动程序兼容 系统上安装的其他一些应用程序正在以读 写模式打开设备 而没有共享模式
  • Firebase 功能无法部署

    我正在尝试创建 Firebase 函数 但遇到部署错误 即使在部署默认函数时也是如此helloworld功能 firebase debug log 文件提到了这一点 Could not find image for function pro
  • ASP.NET 添加一个 httphandler 来编辑下载的文件名

    我的项目中有一个页面DownloadDocument aspx它的代码隐藏是DownloadDocument aspx cs In my DownloadDocument aspx我有一个锚点 它采用如下动态链接 a style margi
  • jquery在CSS动画播放后删除类?

    我有CSS代码 body start webkit animation srcb ease in 4s 1 进入网站后只需播放一次 但问题是动画完成时 我网站上的按钮不起作用 动画完成后如何删除主体类 start 或者在动画播放后删除类延迟
  • 在 Typescript/Angular2 中显示引导箱警报? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想在我的 Angular2 项目中使用 Bootbox 我搜索了很多 但没有任何适合我的解决方案 我也尝试过angular2 modal但在使用过
  • 从 angularjs 中的另一个指令内部添加指令

    从另一个指令中添加指令会使浏览器挂起 我想做的是 1 更改自定义元素指令 例如
  • GMSMapView animateToCameraPosition 放大-缩小动画

    我在 iOS Swift 和 Android 中使用 Google 地图服务 在android中 地图视图有一个方法叫做animatreCamera它有一个动画 其中运动具有 缩小 放大 效果 如果两个摄像机具有相同的变焦 则地图视图将缩小
  • python球物理模拟

    我看过 Peter Colling Ridge 的精彩教程 http www petercollingridge co uk pygame physical simulation 我正在扩展 PyParticles 脚本该代码可以在网站上获