【发布时间】:2017-06-17 01:17:48
【问题描述】:
我有一个模拟,我有一个气球在屏幕上弹跳,每个气球都附有一根绳子。它的作用就像一个约束。绳子应该服从重力,这样如果气球不是最大长度,应该有松弛垂下。
为了解决这个问题,我用线段来表示字符串。我让绳子开始垂直悬挂,然后遍历每个段,将其指向气球,然后定位它以使其连接。这使行为非常接近我想要的,但是为了确保它不会离开中心,我将它翻译回它所在的地方。问题是结束不再是连接的。如果我不必将字符串重置为垂直位置,这将起作用,但我必须确保计算松弛度。
我添加了一个临时解决方案,再次对其进行迭代以重新连接它,行为还不错,但绝对不现实。可以在这里看到一个例子:http://www.mikerkoval.com/simulation/balloons
点击创建气球。我不确定如何模拟重力。有没有更好的方法让这更现实?
-----编辑----
我很难在悬链函数中解决我的值。
我将我的功能定义为:
var k = function (a){
return Math.pow((2 * a[0]*Math.sinh(h/(2 * a[0])) - sqrt(s*s- v*v)), 2)
}
然而,当我打电话时
var sol = numeric.uncmin(k, [1]);
它运行了一会儿然后抛出一个 Nan 错误。我正在尝试找出问题所在,但我收效甚微,因为我正在努力了解 uncmin 发生了什么
【问题讨论】:
-
您的问题有几个问题。询问如何设计物理模拟的问题非常广泛,对于编程网站来说并不是真正的话题。我们倾向于关注具体的编程问题,而不是系统设计。另外,请不要进行使现有答案无效的编辑 - Gene 的答案与您编辑的代码无关。请查看help center 和How to Ask 了解更多信息。
-
感谢您的反馈。我在代码中进行了编辑,因为我不确定我是否走在正确的轨道上,而且他似乎有一个更好的主意,并且想知道我是否可以获得反馈。我并不是要否定他的回应,我正在使用他的方法并寻求洞察力。
标签: simulation physics inverse kinematics