You are on page 1of 11

INTERPOLACIN

La interpolacin es un proceso por el cual se define un


valor en un punto cualquiera a partir de los valores
31m
30m
conocidos en algunos puntos dados. Por ejemplo:
?
23m
tenemos temperatura, presin y viento en distintas
17m
15m
localidades que cuentan con estaciones meteorolgicas y
queremos estimar el clima en un pueblo cualquiera.
1m
Suponiendo que las estaciones son razonablemente
cercanas, surgen dos preguntas: que estaciones
considero? y cmo calculo los valores desconocidos en
funcin de los conocidos?
En general, tenemos un conjunto finito de nodos o puntos fijos con valores nodales asociados a cada
uno de ellos: {(xi, vi)}, donde xi ={xi, yi(, zi)} es la posicin del i-simo punto y vi el valor conocido en
el punto fijo; se pretende encontrar el valor v asociado a un punto de coordenadas x cualquiera.
El proceso de interpolacin define el valor asociado al punto variable. Podra, por ejemplo, asignarse el
valor del punto ms cercano o una combinacin de valores cercanos o de todos los conocidos. En una
sola dimensin es muy sencillo encontrar el punto ms cercano o los dos nodos que encierran el
punto buscado, pero en ms dimensiones resulta ms complicado.
La forma estndar, para variables continuas, consiste en hacer una suma de valores ponderados:
v(x) = i(x) vi
( i = 1)
El valor v en el punto variable x se calcula asignando, a cada punto fijo, un peso i que depende de la
posicin del punto variable. Normalmente se pretende que el peso de cada punto est en relacin
inversa con la distancia al punto mvil, de ese modo el valor estar ms influenciado por los puntos
ms cercanos. Pero hay muchas formas de definir los pesos. Es justamente, la seleccin de pesos la que
define el mtodo de interpolacin.
Hay muchos mtodos y no hay una nica clasificacin pero debemos mencionar algunas:
a) Mtodos Locales versus Globales: Los mtodos globales consideran todos los nodos. Un ejemplo
es el mtodo de Kriging, muy utilizado en ciencias de la tierra, donde se construyen los pesos en
relacin inversa a las distancias con algunos supuestos de variabilidad. Para los mtodos locales,
en cambio, slo se consideran los nodos cercanos, a los ms lejanos se les asigna peso nulo, en
general se utilizan estos ltimos mtodos pues son algortmicamente ms veloces, sobretodo
cuando se dispone de un mtodo rpido para encontrar el conjunto de nodos cercanos.
b) Interpolacin versus Extrapolacin: En la interpolacin se asume que el punto, cuyo valor se
busca, esta entre los nodos, en caso contrario es extrapolacin. Este concepto (entre) es
trivial en 1D: el punto est entre el nodo extremo izquierdo y el nodo extremo derecho, pero en
ms dimensiones es ms complejo (envoltorio convexo) y en breve lo desarrollaremos.
c) Interpolacin versus Aproximacin: Supngase mvil al punto incgnita, cuando el punto se
mueve el valor cambia. Se denomina interpolacin cuando el punto mvil adquiere el valor nodal
cuando coincide con un nodo: v(xj) = i(xj, xi) vi = vj. El caso contrario recibe el nombre de
aproximacin y el ejemplo ms conocido de aproximante es la regresin lineal o, en general, los
procesos de mnimos cuadrados.
Nodos
Punto Extrapolado
Punto Interpolado
Curva Interpolante

Tramos Extrapolados
Nodos o
Puntos de Control

Curva Aproximante

1/11

