Swift 为什么要用向量的sqrt来创建单位向量
我只是在学习一个关于精灵套件的很棒的教程: 有一件事我很好奇,单位向量的创建。 在本教程中,通过调用normalize函数创建单位向量: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
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
,其中生成的类型仍然是向量,而不是常量/标量。