javascript - 如何根据加速度和摩擦计算速度
问题描述
我正在制作一个突破游戏,我希望球在靠近球拍时放慢速度。
我有加速度矢量a
和速度矢量v
。
我将速度更新为:
v += a * delta;
现在如何添加会降低速度的摩擦力?
解决方案
这取决于您要考虑的摩擦类型。
如果我们谈论的是机械摩擦,它可以添加为
v = (a - f) * delta;
其中f
是某种摩擦系数。
在其他情况下(例如取决于当前速度平方的空气动力摩擦),相关性可能会更复杂,例如某个时刻的速度 [1] 看起来像
v[1] = a * delta - k * v[0]^2 / 2;
delta
时间 1 和时间 0 之间的差异在哪里。
更新
我想在球靠近桨时减慢球的速度,这是空气动力学的吗?
我认为这种情况与某些真实的自然情况无关,您可以使用某种人为的减速。例如:
v = a * delta - Math.sign(a) * Math.min(k / d, maxBrake)
在哪里
k
- 一些摩擦系数d
- 球和最近的桨之间的距离maxBrake
- 限制因素,以便在球就在桨附近时不会过多地降低速度。
这不是唯一的解决方案,而是可能的解决方案。给猫剥皮的方法不止一种。
推荐阅读
- stored-procedures - 为什么 sp_executesql 给出错误消息说必须声明标量变量?
- rest - Jenkinsfile/Groovy:为什么 curl 命令会导致“错误请求”
- ios - 成员“粗体()”需要“字体”类型的参数
- c# - 通过 SQL Server 数据库在 WPF 列表框中获取 System.NullReferenceException
- python - UDPClient.Send 到特定的 IP/Port 没有发送,也没有抛出异常
- ruby-on-rails - 想知道我做错了什么以及从这里去哪里
- java - 给定 Java 中输入请求的单词数,打印一个随机单词数组
- kubernetes - helm_release.teleport:等待状态变为“正在运行”时超时
- java - 向无效主题发送消息时,Spring Kafka 生产者中的无限循环
- javascript - IntelliJ IDEA 中类地图对象的 JSDoc 类型