Interpolacin afn
La interpolacin afn es una extensin de la combinacin afn de los puntos. Las coordenadas del
punto variable se pueden obtener como combinacin afn de los puntos fijos; una vez hallados los
pesos, se aplican del mismo modo al valor asociado.
x6
x5
x4
Del clculo de la posicin:
x = i(x) xi ( i = 1)
se obtienen los i y luego con esos mismos pesos se calcula:
x
v = i(x) vi
x1
x0
x7
En la figura se representa un conjunto de puntos fijos xi y un
punto variable x, para el cual se pretende interpolar un valor,
x2
asignando pesos a los puntos fijos. Adems se muestra tambin
x3
el envoltorio convexo o cpsula convexa o convex-hull del
conjunto de puntos fijos. El envoltorio convexo se define como el menor convexo que contiene al
conjunto de puntos; es la forma que tomara una banda elstica envolviendo al conjunto. Enseguida
veremos que ese es el lmite de las posiciones que pueden obtenerse con pesos positivos.
El problema de interpolar un valor entre muchos puntos lo iremos resolviendo en forma progresiva. El
caso ms simple lo constituye la combinacin afn 1D de dos puntos:
x = 0 x0 + 1 x1, con 0 + 1 = 1.
{x1,v1}
El resultado es un punto en la lnea que une x0 con x1. Cuando los pesos
{x,v}
estn limitados al rango [0,1] el punto variable estar en el segmento
que une los dos puntos y se garantiza que cualquier variable
{x0,v0}
asociada asumir tambin un valor intermedio. Si en
cambio, algunos de los parmetros sale del intervalo [0,1], el punto sale del segmento y el proceso se
denomina extrapolacin, el valor asociado tambin sale del intervalo [v0, v1].
Para aclarar este ltimo punto reescribimos la ecuacin anterior, asumiendo que v representa cualquier
coordenada (x, y o z) o cualquier valor asociado (temperatura, presin, humedad, color):
v = 0 v0 + 1 v1 = (11) v0 + 1 v1 = v0 + (v1 v0) 1.
As vista la ecuacin, cuando 1 [0,1], queda claro que v adopta valores intermedios entre v0 y v1,
para cualquier variable que sea: coordenada o variable anexada. El punto se mantiene en el envoltorio
convexo de los dos puntos fijos, que es simplemente el segmento [x0, x1] y cualquier valor se mantiene
en el rango de valores [v0, v1]. La combinacin en este caso se denomina interpolacin en sentido
estricto o bien combinacin convexa.
Si se pretende calcular una interpolacin (o extrapolacin) afn con dos puntos fijos, no pueden
obtenerse puntos fuera de la recta que los une y por lo tanto la interpolacin afn no est definida fuera
de la recta; por definicin utiliza los mismos pesos que la combinacin afn, entonces est restringida a
la expansin afn de los puntos fijos que es la recta que definen.
x1
x01
Pasemos a tres puntos fijos. En la figura est marcado x01 como una
x0
combinacin afn entre los puntos x0 y x1. Ahora agregamos el punto x2
x = x012
y hacemos x = x012 combinando x01 y el punto x2.
La multiplicidad de ndices (01, 012, ) es slo para indicar los pasos.

x2
x012 = 01 x01 + 2 x2; con 01 + 2 = 1
x012 = 01(0x0 + 1x1) + 2x2 = 010x0 + 011x1 + 2x2 = 0x0 + 1x1 + 2x2
Podemos ver que se trata de una combinacin afn porque los parmetros suman uno:
0 + 1 + 2 = 01 0 + 01 1 + 2 = 01 (0 + 1) + 2 = 1
Sin ser muy rigurosos podemos considerar demostrado que la combinacin afn de combinaciones
afines tambin es combinacin afn de los puntos fijos. Adems, si los coeficientes estn entre cero y
uno en cada paso, los coeficientes finales () tambin, por ser productos de nmeros entre cero y uno,
por lo tanto: la combinacin convexa de combinaciones convexas es una combinacin convexa. Un
sencillo anlisis de los lmites de cada combinacin (hacerlo) nos revela que, en el caso convexo, el
resultado estar dentro del tringulo marcado: el envoltorio convexo de los tres puntos.
2/11

Aadiendo al esquema un cuarto punto, quinto, etc. llegaremos fcilmente a la conclusin de que la
combinacin afn de un conjunto de puntos, cuando los parmetros estn limitados al rango [0,1], dar
por resultado un punto entre los lmites del envoltorio convexo del conjunto. Es por ello que ste tipo
de combinacin recibe el nombre de combinacin convexa.
x1
x01
x0
x1
x01
x0
x012
x012
x0123
x = x0123
x3
x3
x = x01234
x2
x2
x4
Obviamente, el resultado anterior es vlido en cualquier cantidad de dimensiones y no solo en el plano.
La extensin es trivial puesto que con xi representamos cualquier coordenada o variable asociada.
Se puede pensar en el dibujo de arriba como la proyeccin plana de un resultado multidimensional.
Con lo cual queda claro que la proyeccin ortogonal de una combinacin afn es combinacin afn de
los puntos proyectados y por lo tanto est dentro del envoltorio convexo de los puntos proyectados (la
proyeccin ortogonal es una transformacin afn y por lo tanto preserva las combinaciones afines).
En el caso general de combinacin afn (no-convexa), con al menos d+1 puntos independientes, se
obtiene cualquier punto del espacio de soporte d dimensional. En el espacio tridimensional, con tres o
ms puntos coplanares (mas de tres coplanares tienen dependencia afn) se puede obtener cualquier
punto del plano de los puntos fijos (el espacio soporte es el plano); con cuatro o ms puntos no
coplanares se puede obtener cualquier punto del espacio.
x1
x0
Si al conjunto de parmetros se le impone una restriccin funcional se
P(t)=xii(t)
obtiene un subespacio. Por ejemplo, si cada parmetro i es funcin
continua de otro parmetro t: i = i(t), el resultado es una curva
uniparamtrica como la de la figura. Si en 3D, i = i(s,t) se obtiene una
x2
superficie biparamtrica. Este es el mecanismo que se utilizar mas
adelante para construir curvas y superficies paramtricas (bilineales, Bzier, NURBS, etc.).
En general, los pesos pueden definirse mediante cualquier funcin de las coordenadas, mientras sumen
uno. Por ejemplo, si tenemos dos puntos fijos x0 y x1 y hacemos 0=sen2(t) y 1=cos2(t), si permitimos
que t tome cualquier valor real, tendremos un punto variable rebotando entre los nodos.
Ahora utilicemos el mismo estilo de funciones de peso nolineales, pero para interpolar valores entre
tres puntos en una recta 1D: x0 = 3; v0 = 2; x1 = 5; v1 = 8; x2 = 6; v0 = 4. Hacemos que t vare entre 0 y
1 para el primer tramo y entre 1 y 2 para el segundo. Las funciones de forma sern 1=sen2(t /2) que
vale 1 en 1 y 0 en 0 y 2; 0=2=cos2(t /2), que vale 1 para 0 y 2 y vale 0 para 1, tal como se muestra
en la grfica izquierda. Con esas funciones de forma, se calculan x y v, que se grafican a la derecha.
8

