mathvectormaxscript

Denormalize vector


How can I denormalize a vector that has been normalized to get the original values prior to normalizing?

For example:

vec = [-0.5, -1.0, 0.0]
vec_length = sqrt(vec.x^2 + vec.y^2 + vec.z^2)
vec_normalized = [vec.x/vec_length, vec.y/vec_length, vec.z/vec_length]

yields:

vec_length = 1.11803
vec_normalized = [-0.447214,-0.894427,0]

How can I get the original vector [-0.5, -1.0, 0.0] from the normalized vector [-0.447214,-0.894427,0]?

Thanks!


Solution

  • You can't.
    There are infinite number of vectors whose normalized form is [-0.447214, -0.894427, 0].

    If you want a "nicer" form, you can try up-scaling to an arbitrary number, random example:

    I want x to be -3:

    scale = -3 / vec_normalized.x;
    vec2 = [vec_normalized.x * scale, vec_normalized.y * scale, vec_normalized.z * scale];
    

    result:

    scale = 6.70819787
    vec2 = [-3, -6, 0]
    

    But be careful not to choose a component which is 0, because that would yield scale = infinity.