swift - 2D 运动矢量 - 在给定时间计算对象的位置
问题描述
在给定时间移动某些对象时,我无法理解 2D 运动矢量。我对线性代数的了解有限,我真的不知道要寻找的确切搜索词,所以我想知道是否有人可以帮助我,或者至少提示我正确的方向。
我的问题是这样的:
我在空间中有两个点,一个 startPoint 和一个 endPoint。它们都有一个特定的位置,分别表示为 (x_1, x_2) 和 (y_1, y_2)。这两个点都附加了一个时间,分别命名为 t_startPoint 或 t_endPoint。我现在想知道,对于给定的 currentTime(= 基本上是介于 t_startPoint 和 t_endPoint 之间的任何时间点),新点 N 将位于这两个点之间的连接线上的确切位置。我知道描述不是微不足道的,这就是为什么我还添加了一张图片来描述我想做的事情:
到目前为止,这就是我的算法:
函数更新(_时间:Int64){
let t_startPoint: Int64 = 1
let position_startPoint: = (1.0, 1.0)
let t_endPoint: Int64 = 5
let position_endPoint: Vector = (4.0, 5.0)
let currentTime = 3
let duration = t_endPoint - t_startPoint
let x = position_startPoint.x + ((position_endPoint.x - position_startPoint.x) / Float(duration)) * (Float(currentTime - t_startPoint))
let y = position_startPoint.y + ((position_endPoint.y - position_startPoint.y) / Float(duration)) * (Float(currentTime - t_startPoint))
//
然而,无论我做什么,我的对象都在不断地超调,来回不规律地移动,我不知道从哪里开始。任何帮助将不胜感激!
解决方案
对于匀速运动,有关系:
(t-t1) / (t2-t1) = (x-x1) / (x2-x1)
x = x1 + (x2-t1) * (t-t1) / (t2-t1)
所以你的表达看起来是正确的。查看:
1 + (4-1) * (3-1) / (5-1) = 1 + 3 * 2 / 4 = 2.5 - exact middle, OK
推荐阅读
- vue.js - 分辨率降低时的 Vue-Grid-Layout 响应组件
- javascript - 在 React js 项目的 Chakra ui 菜单中创建一个数字循环
- java - 为什么 Hibernate 添加新角色而不是在外键列中添加角色 id?
- r - 从 uniprot 加入 r 中检索 Fasta
- symbols - 将 xcarchive 转换为 ipa 时保留符号
- python - 如何在我想要的 html 页面中显示 Django 模型?
- javascript - 如何正确加载 Nuxt Js 项目中的脚本文件
- scroll - 当单击任何 radgrid 编辑时,我的页面会被回发,并且滚动位置页面会转到顶部窗口
- php - TCG\Voyager 没有得到关于关系的翻译
- reactjs - reactstrap 是否可以与 bootstrap v5 一起压缩