1
0,9

0,8
0,7

0,6
5

0,5
0,4

0,3
0,2

0,1
0

2
0

0,2

0,4

0,6

0,8

1,2

1,4

1,6

1,8

3,5

4,5

5,5

Por ms que la velocidad del recorrido (derivada respecto de t) es variable, el valor asignado resulta
lineal con las coordenadas de x. Esto es as, obviamente, pues ambos reciben el mismo tratamiento.
En general la interpolacin afn ser lineal cuando el valor dependa slo de los nodos del smplice
(segmento, tringuilo, tetraedro, ) que rodea al punto y las funciones de peso de cada nodo valen uno
en su nodo y cero en el resto. Ahora veremos el mtodo estndar para construir funciones de peso
lineales, que ellas mismas varan linealmente en el espacio.
3/11

Coordenadas Baricntricas
Para definir funciones de peso lineales, que recorren el espacio a velocidad constante, se utilizan las
coordenadas baricntricas o coordenadas de rea o funciones de forma lineales, que son slo una forma
de denominar a los pesos lineales de un conjunto de nodos con independencia afn, por ejemplo: dos
puntos, tres puntos no colineales o cuatro que no estn en el mismo plano.
Los pesos de una combinacin afn se denominan coordenadas porque la ecuacin x = i xi define al
punto variable como si los puntos fijos fuesen la base de un espacio vectorial. En particular, cuando los
n pesos valen todos 1/n, el punto que se obtiene es el baricentro (bari ~ peso o presin) o centro de
gravedad o promedio de los puntos.
Partiremos del caso mas sencillo, el de dos puntos que definen un segmento [x0, x1] y analicemos una
variable en particular, que sabemos que vara en forma lineal entre los extremos: la longitud 1 del
segmento [x0, x]: en x0 vale 10 = 1(x0) = 0 y en x1 vale 11 = 1(x1) = , entonces se puede interpolar:
1 = 0 10 + 1 11, con 0 + 1 = 1
0
x
1
1
0
1
1
1
x0
x1
= 0 + ; = /
1
El peso de x1 es proporcional a la longitud del segmento opuesto al punto.
Del mismo modo, o utilizando la suma unitaria, se obtiene que 0 = 0 / . Es decir que la relacin
(cociente) entre las longitudes de los segmentos opuestos es idntica a la relacin entre los pesos
Considerando longitudes con signo, la relacin se cumplir tambin para la extrapolacin. Para definir
el signo se debe establecer un orden de los puntos o una direccin preferencial, por ejemplo de cero a
uno o el vector = (x1 x0), con = ||; y entonces recurrimos a un producto escalar ordenado, que nos
indica si la direccin es igual u opuesta:
1 = (xx0) /
0 = (x1x) /
1 = (xx0) / 2
0 = (x1x) / 2
En una extrapolacin hay una longitud i mayor que el total y una negativa, entonces habr un peso
i mayor que uno y el otro ser negativo, pero los i suman el total y los i suman uno.
En un algoritmo, se implementa la ltima ecuacin, de modo que no se necesita invocar ningn
condicional para averiguar si el punto mvil est entremedio de los nodos; adems, dado que 2 = ,
no es necesario calcular la longitud del segmento que es la raz cuadrada del denominador.
Pasamos ahora a tres puntos no colineales. A la derecha se pueden ver x1
x0
los tringulos que define el punto interpolado x con cada uno de los
0
1
2
lados del tringulo que lo contiene, el rea total es a = a + a + a , la
a2
denominacin de cada uno corresponde al punto fijo opuesto.
h2
2
x
El rea a (lase: a2 y no: a al cuadrado) del tringulo opuesto a
a0
x2: (x, x0, x1) vara linealmente: vale 0 cuando el punto variable est
a1
en la lnea (x0, x1), en particular cuando coincide con x0 (a20 = 0) o
con x1 (a21 = 0) y es igual al rea total a, cuando el punto variable est
en una lnea paralela a la anterior y que pasa por x2, en particular
cuando coincide con ese punto (a22 = a). Es lineal porque tiene base
fija |x1x0| y vara igual que su altura h2 (lase: h2 y no: h al
x2
cuadrado). Interpolando, entonces, para calcular el rea a2:
a2 = 0 a20 + 1 a21 + 2 a22 = 0 0 + 1 0 + 2 a 2 = a2/a.
Del mismo modo, i = ai/a para cualquier vrtice. Esta es la razn por la que tambin se denominan
coordenadas de rea.
Considerando reas orientadas (con signo) hacemos que la relacin tambin resulte vlida para la
extrapolacin. Pero aqu tambin hay que definir un ordenamiento preferencial que, en este caso, se
puede obtener a partir de un producto vectorial realizado con cierto orden. El producto vectorial es el
rea orientada del paralelogramo que definen los vectores, el rea de un tringulo es la mitad, pero los
cocientes entre reas hacen innecesarias las divisiones por dos.

