lunes, 6 de septiembre de 2010

El Plano Proyectivo

Consideremos un punto P=(1,0) en el plano, la recta real en y=0, y un círculo que pasa por el origen y por P.

Graficamente:



Para cada punto de la recta real , se puede trazar una recta hasta el punto P, que intersecta al círculo en un único punto. Esta es la demostración standard, que el intervalo abierto (-1,1) tiene la misma cantidad de puntos que la recta real. Primero se demuesta que el intervalo (-1,1) se deforma hasta formar una circunferencia a la que le falta un punto (por eso el intervalo es abierto y no cerrado). Luego, la recta que une los puntos de la circunferencia con la recta real, define una función biyectiva que es lo que se necesita para probar que ámbos conjuntos tienen la misma cantidad de elementos.

La función se puede escribir como
(1) x1 = x1p / h
para todo x1p que pertenece a la circunferencia, salvo el punto p = (1,0), que es donde h=0 y el cociente no existe.

El hecho que la circunferencia tenga un punto menos que la recta real, a los efectos de la cardinalidad no tiene importancia, y se demuestra facilmente que un número finito o infinito numerable de elementos no modifica la cardinalidad de un conjunto infinito.
Sin embargo si genera una diferencia importante en el aspecto topológico, la recta real es equivalente a la circunferencia a la que le falta un punto, no la circunferencia completa.

Interpretación.
Si queremos representar en la recta real todos los ángulos posibles, o sea todas las rectas que pasan por P, nos estaría faltando una recta, que es la paralela a la recta real. Si se agrega el punto que falta en la circunferencia y se lo relaciona con dicha recta, (intuitivamente seríaa agregar el punto del infinito), podemos establecer que el conjunto de la recta real unión el punto del infinito es topologicamente una circunferencia completa.
A este conjunto se lo llama la recta proyectiva, porque esta compuesto de todas las rectas que pasan por un punto, o dicho de otra manera, por la recta real más el punto del infinito.
Los 2 puntos en el infinito se toman como el mismo punto en realidad, ya que corresponden a una sola recta, la dimensión de los puntos del infinito es cero, mientras que la dimensión de la recta es 1.


Plano proyectivo.
Pasando a 2 dimensiones, y con el mismo esquema de demostración, se tiene que el plano es equivalente a una esfera (superficie, usualmente se llama S2) a la que le falta un punto, o tambien, a una semiesfera abierta (que no incluye el borde). La frontera (el ecuador) esta relacionada con los puntos en el infinito. Se puede definir al plano proyectivo como el conjunto de todas los puntos del plano más los puntos en el infinito. En este caso los puntos del infinito son equivalentes a toda una circunferencia, y su dimensión es 1 , mientras que el plano tiene dimensión 2. De esta forma se puede definir recursivamente para un hiperplano:
El espacio proyectivo, se define de la misma manera, y los puntos del infinito son un plano y asi sucesivamente.


Coordenadas Homogeneas.
Para describir un punto en la recta proyectiva si bien se podría usar un sólo elemento ya que su dimensión es 1, (el agregarle un punto no cambia la dimensión del espacio), usualmente se usan 2 elementos, relacionados por la formula (1), que la escribimos de nuevo:

(1) x1 = x1p / h

Q = (x1p,h) cada elemento del plano proyectivo se representa por 2 coordenadas, pero que no son independientes si no que estan relacionadas por la fórmula (1).

Esto llevado al plano proyectivo, y usando la noticion habitual, se tiene
Q = (xp,yp,w)
donde x = xp/w y y=yp/w y (w!=0)

Esta forma de notación se llama coordeandas homogeneas o w-homogeneas. Se interpreta que el punto esta siendo proyectado en el plano w=w0, usualmente para puntos en el plano se utiliza w=1, con lo cual se tiene:
Q = (xp,yp,1)

Y tiene la ventaja que es posible escribir los puntos en el infinito, que estan asociados a w=0,
Q = (xp,yp,0)

Siempre se hace énfasis en que xp/0 no existe, y que no se tiene que tomar como una división que da infinito. Uno intuitivamente interpreta que xp/0 es un símbolo que representa un punto en el infinito y no una operación de división.

Algunas consecuencias de esta notación son
- cada punto tiene infinitas representaciones,
- que se puede escribir los puntos del infinito.
- 2 rectas siempre se cortan en un punto.

Estas coordeandas fueron introducidas por Möebius hace como 200 años pero se usan hoy en dia en la mayor parte de las librerias gráficas.

Que esta estudiando Möebius y que tiene que ver con el plano proyectivo?

