javascript - 绳索模拟html5

标签 javascript jquery html canvas

我正在尝试在网站上模拟物理上正确的绳索。

在网上搜索了一下,我的结论是我需要像box2d这样的物理引擎?

如果我没理解错的话,解决方案是将一个对象分成小段,然后将它们连接在一起并制作动画。另外,我想把物理和浏览器结合起来。这意味着:当我快速向下滚动网站时,绳索必须以正确的物理方式使用react。

这可能吗?

最佳答案

您根本不需要图书馆。 您可以愉快地使用对象、组件或程序代码来执行此操作,并了解基本的机械物理学和一些 2D 几何(基本的微积分可能会有所帮助)。

以优化的方式进行需要做更多的工作。 以模块化和可重复使用的方式进行操作需要一些前期工程。

但是制作一根绳子,并让绳子正常运行是非常简单的。

二维绳索是一系列线段或“骨骼”。 每根骨头都可以围绕其关节弯曲。

您可以将重力或您想要的任何其他力施加到每根骨头上。
每个骨骼都有约束(它附加到的其他骨骼,上方和下方)。
因此,当您更新“绳子”时,您会根据之前和之后的约束更新每个骨骼。
您可以创建一个 anchor - 将绳索的顶部固定在墙上,这样无论其他骨骼如何移动,最顶部的骨骼都将围绕其顶部关节旋转,但不会移动到任何地方。

要将物理应用于悬挂绳索的中间(例如从中间拉动它,然后松开),您可以使用反向运动学来解决作用在一个或两个关节上的力如何影响其他连接的每个关节(以及约束) 关节。

不要把它想象成一条蛇,而更像是一条自行车链条。
链条中的每个“链节”越短,绳索看起来越流畅,但处理所需的时间也越长。
链条中的每个“链接”越长,计算变化的速度就越快,但它在弯曲时看起来越僵硬和 block 状。

查看“Verlet Integration”、“Kinematics”(“Forward”/“Inverse”)并对旋转和沿 2D 向量移动对象背后的数学有一定的了解...
如果您想喜欢鞭子状的东西,而不仅仅是制造波浪,那么里面有一点质量。

剩下的只是循环。

有关基本示例,请参见以下内容:
http://gamedev.tutsplus.com/tutorials/implementation/simulate-fabric-and-ragdolls-with-simple-verlet-integration/

玩得开心。

关于javascript - 绳索模拟html5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168486/

相关文章:

javascript - 单击 React-router 中的链接时,组件获得错误的 props

javascript - 用于保存下拉值的 session 存储

html - 如何修复 wordpress 中的粘性页脚

javascript - 添加滚动条以查看 SVG d3.js 的全部内容

python - 抓取与 'p' 标签关联的 'tr class' 标签值

javascript - 单击按钮时如何更改特定的img src?

javascript - 使用 Firebase 实现无密码登录的最佳方式

javascript - jquery - 复选框 oncheck 总计将更新

javascript - 从数据属性设置 jQuery 插件选项

javascript - $(窗口).resize();不起作用