Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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/6/codeigniter/3.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 为什么要用向量的sqrt来创建单位向量_Swift_Math_Vector_Sprite Kit - Fatal编程技术网

Swift 为什么要用向量的sqrt来创建单位向量

Swift 为什么要用向量的sqrt来创建单位向量,swift,math,vector,sprite-kit,Swift,Math,Vector,Sprite Kit,我只是在学习一个关于精灵套件的很棒的教程: 有一件事我很好奇,单位向量的创建。 在本教程中,通过调用normalize函数创建单位向量: func length() -> CGFloat { return sqrt(x*x + y*y) } func normalized() -> CGPoint { return self / length() } 这稍后用于将“偏移”向量转换为单位向量: let offset = touch

我只是在学习一个关于精灵套件的很棒的教程:

有一件事我很好奇,单位向量的创建。 在本教程中,通过调用normalize函数创建单位向量:

    func length() -> CGFloat {
      return sqrt(x*x + y*y)
  }

    func normalized() -> CGPoint {
        return self / length()
 }
这稍后用于将“偏移”向量转换为单位向量:

let offset = touchLocation - projectile.position

let direction = offset.normalized()

我不明白,为什么你用一个squrt计算向量的长度,然后用结果除以向量。难道你不能把向量本身除以1吗?

用向量除以向量是不可能的-这样的操作根本没有定义,一般来说也不能有意义地定义

你能做的就是将一个向量除以(或乘上)一个数字,这个数字就是将向量的每个元素除以(或乘上)这个数字。特别是,将向量的每个元素乘以或除以相同的数字将保持其方向不变(只要该数字为正数),并将其长度乘以或除以该数字

因此,将(非零)向量除以其自身长度将保持其方向不变,但将改变其长度,使其新长度等于其旧长度除以其旧长度-也就是说,向量的新长度将为1,这(根据定义)使其成为单位向量


(唯一不起作用的情况是全零向量,其长度为0。不可能将全零向量转换为具有相同方向的单位向量,这既是因为没有定义零除以零的结果,也是因为全零向量无论如何都没有方向。)

因为数学?平方根方程是两点之间的距离——对于向量,其中一个点隐式为(0,0)。根据定义,单位向量的长度为1,因此它需要沿着这样的方向进行“缩放”。但是向量本身不代表长度吗?无论如何,你会如何“将向量自身分割”?向量通常没有定义乘法逆。@Gabkano哦,我看到了混淆。首先,没有向量的一般“划分”。其次,如果我们假设
x/x->1
(其中x是一些向量,某些特殊规则允许),我们最终得到一个常数1;但所需的结果是
vector/scalar->normalized_vector
,其中生成的类型仍然是向量,而不是常量/标量。