Skip to content

Modern Math Normalize

Paul Squires edited this page Oct 19, 2026 · 5 revisions

Home › Math Library › Math Library › Normalize

Normalize

Returns a vector of length 1 in the same direction; a zero vector stays zero.

Syntax

Normalize( byref a as Vec3 ) as Vec3

Notes

  • A zero vector normalises to zero, not to a NaN: there is no direction to preserve, and returning zero is the answer that does not poison everything downstream.
  • Overloaded for Vec2, Vec3 and Quat -- a quaternion has to stay normalised to represent a rotation at all.
  • One square root, so the result is accurate to that bound rather than exact.

Examples

#import "std/numeric"
using numeric

dim as Vec3 v = type<Vec3>( 3, 4, 0 )
dim as Vec3 n = Normalize( v )

print Length( n )            '' 1
print n.x & " " & n.y        '' 0.6 0.8

'' A ZERO vector gives zero rather than a NaN
dim as Vec3 z = type<Vec3>( 0, 0, 0 )
dim as Vec3 zn = Normalize( z )
print zn.x & " " & zn.y & " " & zn.z          '' 0 0 0

Library: Math Library
Category: Math Library
Documented under: Members

Clone this wiki locally