LSL Wiki Mirror 10-5-2006: llVecNorm

HomePage :: PageIndex :: RecentChanges :: RecentlyCommented :: UserSettings ::
vector llVecNorm(vector v)

This function returns the normalized (a.k.a. unit) vector representing v. This vector can be multiplied (scalar) by llVecMag(v) to get v again. Since vectors are used to represent direction as well as location, this function returns the 'simplest form' of the vector, otherwise known as the direction of the vector. If you pass a ZERO_VECTOR (<0,0,0>) to this function, it will return ZERO_VECTOR.

Oversimplification starting point: This reduces the vector to "one". In SL the unit of measure is a meter, so it is somewhat useful to think of this as, instead of a direction pointing 20m to a place, how about reducing it to 1m, but still pointing in the same direction. <0,0,2> (2m up) becomes <0,0,1>. Or, on the complex side: <-1.37821, -0.85432, 2.75875> becomes <-0.43069, -0.26698, 0.86211>.

//definition
vector VecNorm(vector v) {
    return (v / VecMag(v));
}

float VecMag(vector v) {
    return llSqrt(v.x*v.x + v.y*v.y + v.z*v.z);
}

float VecDist(vector a, vector b) {
    return VecMag(a - b);
}

Compare with llVecDist, and llVecMag.


Functions | Vector
There is one comment on this page. [Display comments/form]