Normalizing A Vector
sturlamolden
sturlamolden at yahoo.no
Tue Aug 3 04:37:46 CEST 2010
On 30 Jul, 13:46, Lawrence D'Oliveiro <l... at geek-
central.gen.new_zealand> wrote:
> Say a vector V is a tuple of 3 numbers, not all zero. You want to normalize
> it (scale all components by the same factor) so its magnitude is 1.
>
> The usual way is something like this:
>
> L = math.sqrt(V[0] * V[0] + V[1] * V[1] + V[2] * V[2])
> V = (V[0] / L, V[1] / L, V[2] / L)
>
> What I don’t like is having that intermediate variable L leftover after the
> computation.
L = math.sqrt(V[0] * V[0] + V[1] * V[1] + V[2] * V[2])
V = (V[0] / L, V[1] / L, V[2] / L)
del L
But this is the kind of programming tasks where NumPy is nice:
V[:] = V / np.sqrt((V**2).sum())
Sturla
More information about the Python-list
mailing list