Actualmente estoy estudiando la iluminación en OpenGL, que utiliza una función en GLSL llamada normalizar. De acuerdo con los documentos de OpenGL, dice que "calcula el producto normalizado de dos vectores". Sin embargo, todavía no explica qué significa "normalizado". He intentado buscar lo que es un producto normalizado en Google, sin embargo, parece que no puedo encontrar nada al respecto. ¿Alguien puede explicar qué significa la normalización y dar algunos ejemplos de un valor normalizado?¿Qué significa normalizar un valor?
Respuesta
Es un término matemático y this link explica su significado en términos bastante simple:
Las operaciones en 2D y 3D gráficos por ordenador a menudo se realizan utilizando copias de vectores que se han normalizado es decir. convertido a vectores unitarios ... La normalización de un vector implica dos pasos:
- calcular su longitud y, a continuación,
- dividir cada una de su (
xy
oxyz
) componentes por su longitud ...
Creo que la confusión proviene de la idea de normalizar "un valor" en lugar de "un vector"; si solo piensas en un solo número como valor, la normalización no tiene ningún sentido. La normalización solo es útil cuando se aplica a un vector.
Un vector es una secuencia de números; en gráficos 3D, generalmente es una coordenada expresada como v = <x,y,z>
.
Cada vector tiene un magnitud o longitud, que se puede encontrar usando el teorema de Pythagora: |v| = sqrt(x^2 + y^2 + z^2)
Esta es básicamente la longitud de una línea desde el origen hasta el punto de <0,0,0>
expresado por el vector.
Un vector es normal si su longitud es 1. ¡Eso es todo!
Normalizar un vector significa cambiarlo para que apunte en la misma dirección (piense en esa línea desde el origen) pero su longitud es uno.
La razón principal por la que usamos vectores normales es para representar una dirección; por ejemplo, si está modelando una fuente de luz que está a una distancia infinita, no puede darle coordenadas precisas. Pero puede indicar dónde encontrarlo desde un punto particular usando un vector normal.
La normalización sí tiene sentido por un solo valor. Eso es lo que hace el signo (x). – Jessy
@Jessy Bastante, pero es mucho menos interesante/confuso que el caso de 3 vectores. – benzado
Probablemente. Creo que ayuda a entender el concepto, sin embargo. Por ejemplo, creo que es útil imaginar tomar el producto escalar de un "vector n> 1" normalizado y un "vector 1 normalizado". Puede visualizar cómo las contribuciones de otras dimensiones no afectan el ángulo entre los vectores. Solo importa la dimensión que coincida con el 1-vector. – Jessy
- 1. ¿Qué significa Visual Studio al normalizar terminaciones de línea inconsistentes?
- 2. ¿Qué significa "donde T: algún valor" significa?
- 3. Cuándo normalizar un vector?
- 4. pandas: normalizar un DataFrame
- 5. ¿Qué significa! Default en un valor de propiedad css?
- 6. ¿Qué significa @! significa en un De declaración
- 7. ¿Qué significa "babosa" significa
- 8. ¿Qué significa un símbolo $ en un JSP
- 9. ¿Qué significa ('../') significa?
- 10. ¿Qué significa Field.Index.NOT_ANALYZED_NO_NORMS significa
- 11. ¿Cómo imprimo el valor del puntero de un objeto Go? ¿Qué significa el valor del puntero?
- 12. ¿Qué significa clonar() un objeto?
- 13. ¿Qué significa "Mavenizar" un proyecto?
- 14. ¿Qué significa exportar un símbolo?
- 15. ¿Qué significa "crear" un programa
- 16. ¿Qué significa instanciar un rasgo?
- 17. ¿Qué significa enjuagar un enchufe?
- 18. ¿Qué significa "?" significa en Java?
- 19. ¿Qué es un PDI y qué significa?
- 20. ¿Qué significa xmlns = "" significa exactamente
- 21. ¿Qué significa el valor predeterminado (objeto)? hacer en C#?
- 22. ¿Qué significa el valor # asociado con la instrucción ARM LDR?
- 23. ¿Qué significa "valor del símbolo" del comando nm?
- 24. ¿Qué significa [] en JavaScript?
- 25. ¿Qué significa '??' significa en C#?
- 26. ¿Qué significa "ruptura BC" significa?
- 27. ¿qué significa "$ &" significa en Ruby
- 28. ¿Qué significa "\\. \", "\ ?? \", "\\? \", "\\"?
- 29. ¿Qué significa "@ + id"?
- 30. ¿Qué significa || =?
¿dónde encontraste eso? En la especificación de glsl existe: normalize (genType x) - Devuelve un vector en la misma dirección que x pero con una longitud de de 1. http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8 .pdf – fen
Aquí, creo que fue lo primero que surgió cuando busqué en Google. http://www.opengl.org/sdk/docs/manglsl/xhtml/normalize.xml – TheAmateurProgrammer
extraño ... pero la descripción es una información adecuada. – fen