La base de la interpolación lineal en CG: explicación del conocimiento básico de funciones afines
Capítulos completos
En los capítulos 12 y 13, analizamos la interpolación lineal de variables de mutación. Para comprender este tipo de material, primero debemos aprender algunos conceptos simples sobre funciones afines.
Siempre que una función tenga la siguiente forma, la consideramos una función afín de la suma variable.
Esta función tiene suma constante. Esta expresión también se puede escribir como
Esta función a menudo se llama "lineal" porque contiene un término constante adicional (), por lo que usamos el término afín. Se utilizó la misma terminología para las transformaciones afines en el Capítulo 3 (afín) porque estas transformaciones permiten términos constantes adicionales, en cuyo caso representan transformaciones traslacionales.
Obviamente, en algún lugar la forma de evaluar dicha función es simplemente insertar la variable (B.1) en la ecuación. Continúe a lo largo de una línea recta en el plano (por ejemplo, a lo largo del lado de un triángulo o a lo largo de una línea horizontal) en pasos espaciados uniformemente y evalúe rápidamente la función en cada paso. De hecho, debido a que la función es afín, cada vez que nos movemos a lo largo de un vector unitario fijo, la función cambia en una cantidad fija.
Ya hemos visto ejemplos de funciones afines 2D. Recuerde del Capítulo 11 que la transformación de proyección 3D asigna objetos coplanares en 3D a objetos coplanares en 3D. Esto da un triángulo en 3D, un cuadro de ojo seleccionado y una matriz de proyección. El valor de un punto en el triángulo en 3D es una función afín del valor de ese punto.
Si damos un valor, los valores de la función de tres puntos (no lineales) en el plano, como por ejemplo los vértices de un triángulo, determinan la función en todo el plano. En este caso decimos que la función es una interpolación lineal de los valores en los tres vértices. La evaluación de un volumen de interpolación lineal de tres vértices se denomina interpolación lineal.
Para calcular la función sobre las coordenadas de los tres vértices, tenemos
Invertir la expresión y dar la suma, podemos entender cómo determinar el valor.
Diremos que una función es afín en suma de variables si tiene la siguiente forma.
Esta función tiene suma constante. Esta función está determinada únicamente por los valores de los cuatro vértices del tetraedro tridimensional.
Dado un triángulo en 3D, supongamos que especificamos valores de función en tres vértices. Puede haber muchas funciones afines que sean consistentes en estos tres valores de función. Pero cuando se limitan a un plano triangular, todas estas funciones serán consistentes. De esta manera, podemos llamar a esta función de restricción en el triángulo un volumen de interpolación lineal en el vértice. Todavía podemos registrarlo en la forma de la ecuación (B.3), aunque la constante ya no es única.
En la Sección 6.3, nuestro sombreador de vértices devolvió gráficos por computadora en 3D y variables mutables. Cuando asociamos cada vértice de un triángulo con un color, la interpretación más natural es que queremos que el color de los puntos dentro del triángulo esté determinado por una función de interpolación lineal única en el triángulo que es afín en las coordenadas del objeto.
En gráficos por computadora, podemos usar el mapeo de texturas para pegar texturas en triángulos. En este proceso, asociamos dos valores (llamados coordenadas de textura) a cada punto del triángulo. Si especificamos esta acción de pegado asociando coordenadas de textura con cada vértice de un triángulo, entonces la interpretación más natural es que queremos determinar las coordenadas de textura de los puntos dentro del triángulo usando funciones de interpolación únicas correspondientes en el triángulo, estos puntos son afines.
Como ejemplo bastante autorreferencial, incluso consideramos cada una de las tres coordenadas de objeto de un punto del triángulo. Por ejemplo (es decir, cuándo). Esto significa que en nuestro sombreador de vértices, los tres vértices en vPosition deben interpretarse como tres funciones en valores de coordenadas.
Debido a esto, la semántica predeterminada de OpenGL es interpolar todas las variables en funciones en triángulos, que son afines en OpenGL. Como veremos más adelante en la Sección B.5, esto es equivalente a una función afín en coordenadas oculares, pero no a una función en coordenadas normalizadas de dispositivo.
Cuando estamos restringidos a triángulos en 3D, si tenemos funciones paralelas en variables, entonces podemos aprovechar el hecho de que el triángulo es un plano para registrarlo como una función que es afín en solo dos variables. Por ejemplo, cuando se proyecta sobre un plano, suponiendo que un triángulo tiene un área distinta de cero, en cada punto del triángulo en 3D el valor de es en sí mismo una función afín en, digamos, una variable. Para usted, puede usar esta expresión, que puede insertar en la expresión afín de la función. Esto nos da una función de la forma
Esta expresión representa una constante. Una vez completado este paso, la dependencia del valor desaparece y lo que queda es simplemente alguna función afín en la variable. Teniendo esto en cuenta, podemos calcular directamente los factores apropiados usando la ecuación (8.2).
Supongamos que tenemos una expresión matricial de la siguiente forma
Esta expresión es para una determinada matriz m (aquí m ni siquiera es necesariamente una matriz afín). Bueno, simplemente mira las cuatro filas de la matriz de forma independiente y verás la función paralela de la suma.
Si tenemos una función que es afín en variables, entonces, dada la relación en la ecuación (B.4), podemos ver que la función también es afín en variables (de hecho es lineal). Para comprender esta situación, tenga en cuenta:
La expresión es específica de un valor.
El único momento en el que debemos prestar atención es cuando se completa la división. Por ejemplo, tomemos una relación.
Normalmente este no es el caso: una función es afín en una variable, es afín en una variable o. En el Capítulo 13 veremos cómo obtener esta función no afín de manera eficiente.