Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 2D运动矢量-计算给定时间对象的位置_Swift_Algorithm_Vector_Geometry_Game Physics - Fatal编程技术网

Swift 2D运动矢量-计算给定时间对象的位置

Swift 2D运动矢量-计算给定时间对象的位置,swift,algorithm,vector,geometry,game-physics,Swift,Algorithm,Vector,Geometry,Game Physics,在给定时间移动某些对象时,我在理解2D运动矢量时遇到问题。我对线性代数的知识有限,我真的不知道要查找的确切搜索词,所以我想知道是否有人能帮助我,或者至少能向我指出正确的方向 我的问题是这样的: 我有两个点,一个起点和一个终点。它们各自有一个特定的位置,分别表示为x_1、x_2和y_1、y_2。这两个点都附有一个时间,分别命名为t_起点或t_终点。现在我想知道,对于给定的currentTime=基本上是t_起点和t_终点之间的任何时间点,在这两个点之间的连接线上,一个新的点N确切地位于哪里。我知道

在给定时间移动某些对象时,我在理解2D运动矢量时遇到问题。我对线性代数的知识有限,我真的不知道要查找的确切搜索词,所以我想知道是否有人能帮助我,或者至少能向我指出正确的方向

我的问题是这样的:

我有两个点,一个起点和一个终点。它们各自有一个特定的位置,分别表示为x_1、x_2和y_1、y_2。这两个点都附有一个时间,分别命名为t_起点或t_终点。现在我想知道,对于给定的currentTime=基本上是t_起点和t_终点之间的任何时间点,在这两个点之间的连接线上,一个新的点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

你要找的术语是插值。