4/11

Definimos:
a = (x1x0) x (x2x0)
a0 = (x1x) x (x2x)
a1 = (x2x) x (x0x)
a2 = (x0x) x (x1x)
2
Notar el orden, que puede (suele) generalizarse como:
+1
ai = (xi+1x) x (xi+2x)
0
1
donde las sumas de ndices se hacen mdulo tres ((i+1)%3; ej:(2+1)%3=0)
La direccin del vector a ser la que define las reas positivas. Para concluir definimos:
i = ai a / a2
Lo mismo sucede con volmenes de tetraedros. Para ese caso, los volmenes orientados de los
tetraedros son productos triples (volumen del paraleleppedo dividido por seis, pero el seis se cancela
en las divisiones):
v = ((x1x0) x (x2x0)) (x3x0)
i = ((xi+1x) x (xi+2x)) (xi+3x) / v
con las sumas de ndices en mdulo cuatro.
Es muy sencillo hacer los algoritmos de modo que realicen estas operaciones en forma ordenada.
Se puede recordar as: el peso de un nodo en un punto variable es igual al cociente entre el rea
opuesta y la total. (O longitudes en 1D o volmenes en 3D)
En el caso de tres puntos no alineados, las lneas en las cuales una coordenada de rea resulta constante
se denominan lneas isoparamtricas; dado que la base del tringulo es siempre el segmento opuesto,
stas son las lneas de altura constante, las paralelas a dicho segmento. Para cuatro puntos no
coplanares, las superficies isoparamtricas sern los planos paralelos a la cara opuesta a un nodo.
En la figura, La recta (x1, x2) divide al plano en dos, podemos
0
0 < 0 < 1
0 > 1
ver que 0 es positivo para cualquier posicin de punto variable < 0
x1
en el semiplano que contiene a x0, es nula en la recta y negativa
en el semiplano opuesto y, como ya vimos, es constante en las
x0
rectas paralelas a la mencionada. La simpleza del clculo de las
reas permite averiguar fcilmente si un punto est o no dentro de
x2
un tringulo (sin hacer las divisiones!) y nos da una pista inmediata
de cmo movernos para averiguar, en una triangulacin, cual
tringulo contiene al punto variable (lo veremos ms adelante).
En 3D las superficies isoparamtricas sern los planos paralelos a la cara opuesta a un nodo.
Las aplicaciones ms interesantes no son nunca las ms simples, normalmente se cuenta con varios
puntos definidos (sin independencia afn). Por ejemplo, se suelen obtener datos del clima (ms de un
valor: presin, temperatura, direccin del viento, velocidad, etc.) en distintos nodos o puntos de
muestreo, que en este caso son estaciones meteorolgicas. Para obtener en forma aproximada un valor
en una localidad cualquiera se puede realizar una interpolacin lineal, pero no queda claro cuales
estaciones meteorolgicas deben tenerse en cuenta, cuales tienen peso no-nulo y que peso tiene cada
una. Un mtodo estndar consiste en realizar una divisin del envoltorio convexo en tringulos no
solapados y cuyos vrtices son los nodos, esto es: una triangulacin del dominio. Para calcular el valor
en un punto cualquiera se pueden utilizan slo las estaciones del tringulo que encierra al punto. sta
tcnica se conoce como interpolacin poli-lineal, las variantes estn dadas por los distintos mtodos
para realizar la triangulacin.
Hay muchas tcnicas (lineales o no) y casi todas se basan en triangulaciones u otras divisiones
estratgicamente simples del dominio.

5/11

Interpolacin afn en coordenadas homogneas e interpolacin hiperblica


