use*_*614 2 math vector maxscript
如何在规范化之前对已经规范化的矢量进行非规范化以获得原始值?
例如:
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]
Run Code Online (Sandbox Code Playgroud)
收益率:
vec_length = 1.11803
vec_normalized = [-0.447214,-0.894427,0]
Run Code Online (Sandbox Code Playgroud)
如何从标准化向量[-0.447214,-0.894427,0]中获取原始向量[-0.5,-1.0,0.0]?
谢谢!
你不能.
有无数个向量的归一化形式[-0.447214, -0.894427, 0].
如果你想要一个"更好"的形式,你可以尝试向上扩展到任意数字,随机示例:
我想x成为-3:
scale = -3 / vec_normalized.x;
vec2 = [vec_normalized.x * scale, vec_normalized.y * scale, vec_normalized.z * scale];
Run Code Online (Sandbox Code Playgroud)
结果:
scale = 6.70819787
vec2 = [-3, -6, 0]
Run Code Online (Sandbox Code Playgroud)
但要注意不要选择一个组件0,因为这会产生scale = infinity.