问题标签 [kinematics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
physics - 如何确定何时加速和减速以到达给定目的地?
我正在创建一个电脑游戏,其中有一辆电脑控制的汽车需要沿直线行驶(从而使这个问题有效地成为一维问题)并以 0 速度到达目的地并停下来。这辆车每秒钟都在“思考”,并决定是否(以及多少)加速或减速。
总而言之,我希望汽车尽可能地加速,然后尽可能快地停下来。
以下是汽车必须遵守的变量:
- RemainingDistance
= 我们当前到目的地的剩余距离(以米为单位)。
- Velocity
= 我们当前朝向目的地的速度,以米/秒为单位。
- MaxVelocity
= 汽车可以达到的最大速度。
- Acceleration
= 每秒速度的变化。汽车可以每秒将其加速度更改为 [0, Acceleration] 范围内的任何数字。
- Deceleration
= 每秒速度的变化。汽车可以每秒将其减速度更改为 [0, Deceleration] 范围内的任何数字。
所以为了尽可能清楚,这是每秒运行一次以更新汽车模拟的数学:
Acceleration
= 计算机选择的 [ Deceleration
, Acceleration
] 之间的某个数量
Velocity
= Velocity
+Acceleration
RemainingDistance
= RemainingDistance
-Velocity
所以我的问题是:每次汽车“思考”时,它应该使用什么公式来确定理想值,Acceleration
以便在尽可能短的时间内到达目的地(最终速度为 0)?
(如果汽车的初始速度太高,并且在到达目的地时不能足够快地减速以达到 0 速度,那么它应该尽可能靠近目的地停下来。)
请让我知道,如果你有任何问题。
computer-vision - 从 3D 手部关键点获取旋转和平移
我目前有一个稳定的手掌 3D 关键点来源。我想知道如何在几帧后进行一些随机运动后对我的手进行转换。
我的重点是手腕,每个手指的关节。
谢谢!
physics - 推导恒定加加速度的运动学方程
我试图找到非常有用的恒定加速度方程的恒定加加速度模拟
它没有时间术语,如果您正在寻找其他参数,这很有用。
到目前为止,我已经推导出了加速度、速度和位移变化的简单方程:
非常感谢任何帮助提供方程以在没有时间的情况下找到常数加加速度方程。干杯!
physics - 规划两艘宇宙飞船之间会合的算法
我正在尝试找出一种在两艘宇宙飞船之间建立会合点的算法。
没有重力或阻力。两艘宇宙飞船在开始时都有一个位置和一个速度。B 飞船在没有加速的情况下继续前进,所以 A 飞船需要加速以拉近它们之间的距离,然后在到达 B 飞船的位置时匹配速度。
飞船可以瞬间改变推力方向,但只能使用最大加速度或根本不使用加速度。我还想限制机动期间飞船之间的速度差异。
我希望输出采用多个轨迹腿的形式,即:leg1:加速方向 x t1 秒,leg2:滑行 t2 秒,leg3:加速方向 y t3 秒。
我不需要最佳解决方案,但我希望它“看起来正确”。
我试图做一个脉冲来平衡速度并将它添加到一个向宇宙飞船 B 移动的脉冲,但即使宇宙飞船 A 最终以正确的速度结束,它也无法到达目标位置。我自己尝试了这些冲动,它们似乎按预期执行,所以我猜这是我将它们加在一起的方式,这就是问题所在。我不知道我是否执行不正确,或者这种方法根本行不通。我希望有更强的数学和物理技能的人能启发我。
这是我正在使用的代码:
以及计算接近腿的功能:
math - 给定位移和离散时间的恒定减速度的最大可停止速度
我想知道,我可以行走的最大速度是多少,并且能够通过以速度 0 达到位移 0 来制动。
我需要一个适用于离散时间的方程。
我如何更新和移动身体?
一、速度更新
二、位置更新:NewPosition = LastPosition + Velocity
因此,例如,预期结果表如下:
表中的所有这些数据都是使用我所做的模拟测试的,但我想找到一个给出这些值的方程。
请记住,我的模拟时间是离散的,因此连续时间方程将不起作用。
如果您有任何问题,请告诉我,提前谢谢
javascript - 考虑随时间的加速度和减速度的对象插值
我正在用 Javascript 构建一个模拟器,并努力理解物理和运动学的基础知识,因为我毕业已经有一段时间了。无论如何,我有一个应该模拟时间的循环,并且循环的每次迭代都等于 1 秒,并且我有一个要从点A
( [150, 50]
)移动到点B
( [1, 1]
) 的对象。物体的最大速度为10
,加速度为4.9
,减速度为-4.9
。我正在重新计算循环的每次迭代(1秒)的目标位置,但是当我必须减速时它不起作用,因为在某些时候速度是负的。考虑到从 A 点移动到 B 点的每 x 秒的加速度和减速度,是否有任何公式可以用来计算插值?
这是我的代码的当前状态:
physics - 计算/近似刚体上的速度和旋转冲量,只给定一个位置的力和刚体的质心?
我正在开发一个计算着色器,它允许流体粒子引擎(NVidia Flex)和刚体物理引擎(Unity3D Engine)之间的双向物理交互。
基本上对于计算着色器,我使用 5 个输入缓冲区:
(float4)粒子速度/形状接触指数
(float4)形状质心
(int)形状标志 - 动态与静态等
(int)粒子指数
(float4)粒子位置和质量
和 2 个输出缓冲区:
(float3) 速度增量
(float3) 旋转速度增量
我正在寻找的功能是最小的,不需要准确,它只需要有点可信,因为我主要只是将它用于视觉效果。我知道我可以使用 NVidia flex 粒子创建刚体约束并使用它,但在我的情况下,这不切实际,因为我的流体模拟使用非常小的粒子,而中等大小的rigiddodies 将使用 NVidia 刚性约束的粒子比文档多得多建议每个身体说。
所以无论如何,我已经到了这样的程度,在我的着色器中,我需要一个物理公式来获取世界空间中力的原点、力矢量、世界空间中形状的质心,我需要它给我形状的净增量速度(假设密度均匀)和形状的净旋转速度。对于每个形状与粒子之间的每次接触,此功能将多次应用于每个形状。
这是一些伪代码:
如果有人知道一个相对简单的公式来合理有效地计算甚至近似这些速度和旋转力,请告诉我。我搜索了谷歌,但所有关于此的文章似乎都超出了我的想象。我只是认为我没有足够的运动学经验和知识,还无法自己弄清楚这些公式。