La interpolacin afn en coordenadas homogneas no tiene nada de extrao, la coordenada w tambin
resulta interpolada, como cualquier variable ms. Lo extrao aparece al hacer la divisin por w, es
decir la proyeccin. Por simplicidad, llamemos {x,w} a las coordenadas homogneas e y = x/w a las
coordenadas espaciales del punto. *
{x, w} = 0 {x0, w0} + 1 {x1, w1} = {0 x0, 0 w0} + {1 x1, 1 w1}
(0 + 1 = 1)
y = (0 x0 + 1 x1) / (0 w0 + 1 w1)
= (0 w0 x0 / w0 + 1 w1 x1 / w1) / (0 w0 + 1 w1)
= (0 w0 y0 + 1 w1 y1) / (0 w0 + 1 w1)
= 0 y0 + 1 y1
Los pesos proyectados () son distintos que los pesos en el espacio homogneo ():
i = i wi / j j wj = i wi / w
(notar que los i tambin suman uno)
La combinacin que se hizo aqu entre dos puntos se extiende en forma trivial a ms puntos.
Hagamos un par de ejemplos. Tenemos dos puntos en coordenadas homogneas: x0= {0,0,0,1) y
x1={1,0,0,1}; supongamos que los pesos son 0 = 1 = ; el resultado es el punto x = {1/2,0,0,1} que
equivale a y = {1/2,0,0}; en este caso, ambos w valen uno y el resultado no es sorprendente,. Ahora, si
el segundo punto es x1 = {2,0,0,2}, es el mismo que antes pero con distintas coordenadas homogneas
(mismo y, distinto x), el resultado ahora es x = {1,0,0,3/2} con y = {2/3,0,0}. Es como que en el
segundo caso, el segundo punto tiene un mayor peso cuanto mayor sea su w.
Puede pensarse que los wi son pesos adicionales en el clculo del promedio ponderado. De hecho, en
algunos textos (y en particular para curvas y superficies NURBS) se introducen como pesos en lugar
de coordenadas homogneas.
La relacin entre los pesos proyectados i y originales i est alterada con la relacin de los wi:
i / j = i wi / j wj
Aqu se ve que la transformacin proyectiva no preserva la combinacin afn.
El mismo problema se presenta al interpolar los resultados en la pantalla (posicin, color, normal o
textura) cuando en realidad lo que se pretende es interpolar en el espacio, antes de la divisin
perspectiva. La interpolacin hiperblica es la interpolacin en el espacio proyectivo que corresponde
a una lineal en coordenadas homogneas.
En el caso de la proyeccin perspectiva, en el monitor por ejemplo, la coordenada visual z cumple un
papel similar al w del espacio proyectivo, pero se debe recordar que el plano de la imagen se identifica
con el plano near, de donde znear es como la unidad w=1 del plano proyectivo; entonces, en las
frmulas anteriores z/znear cumple exactamente el mismo papel que w pero, dado que son todos
cocientes, znear se cancela y se usa solo z. En la web ese tema se encuentra como perspective correct
(interpolation o texture mapping).
Ejemplo: se quiere averiguar donde se proyecta el punto medio entre x0 y x1 (0=1=), se conocen y0
e y1; se calcula 1=(w1/2)/[(w0+w1)/2]=w1/(w0+w1); y luego y=(11)y0+1y1=(z0y0+z1y1)/(z0+z1).
Si el problema es el inverso: se est operando pxel a pxel en la pantalla, para ello se barre entre un
punto y el otro con 1 variable entre cero y uno y se necesita un valor correspondiente, interpolado con
1 en el espacio real. Bastar con aplicar las relaciones anteriores, considerando suma uno:
0 / 1 = (0/z0) / (1/z1)

0 = (0/z0) / (0/z0 + 1/z1); 1 = (1/z1) / (0/z0 + 1/z1)


Esas ecuaciones son las que se utilizan para interpolar o pegar texturas con la perspectiva corregida.

Aqu no utilizamos la convencin de Einstein, no hay suma en i y la suma en j est explicita.


En la geometra plana de Euclides las paralelas no se cortan, en la hiperblica (proyectiva) todo par de rectas distintas se
corta en un punto y en la esfrica, todo par de rectas distintas se corta en dos puntos

6/11

Interpolacin bilineal
Se denomina as a una forma particular de expresar, en funcin de slo dos parmetros, los pesos de la
combinacin afn de cuatro puntos que forman un cuadrngulo, ya sea en el plano o en el espacio.

