iOS沙盒物理学

3
什么是使沙粒在视图中动画的最佳方法? 基本上,我想用小沙子状颗粒物半填充iOS设备的屏幕,然后允许用户旋转和摇晃设备来控制沙子的位置。
假设我以前从未进行过任何物理编程,有人可以推荐一篇教程或向我展示如何完成吗?
谢谢,
查询。
更新: 我现在遇到了this(我的应该是2D)-如何将类似的东西引入我的应用程序?

请注意,干沙子具有“离斜角”,这本质上是锥形堆的侧面坡度,如果您从小型滑槽中滴落沙子,则会形成这种堆。更圆的沙粒具有较浅的离斜角,而尖锐/角形颗粒具有较陡峭的离斜角。 - Hot Licks
你可以从物理学堆栈交换论坛中获取一些进一步的想法。 - Hot Licks
谢谢 - 我会去看看physics.stackexchange.com。 - Max Chuquimia
2个回答

1

使用空间索引来查找最近的粒子以检测碰撞,并使用积分技术进行力(加速度)-速度-位置之间的转换,仅使用重力作为外部力将为您提供沙盒。

如果使用后碰撞检测,则需要选择一个好的由粒子势能导出的排斥力

我建议您使用截断的Lennar-Jones势和Verlet积分器。比Runge-Kutta更容易,比Euler更精确。因为它用于分子动力学。您不需要使用其他力。只需使用排斥力、重力和壁力即可。

如果您的模拟器中有子弹,您可以为其使用欧拉积分。我认为这对于自由落体但不碰撞的沙粒是可接受的。当它们彼此靠近时,最好使用Verlet或Runge-Kutta。

上述所有内容都假定您的积分步骤非常大,以至于能量不会被保留甚至会减少。如果您的积分足够好以保持能量不变,则需要给您的粒子摩擦力以使沙子减速,否则您的粒子将到处爆炸。


谢谢 - 我在编码部分时会使用这些信息。但我仍然不确定从哪里开始... Box2d? - Max Chuquimia
我不确定是否尝试对每个沙粒进行建模——这在计算上是非常耗费资源的。相反,你可以将其视为一种流体流动问题,但其中涉及到的流体是非牛顿流体。(这与玉米淀粉实验相反——沙子在静止时变硬,在运动时变成流体。) - Hot Licks
啊!这非常聪明!Solid sand:没问题!谢谢你的提示! - Max Chuquimia

0

如果你想在iPhone上实现这个功能,那么你必须考虑一些优化和技巧,因为iPhone无法真正模拟水或沙子。

你的技巧是大部分工作都是绘制场景。

在Box2D中创建一个带有球的场景,球的大小比沙粒大10-20倍。

iPhone可以模拟它。

然后你应该每个球绘制10-20个沙粒。

每一帧你可以检查球是否与其他球碰撞。

如果球没有碰撞,那么这些沙粒就在空中,你应该在彼此之间的某个距离上绘制它们。

如果球与其他球碰撞,则应该一起渲染颗粒。

你还可以检测边缘并在顶部渲染滑翔机沙边界。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接