首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >统一物理学-如何使物体下垂,然后像在太空中与重力一样?

统一物理学-如何使物体下垂,然后像在太空中与重力一样?
EN

Stack Overflow用户
提问于 2016-11-13 02:26:41
回答 1查看 883关注 0票数 0

好吧,我刚进入了联合的物理领域,我也看过联合的论坛,但是我想不出如何创造这个与重力相关的特殊效应-

我有这些质量为100的刚性物体,我可以把它推下平台(我的游戏是一堆设置在空间中的平台)进入开放空间。因为它们受到重力的影响,所以它们会掉下来。

我需要的是物体从平台上滑落下来,稍微慢一点,然后浮起来,然后浮在那里。就像在太空中被推开,但他们不能继续前进。先停下来,然后站起来,停下来,浮起来。

这似乎比我想象的要复杂得多,因为我一直在玩重力和高数值,它们会直线下降(很明显,不会掉出去),当它们被推开的时候,低值会浮在上面。似乎没有一个甜蜜的地方,他们既不下去,也不上去,只是鲍勃。

我怎样才能做到这一点?我的质量是100。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 17:07:17

我的建议是实现一个力函数,试图类似于Arkimedes的原则。关键是,潜势取决于物体向下的距离:物体越深入水中,升力就越大。因此,这里的关键函数(也是最棘手的函数)是volumeBeneathSurface

代码语言:javascript
运行
复制
double liftForce(object)
{
    const double waterLevel = 0.0;
    const double density = 1000.0; // kg/m^3 -- using water atm

    double vol = volumeBeneathSurface(object, waterLevel);

    double displacedMass = vol*density; // density = m/vol
    double displacedWeight = displacedMass*gravity; // F = m*a
    return displacedWeight;
}

现在,这里棘手的部分是计算水面下的体积。想象一个非常复杂的几何学,它可能会被旋转--它可以变成你想要的复杂的。最简单的情况可能是用一个不旋转的盒子来近似你的形状。

代码语言:javascript
运行
复制
double volumeBeneathSurface(object, double surfaceLevel)
{
     // assuming the object has `height`, `width`, and `depth`
     // also assuming its coordinate is references from the center of the object
     double r = object.y - surfaceLevel - object.height/2.0; // How much of the object is beneath the surface
     if (r > 0)
         return 0.0; // the object is purely above
     else if (r < object.height)
         return object.height*object.width*object.depth; // the whole object is beneath
     else
         return abs(r)*object.width*object.depth; // partly under
}

现实的东西在水中上下起伏,但最终运动消失了。这是由于能量转移到物体并在水中产生波浪。我们在这里没有这样的效果,所以我们的目标很可能永远上下摆动。你能做的就是给物体增加一些额外的摩擦力,这样运动就会消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40569923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档