Just wana say that I just discovered that using length(), distance() and "/" division operator is a bad idea, using dot() and pow() is faster and more accurate. Why is the compiler not optimizing that?
to get the length of a vector "v"
l = pow(dot(v,v),0.5f);
if you need to divide a position by the length of "v"
p*pow(dot(v,v),-0.5f)