x3
x32
x2
x
x1
x01
x0
La combinacin bilineal consiste en tomar la misma combinacin afn en dos lneas opuestas, con uno
de los parmetros y luego interpolar los dos puntos resultantes con el otro parmetro:
x01 = (1-u) x0 + u x1
x32 = (1-u) x3 + u x2
x = (1-v) x01 + v x32 = (1-v) (1-u) x0 + (1-v) u x1 + v u x2 + v (1-u) x3
El resultado es idntico si primero se hace la combinacin con v en los segmentos (x0, x3) y (x1, x2),
para luego combinar con u los puntos resultantes (probar).
La denominacin de bilineal proviene del uso de los parmetros, normalmente identificados con las
coordenadas de un cuadrado unitario en el espacio de parmetros. Un polinomio formado as, con
productos de monomios lineales, sin ningn trmino cuadrtico en u ni en v, se denomina bilineal.
Los cuatro parmetros de la combinacin afn resultante: {(1-v) (1-u), (1-v) u, v u, v (1-u)} suman uno
y, si u,v [0,1]2 tambin estarn en el rango [0,1]. El resultado es una interpolacin afn nolineal de
los cuatro puntos y valores; con una receta para la asignacin de los pesos.
En computacin grfica se utiliza este tipo de interpolacin para mapear texturas o interpolar colores
en cuadrilteros, el resultado es ms suave que el obtenido dividiendo en dos tringulos.
Es muy importante recalcar que en el espacio tridimensional, con
cuatro puntos no coplanares, se obtiene una
superficie reglada (bilineal), que tiene por bordes a
los cuatro segmentos. Las coordenadas baricntricas de
cuatro puntos tienen tres grados de libertad porque suman
uno; aqu, en cambio, hay slo dos parmetros libres, el
conjunto tiene una restriccin paramtrica i(u,v) del tipo que
mencionamos antes. La superficie es reglada porque est formada por
una sucesin infinita de segmentos rectos como el (x01, x32) que se obtiene
barriendo u entre cero y uno (lo mismo suceder con v). Puede verse como una
pompa de jabn entre cuatro alambres rectos no coplanares.
La funcin es biunvoca en el interior, excepto cuando los cuatro puntos son coplanares y el
cuadriltero cncavo. No analizaremos en detalle este caso, basta con decir que se obtienen, como
siempre, puntos del convex-hull, pero fuera del cuadriltero, los puntos exteriores al cuadriltero
cncavo se pueden obtener con dos conjuntos de parmetros distintos. (Pensarlo como una superficie
bilineal 3D aplastada o proyectada)
El mismo concepto se extiende a un cubo y se utiliza la interpolacin trilineal para mapear el interior
de un cubo unitario en un hexaedro o cuboide de seis caras bilineales en el espacio. Pero eso no suele
usarse en Computacin Grfica sino en Clculo Numrico (Elementos Finitos). En CG podra
utilizarse para mapear texturas tridimensionales.
7/11

Interpolacin esfrica lineal o Slerp (Spherical Linear Interpolation)


Se trata de un mtodo de interpolacin entre dos puntos de una esfera unitaria y se utiliza para
interpolar rotaciones, orientaciones o normales, que se describen mediante vectores unitarios o, segn
veremos ms adelante, mediante cuaterniones. Se interpolan coordenadas pero no variables asociadas.

S2 (radio 1)

x1

x0

Se denomina Sn (o nesfera) a la generalizacin dimensional del concepto de esfera unitaria. En n+1


dimensiones, es una superficie ndimensional, cuyos puntos distan una unidad del origen. La 2esfera
S2 es la superficie de una esfera comn de radio 1 y centrada en el origen en 3D.
En cualquier superficie, las curvas que unen puntos, minimizando la longitud del recorrido, se llaman
geodsicas. Son el equivalente de las rectas en el plano.
El camino ms corto entre dos puntos de una esfera, pero recorriendo puntos de la superficie, es un
arco de circunferencia mxima. Las circunferencias mximas son las que comparten el centro y el
radio con la esfera. Cualquier otra circunferencia en la superficie tendr un radio menor. Por ejemplo:
de los paralelos de la tierra, solo el ecuador es un crculo mximo; mientras que todos los meridianos
lo son. En Sn las geodsicas estn centradas en el origen y tienen radio unitario.
Si dos puntos de la esfera, x0 y x1, no son antipodales (no estn alineados con el origen), habr una sola
circunferencia mxima que los une. Si son antipodales, habr infinitas. De Buenos Aires a Sydney hay
un nico camino de mnima longitud, pero del Polo Norte al Polo Sur hay infinitos meridianos con la
misma longitud. Lo mismo sucede entre Formosa y Taiwn; lo cual es doblemente raro: 1) La mayor
parte de la tierra es antpoda del ocano y 2) La isla de Taiwn tambin se llama Formosa.
La interpolacin esfrica entre dos puntos es un punto intermedio, pero en la esfera. Lo que se hace es
una interpolacin lineal de los ngulos centrales: Si [0,180) es el ngulo central entre los puntos,
con vrtice en el origen y [0,1] el parmetro de la interpolacin; queremos un punto, en el plano
del ngulo, pero angularmente distanciado del primer punto y en direccin al segundo punto:
x = slerp(x0, x1, )
La interpolacin esfrica es lineal en la superficie de la esfera pero no en el espacio, el camino
recorrido por el punto mvil es un arco de longitud (porque el radio es uno). El camino recorrido
por unidad de tiempo (d/d) es constante, pero no el vector velocidad, que no cambia su mdulo
pero s su direccin (aceleracin centrpeta).