Imaginen que queremos representar todas las rectas que pasan por un punto P en el espacio, (ese conjunto es el plano proyectivo claro). La forma mas facil es ubicar el punto P en el centro de una esfera (superficie), y las rectas que pasan por el centro, intersectadas con la esfera generan 2 puntos: p1,p2
Sin embaro, no hace falta usar 2 puntos, si no que con uno solo ya alcanza, porque la recta siempre pasa por el origen, con lo cual con una semiesfera es suficiente:
Todas las rectas están representandas por un punto en el interior de la semiesfera S, salvo (las del infinito) que van a estar representadas por 2 puntos en la frontera de S, o sea en el ecuador. Si arbitrariamente tomamos uno de los 2 puntos, (no hacen falta los 2), y si tomamos una recta que se va moviendo, siempre representada por un punto en S, cuando llega al ecuador (la frontera de S), súbitamente desaparece y re-aparece por el otro lado en la antípoda. (Eso en el momento que se hace invisible el primer extremo de la recta, a la vez que se hace visible el segundo, por el otro lado)



Como podemos “reorganizar” la superficie para que el movimiento de este punto virtual sea continuo?

Que pasa si intentamos “cocer “ la semiesfera S por el borde, uniendo cada par de antipodas? Bueno, eso no se puede hacer, intenten con una tela, o se puede demostrar con topología, (si se pudiese la esfera sin un punto seria equivalente a la que esta completa y eso no es cierto).

Möebius (o vaya a saber quien, la verdad que no lo se, pero me imagino que habra sido él), propuso lo siguiente:

Tomamos un punto p1 en el ecuador, y recortamos un entorno sobre el, y sobre su opuesto p2. Esas 2 superfices las unimos invertidas por el borde que antes era el ecuador , y con eso obtenemos un disco, el pto p1 = p2 = centro del disco, y con esa operación conectamos los puntos p1 y p2, y todo el entorno de ellos en el ecuador.
Lo quedo es esto:



Tomemos otro punto q1 en lo que quedo del ecuador, su opuesto q2, esta del otro lado, pero “opuesto”. Quiero conectar esos 2 puntos, (ya que son el mismo elemento), para ello tengo que doblar de un extremo y unir invirtiendo, lo que queda es una banda de Möebius, (que casualidad no? )




Ahora, la banda es una superficie no orientable: tiene una sola cara y un solo borde cerrado. Si el borde es una curva cerreda, es equivalente a una circunferencia. Si intentamos doblar y plegar la banda para que nos quede ese círculo no vamos a poder en 3 dimensiones, se necesitan 4 dimensiones para que la banda no se intersecte a si misma, pero eso no quiere decir que no se pueda imaginar. Sigan el borde de una banda de Möebius y van a verificar que es una curva cerrada, despues olvidense de la superficie, imaginense solo una curva cerrada y vean que se puede deformar hasta convertirse en una circunferencia.

Bueno, una vez que se tiene el círculo, ese borde corresponde a la frontera de los 2 entornos que habiamos retirado originalmente, y que unimos para formar un disco. Si pegamos ese disco en el borde, quedan conectados todos los puntos.
Con un poco de esfuerzo se puede demostrar que esta construcción respeta la "estructura" original (es un morfismo especial), si por ejemplo estudiamos el movimiento de una recta en la esfera original, representandola como el movimiento del punto en el plano proyectivo, el movimiento es continuo en ambos casos.

La banda de Möebius unida por el borde con un disco, se llama en topologia el plano proyectivo.

domingo, 5 de septiembre de 2010

Refrito de Matemáticas - Parte A

Esto esta reflotado de un TP de cuando estaba cursando análisis funcional y álgebra lineal en la UBA. Son todas cuestiones de matemáticas que tienen que ver con los gráficos por computadora.

El producto interno.
Motivación Geométrica.

Consideremos 2 vectores en el espacio euclídeo A y B, y el producto interno definido
A . B = A B cos O
Donde O = ángulo que forman, graficamente:

A cos O representa la proyeccion escalar de A sobre el vector B

Se puede demostrar que en R3 es equivalente al producto matricial:

Bx
A.B = [Ax Ay Az] By = AxBx + AyBy + AzBz
Bz


A veces se suele notar el producto interno entre 2 vectores v y w, como , especialmente cuando se trata de otros espacios que no sean Rn

Si consideramos dos vectores v y w en R3, w =1 (unitario) y el subespacio W (de dimensión en 1) generado por w, es decir W = {k*w}
Se puede demostrar que el vector
p = <v,w>*w
que es la proyección de v sobre w, es la mejor representación de v en W. Es decir no existe otro elemento en W que aproxime mejor a v.

