ccpNormalize源码如下
CCPoint
{
}
从源码中可以看出其调用ccpMult,返回一个结果,那么我们先看ccpMult是做了些什么,源码如下:
ccpMult(const CCPoint& v, const float s)
{
}
从源码看出
现在清楚了ccpMult做了什么,我在返回上面,使用ccpMult源码替换掉ccpNormalize中的ccpMult结果如下:
CCPoint
{
}
此时我们可能迫切的想知道ccpLength是干什么的,那么我就进入ccpLength的源码来看下这个家伙到底做了些什么,ccpLength源码如下
float
{
}
我们知道sqrtf 是求平方根的,但是可能会问ccpLengthSQ又是干嘛的啊,我沉住气,进入ccpLengthSQ方法,一探究竟
static inline float
{
}
进入一看仅仅简单的返回一个ccpDot,然而ccpDot又是干嘛的勒,这个时候,有人可能会放弃下探索,将失去一个揭开其神秘面纱的机会,
我们继续,看下ccpDot干了些啥。
static inline float
ccpDot(const CCPoint& v1, const CCPoint& v2)
{
}
这下我们明白了,ccpDot是将向量v1与v2的x方向、y方向的值分别相乘然后在相加得到一个浮点数,我们现在到底,开始返回,
这时我们清楚了ccpLengthSQ,返回的是 v.x*v.x+v.y*v.y 即向量v的平方和。
我们在往上,看ccpLength,现在明白原来ccpLength是计算向量 v 的大小的,我们将下面的函数合并在一起,ccpNormalize表示如下:
CCPoint
{
}
从公式可以看出ccpNormalize是将向量 v 转换为v的单位向量。至此我们完全清楚ccpNormalize的用法了。