En las figuras de arriba se hace evidente la diferencia entre una interpolacin lineal de direcciones y
una esfrica. La diferencia se puede apreciar visualmente al interpolar normales para iluminacin.
8/11

Todo el proceso de interpolacin descansa grficamente en el plano del ngulo, definido por el origen
y los dos puntos dados; por lo tanto haremos los clculos en ese plano.

x1
x

x0

Partimos de las coordenadas x0 y x1 de los puntos dados y del parmetro variable . Debemos calcular
el ngulo entre los puntos y luego el punto interpolado x.
En primer lugar, dado que los mdulos son unitarios, notemos que:
= acos(x0 x1)
Podemos representar cualquier punto del plano mediante una combinacin lineal del par ortonormal
{x0, w}, donde w es un vector perpendicular a x0 en la direccin de x1, que usaremos de intermediario.
x = cos() x0 + sen() w
x1 = cos() x0 + sen() w
De la segunda ecuacin podemos extraer w y usarlo en la primera.
sen()
(x cos() x0)
x = cos() x0 +
sen() 1
sen() x = cos() sen() x0 + sen() (x1 cos() x0)
= [cos() sen() sen() cos()] x0 + sen() x1
= sen( ) x0 + sen() x1
= sen[(1 )] x0 + sen() x1
sen[(1 )]
sen()
x =
x0 +
x
sen()
sen() 1
Para evitar la posible divisin por cero o la inestabilidad, cuando sea muy pequeo, hay que hacer
una aproximacin lineal. Cuando tiende a cero, la ecuacin anterior tiende a la simple interpolacin
lineal (el seno tiende al ngulo o el arco tiende a la cuerda):
x = (1 ) x0 + x1
A nivel de implementacin, para evitar la inestabilidad bastar saber si se pueden equiparar el ngulo y
su seno. Dado que el mayor ngulo involucrado es , basta saber si | sen()| < , donde es un
pequeo valor que depende de la precisin numrica utilizada. Haciendo la expansin en serie de
Taylor, se ve fcilmente que:
| sen()| ~ 3 / 6,
podemos entonces comparar con 10-3 o 10-6 en simple o doble precisin respectivamente.

9/11

Cuaterniones
Si bien tienen mltiples aplicaciones, la nica utilizacin prctica de los cuaterniones en CG es para
representar (e interpolar) rotaciones y efectivamente son muy utilizados para eso en videojuegos.
Un cuaternin se forma como un vector de cuatro dimensiones cuya base son los nmeros {1,i,j,k}. El
nmero 1 es la unidad real estndar; i, j y k son extensiones del imaginario puro i, de los nmeros
complejos. El cuadrado de cualquiera de ellos es 1. Los productos mutuos (ms all del trivial 1) son:
i
i2 = j2 = k2 = -1;
ij = -ji = k;
jk = -kj = i;
ki = -ik = j

+
Notar la antisimetra. La regla mnemotcnica es: ijk en orden circular, cada
j
k
par sucesivo da el siguiente y en orden inverso dan negativos.
Un cuaternin es entonces una combinacin lineal q = ai + bj + ck + d, donde a, b, c y d son nmeros
reales. Tiene una componente real: d y tres imaginarias: a, b y c. Tambin podemos representarlo
como q = <d;u> donde u es el vector tridimensional {a,b,c} que engloba las tres componentes
imaginarias, en este caso se habla de una componente escalar y una vectorial o cuaternin pura.
Con esa notacin podemos representar escalares y vectores como cuaterniones haciendo la distincin:
< d, 0 > representa el escalar d;
< 0, u > representa el vector o cuaternin puro u.
La operatoria de los cuaterniones es idntica a la de los complejos. Para el producto hay que tener en
cuenta los productos mutuos de los nmeros que conforman la base. Para poder usar la notacin
estndar con los vectores (u) reservaremos el trmino producto escalar y el smbolo para los
vectores estndar y definimos el producto (a secas) entre cuaterniones, que se desarrolla distribuyendo
los productos de a pares (todos contra todos) que, ya agrupados, queda:
q1q2 = < ( d1d2 u1u2 ); ( d1 u2 + d2 u1 + u1 u2 ) >
Se puede ver que la noconmutatividad del producto est slo en el producto vectorial, pues si se
invierten los factores, resulta opuesto. La conmutatividad slo se da, entonces, cuando las partes
vectoriales son paralelas (u opuestas) y el producto vectorial es nulo.
El conjugado de q = < d; u > es otro cuaternin con la parte vectorial opuesta:
q* = < d; u >
Se puede ver muy fcilmente que:
qq* = q*q = a2+b2+c2+d2 = d2+u2
(es un escalar)
La norma o magnitud de un cuaternin se define como en el caso complejo:
||q|| = qq* = a2 + b2 + c2 + d2 = d2 + u2
Mirando la frmula anterior es fcil deducir que:
q*
q-1 = ||q||2 ;
siendo: qq-1 = q-1q = 1.
(Conmutativo por ser antiparalelos los vectores)
Un cuaternin se puede normalizar, igual que un vector, dividindolo por su mdulo:
q
q1 = ||q||
Para un cuaternin unitario: q-1 = q*.
Todo cuaternin unitario se puede escribir como: q1 = < cos(); u1 sen() >; donde u1 es, a su vez, un
vector unitario:
q1 = < cos(); u1 sen() >; u12=1 ||q1|| =