Al estudiar el producto interno en el espacio euclídeo (recta, plano y espacio), los matemáticos indentificaron cuales eran las mínimas propiedades necesarias para demostrar todos los teoremas y asi generalizaron el concepto del producto interno a espacios mas abstractos, como los espacios de funciones. Finalmente se abstraen de la fórmula del producto interno, y formalmente, se define como una aplicación de VxV en K: (V es el espacio Vectorial y K es el cuerpo sobre el que esta definido. )


<.,.> VxV -> K

Ahora <.,.> tiene que cumplir:

<ax + by,z> = a<x,z> + b<y,z> (linearidad)

<x,y> = conj <y,x> (hermeticidad)

<x,y>=0 y <x,y>=0 <=> x=0 (definida positiva)





Es decir cualquier aplicación que cumpla esas condiciones es un producto interno, y son válidas todas las afirmaciones que se demostraron para Rn
Es facil demostrar que A.B = AxBx + AyBy + AzBz es un producto interno en R3, lo mismo que A.B = A1B1 + A2B2 + ....+AnBn tambien es un producto interno en Rn
(es el primer ejercicio que se ve en álgebra luego de definir el producto interno)

Usualmente esta definición abstracta de producto interno es el punto de partida del cual se deducen todas las demas propiedades. Por ejemplo, el angulo entre 2 vectores, se define a partir del producto interno como

cos O = <v,w>/(v w )

Esto permite definir un ángulo para vectores en especios vectoriales no tan convencionales como Rn. La verdad que la gracia de tanta abstracción se aprecia cuando se trabajan con otro tipo de espacios, como los espacios de funciones, donde un vector es una función, y gracias a estas abstracciones se puede definir el “ángulo” entre 2 funciones.

Bases.
De algebra lineal sabemos que todo vector se puede expresar como una combinación lineal de elementos de la base. Esa combinación es única, y sus coeficientes se llaman coordenadas.
Ahora, si la base es ortonormal, o sea si los vectores son ortogonales entre si, y unitarios, se cumple que :


B = { b1,b2...bn} Base ortonormal

v = <v,b1>b1 + <v,b2>b2 +...+ <v,bn>bn



Demostración. (resumida, para ver la idea)


por ser B base

v = a1b1 + a2b2 + ...+ anbn

lo que queremos probar es que

vk = <v,bk>para todo k

<v,bk>= <sum>x las prop de linealidad de <> para la suma y para el producto:

= sum ai <bi,bk>= ak porque <bi,bk>= 0 si i==k, o =1 si i=k

como queriamos probar,



Quería demostrar este teorema para hacer hincapie en que sólo se usa la definición del producto interno y la ortonormalidad de la base, y no la fórmula concreta para calcularlo.
Esta ecuación a la conoce tambien como expansión de Fourier, por algo que despues vemos.
Ahora, si consideramos la matriz T = [b1,b2,...bn], es decir cada columna de la matriz es un vector de la base, se puede demostrar que T es otorgonal, y la transformación lineal definida por T se llama ortogonal tambien.


Si escribimos

                    |b11  b21  bn1|        |<v,b1>|

v*T = (v1,v2...vn)* |b12  b22  bn2|     =  |<v,b2>|

                    ......................  

                    |b1n  b2n  bnn|        |<v,vn>|




o sea al mutiplicar un vector por la matriz T, que resulta de poner en cada columna un vector de la base ortonormal, se obtienen las coordenadas de v en la base B (Eso se suele notar como (v)B = v*T )

Nota: La coordenada i-esima es la proyección del vector sobre el vector i-esimo de la base.

Upgrade 2010:

En los graficos por computadora, es usual tener que transformar un punto del espacio real 3d (usualmente llamado world space) , al espacio del observador (usualmente llamado view space)
La función D3DXMatrixLookAtLH del DirectX calcula una matriz de vista, que luego se aplica a los puntos para transformarlos de world space al view space, en un proceso que se llama View Transform, en la jerga del DirectX

Esa matriz llamada View, esta compuesta por los vectores de una base ortonormal definidos por la direccion a la cual el observador esta mirando. El View Transform del pipeline del DirectX no es otra cosa que aplicar la expansion de Fourier en esa base a cada punto o vértice.
Usualmente se trabaja en en R4, para poder aplicar las traslaciones como multiplicación de matrices en la misma transformación. (Pero eso es tema del proximo post)


D3DXMATRIXA16 matView;
// posicion del punto de vista
D3DXVECTOR3 vEyePt(100,50,200);
// posicion a la que estoy mirando
D3DXVECTOR3 vLookatPt(0,0,0);
// direccion arbitraria hacia arriba
D3DXVECTOR3 vUpVec(0,0,1);
// el DX usa esta funcion para generar la matriz T
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );


// segun lo que vimos, necesitamos una base ortonormal, que vamos a
// construi asi :
D3DXVECTOR3 vX,vY,vZ;
// la direccion Z es la direccion a la que estamos mirando
vZ = vLookatPt - vEyePt;
// la direccion X tiene que ser perpendicular a la direccion Z
// (el cross producto A = BxC devuelve un vector perpendicular a B y C,
// para eso necesitamos el vector UP, para poder generar un vector perpendicular
D3DXVec3Cross(&vX,&vUpVec,&vZ);
// pero la direccion UP, era aproximada, la real la generamos otra vez con
// el cross producto, Y es un vector perpendicular tanto a X, como Z
D3DXVec3Cross(&vY,&vZ,&vX);
// Hasta aca tenemos vX,vY,vZ todos perpendiculares entre si.
// nota: 3 vectores ortogonales son una base de R3
// Normalizamos
D3DXVec3Normalize(&vX,&vX);
D3DXVec3Normalize(&vY,&vY);
D3DXVec3Normalize(&vZ,&vZ);
// Ahora
// B = {vX,vY,vZ} = Base ortonormal de R3
// La matriz T = [vX vY vZ] es un aplicacion ortogonal

// Verificacion las columnas de T son los vectores de la Base
D3DXMATRIX T;
// vX vY vZ vW
T._11 = vX.x , T._12 = vY.x, T._13 = vZ.x, T._14=0;
T._21 = vX.y , T._22 = vY.y, T._23 = vZ.y, T._24=0;
T._31 = vX.z , T._32 = vY.z, T._33 = vZ.z, T._34=0;
T._41 = 0 , T._42 = 0, T._43 = 0, T._44=1;

// Hasta aca tenemos la parte de la matriz 3x3. Lo que falta para completar
// la matriz del DirectX que es de 4x4 es la translacion
T._41 = -D3DXVec3Dot(&vEyePt,&vX);
T._42 = -D3DXVec3Dot(&vEyePt,&vY);
T._43 = -D3DXVec3Dot(&vEyePt,&vZ);

// esto tambien se prodria haber hecho asi:
// | 1 0 0 0 |
// | 0 1 0 0 | x T
// | 0 0 1 0 |
// | -tx -ty -tz 1 |

// Trans = matriz de traslacion para origen al punto de vista.
// Entonces primero aplico la traslacion y luego el cambio de coordenadas
// pp dicho

//D3DXMATRIX Tras;
//D3DXMatrixIdentity(&Tras);
//Tras._41 = -vEyePt.x , Tras._42 = -vEyePt.y, Tras._43 = -vEyePt.z;
//D3DXMatrixMultiply(&T,&Tras,&T);

// La matriz T y la matView son iguales


Como decía anteriormente, la gracia de partir de una definición tan abastracta del producto interno radica en aplicarla a espacios no convencionales. Un buen ejemplo es el espacios de las funciones. Se puede demostrar facilmente que las funciones con las operaciones de suma y producto triviales (sumar funciones y multplicar una función por un numero), son un espacio vectorial.
Si pensamos una funcion como un vector de infinitas componentes, donde cada componente es el valor de la funcion en un punto, resulta intuitivo, que la sumatoria que define el producto interno habitual entre 2 vectores de dimensiones finitas, se transforma en una integral, lo que motiva a definir el producto interno entre 2 funciones como la integral del producto sobre el intervalo.
b
= integral f(x)g(x) dx
a

se puede demostrar que el conjunto de las funciones continuas acotadas en el intervalo [a,b], es un esp. vectorial y asi definido es un producto interno.

Con algunas condiciones más, las series de senos y cosenos típica de la forma de Fourier se basan en expresar una vector como una combinación lineal de elementos de la base, y en las propiedades de ortogonalidad

Nota: más tecnicamente se requiere un espacio de Hilbert, es un poco mas que un espacio vectorial.
El producto interno es una integral pero con algunas constantes para que cumpla las condiciones del producto interno, por ejemplo definida entre –pi y pi, la funcion tiene que ser cuadrado integrable etc etc) todas cosas que no vienen al caso en este contexto.

Como la base es infinita, si uno toma solo un cantidad finita de funciones (o elementos de la base), la serie se transforma en una suma, y la función resultante es una “proyección” de la función original en el sub-espacio generado por la base finita, y como habiamos dicho es la mejor aproximación que se puede obtener de esa función en dicha base. Es decir podemos ver a la suma de Fourier como una proyección en un espacio de dimension n, de la funcion real que vive en un espacio de dimension infinita.

Existen otras bases de espacios de funciones, como los polinomios ortogonales y que tienen propiedades similares a las de Fourier, usualmente se ven en la materia optativa de ecuaciones diferenciales de 3ero.