cos2() + sen2() u12 = 1

Rotacin con cuaterniones:


Analicemos la siguiente expresin que combina el vector v con el cuaternin r:
v = r v r-1 = r < 0, v > r-1
En primer lugar vemos que el resultado es el mismo si normalizamos el cuaternin:
r-1 = (||r||r1)-1 = ||r||-1 r1-1 (||r||r1) v (||r||r1)-1 = r1 v r1-1,
sto simplifica la tarea, pues r1-1 = r1*. Usaremos directamente cuaterniones unitarios.
10/11

En segundo lugar, notemos que nos hemos adelantado al llamar v al resultado, pues aun no sabemos
que tipo de cuaternin es. Enseguida veremos que, efectivamente, es un vector.
Apliquemos esa expresin a un vector v// paralelo a u (v// = u). Usando la frmula del producto y
siendo u2 = 1:
v// = < cos(); u sen() > < 0; u > < cos(); -u sen() > =
= < sen(); cos() u > < cos(); -u sen() > =
= < [ sen() cos() sen() cos()]; u [cos2() + sen2()] > = < 0; u > =
= v//
Es decir que un vector paralelo a u no cambia con esa expresin.
Ahora apliquemos la misma expresin a un vector v perpendicular a u. Llamando w al vector u v
que es perpendicular tanto a u como a v y notando adems que u w = v:
v = < cos(); u sen() > < 0; v> < cos(); u sen() > =
= < 0; cos() v+ sen() w > < cos(); u sen() > =
= < 0; cos2() v+ sen() cos() w + sen() cos() w sen2() v > =
= < 0; {[cos2() sen2()] v + 2 sen() cos() w} > =

= < 0; cos(2) v+ sen(2) w >


Esto es: la expresin aplicada a un vector perpendicular a u, es un giro de ngulo 2 y eje u.
Dado que a todo vector lo podemos representar como
suma de un vector paralelo a u y uno perpendicular,
w=uv
vemos que la formula anterior efectivamente es una
v
transformacin de vectores en vectores y en particular
v
es un giro de ngulo 2 alrededor de u.
2
v
v
Dado que el producto es asociativo:
v//
q1 q2 q2-1 q1-1 = 1

(q1 q2)-1 = q2-1 q1-1


-1
-1
-1
u
q1 (q2 v q2 ) q1 = (q1 q2) v (q1 q2)
La composicin de rotaciones se puede hacer con el
producto de cuaterniones.
Para armar la matriz de rotacin que corresponde a un cuaternin, basta recordar que sus columnas son
los versores base transformados: {q ex q-1, q ey q-1, q ez q-1}. Encontrar el cuaternin correspondiente a
una matriz de rotacin es mas difcil pero se puede deducir resolviendo un sistema de ecuaciones o
utilizando las frmulas que aparecen en la bibliografa y en web. El problema es la falta de unicidad,
puesto que dos cuaterniones unitarios opuestos producen la misma rotacin (analizar).
Las cuatro componentes de un cuaternin unitario forman un vector unitario en R4, la identidad de los
opuestos implica que los cuaterniones en R4 se comportan como coordenadas homogneas.
La interpolacin de rotaciones se realiza mediante slerping en S3 (la esfera unitaria de R4) con la nica
advertencia de que para calcular el ngulo entre los vectores se utiliza el producto escalar estndar de
R4 y no el producto de cuaterniones.
Con estos mtodos se puede trazar una curva cualquiera en la superficie de S3 (una spline definida por
secuencias de interpolaciones) y realizar una animacin suave de los movimientos de un objeto con
giros complejos (trompo, helicptero) y de hecho as se utiliza en la prctica, fundamentalmente en
juegos interactivos y animaciones.

Nestor Calvo
Computacin Grafica FICH
2011

11/11

You might also like