Esta entrada participa en la Edición 6.8 del Carnaval de Matemáticas,
cuyo anfitrión es el blog Gaussianos.
Os dejamos esta entrada fantástica de Antonio Zarauz, alumno de la asignatura de Introducción a la Topología Algebraica, de la Universidad de Almería. Antonio es además editor de la sección «territorio estudiante» del Boletín de la Titulación de Matemáticas de la UAL.
Descárgate el fichero ejecutable del Mathematica
Es natural preguntarse cómo, por ejemplo, los mapamundi que estamos acostumbrados a ver poseen una distribución rectangular, mientras que por otro lado nos enseñan que la Tierra es esférica (o, al menos, homeomorfa). La respuesta a ese hecho es sencilla, pero no perfecta; quiere decirse, podemos obtener una a partir de la otra mediante transformaciones que conserven ángulos o áreas, pero no las dos cosas simultáneamente.
El objetivo en este caso es, dada la imagen
obtener una representación más familiar como la siguiente, con la ayuda del Mathematica:
Durante todo el ejemplo iremos ilustrando valores concretos para centrar ideas, por lo que el lector es susceptible de modificar cuanto desee que no sea esencial.
Comenzaremos por ilustrar cómo introducir la imagen al programa. Para ello (llamaremos pic a la imagen durante todo el proceso) simplemente introducimos el directorio donde tengamos la imagen «mypicture.jpg»:
pic = Import[«C:\\….\\mypicture.jpg»];
Si además quisiéramos hacer algún tipo de recorte al margen vertical de tamaño w o al horizontal de tamaño h, hacemos
{width, height} = ImageDimensions[pic];
w = 40; h = 45;
pic = ImageTake[pic, {h, height – h}, {w, width – w}];
Lo único que ya queda por hacer es definir la superficie que queramos (en este caso la esfera) mediante el conocido comando ParametricPlot3D e incluir la imagen mediante el comando PlotStyle:
ParametricPlot3D[{Cos[u] Sin[v], Sin[u] Sin[v], Cos[v]}, {u, 0,
2 Pi}, {v, 0, Pi}, Mesh -> None, PlotPoints -> 100,
TextureCoordinateFunction -> ({#4, 1 – #5} &), Boxed -> False,
PlotStyle -> Texture[Show[pic, ImageSize -> 1000]],
Lighting -> «Neutral», Axes -> False, RotationAction -> «Clip»,
ViewPoint -> {-2.026774, 2.07922, 1.73753418}, ImageSize -> 600]
El resto de opciones agregadas a dicho comando son libres de editar por el lector.
Eso es todo si lo que queremos es simplemente obtener el mapamundi. Pero también podemos obtener un cierto disfrute de este proceso, simplemente con una imagen nuestra y un poco de ingenio para parametrizar superficies. Concretamente, tomemos como ejemplo la imagen
Aparte del bonito motivo matemático, se presenta sugerente saber, por ejemplo, cuál sería la estética de este imagen sobre una esfera, un cilindro, un cono, o por qué no, objetos más atrevidos (en un contexto topológico) como la banda de Möbius, un toro o incluso la botella de Klein. Para adaptar la imagen a las distintas figuras podemos ir haciendo convenientes recortes, y usando las siguientes parametrizaciones y el código anterior obtenemos lo que nos proponíamos.
ParametricPlot3D[{Cos[u] Sin[v], Sin[u] Sin[v], Cos[v]}, {u, 0,
2 Pi}, {v, 0, Pi}, Mesh -> None, PlotPoints -> 100,
TextureCoordinateFunction -> ({#4, 1 – #5} &), Boxed -> False,
PlotStyle -> Texture[Show[pic, ImageSize -> 1000]],
Lighting -> «Neutral», Axes -> False, RotationAction -> «Clip»,
ViewPoint -> {-2.026774, 2.07922, 1.73753418}, ImageSize -> 600]
ParametricPlot3D[{Cos[v], Sin[v], u}, {u, 0, 1}, {v, 0, 2*Pi},
Mesh -> None, PlotPoints -> 100,
TextureCoordinateFunction -> ({#4, 1 – #5} &), Boxed -> False,
PlotStyle -> Texture[Show[pic, ImageSize -> 1000]],
Lighting -> «Neutral», Axes -> False, RotationAction -> «Clip»,
ViewPoint -> {-2.026774, 2.07922, 1.73753418}, ImageSize -> 600]
ParametricPlot3D[{u*Cos[v], u*Sin[v], u}, {u, 0, 1}, {v, 0, 2*Pi},
Mesh -> None, PlotPoints -> 100,
TextureCoordinateFunction -> ({#4, 1 – #5} &), Boxed -> False,
PlotStyle -> Texture[Show[pic, ImageSize -> 1000]],
Lighting -> «Neutral», Axes -> False, RotationAction -> «Clip»,
ViewPoint -> {-2.026774, 2.07922, 1.73753418}, ImageSize -> 600]
ParametricPlot3D[{(1 + r*Cos[a/2])*Cos[a], (1 + r*Cos[a/2])*Sin[a],
r*Sin[a/2]}, {r, -1, 1}, {a, 0, 2*Pi}, Mesh -> None,
PlotPoints -> 100, TextureCoordinateFunction -> ({#4, 1 – #5} &),
Boxed -> False, PlotStyle -> Texture[Show[pic, ImageSize -> 1000]],
Lighting -> «Neutral», Axes -> False, RotationAction -> «Clip»,
ViewPoint -> {-2.026774, 2.07922, 1.73753418}, ImageSize -> 600]
ParametricPlot3D[{(2 + Cos[v])*Cos[u], (2 + Cos[v])*Sin[u],
Sin[v]}, {u, 0, 2*Pi}, {v, 0, 2*Pi}, Mesh -> None,
PlotPoints -> 100, TextureCoordinateFunction -> ({#4, 1 – #5} &),
Boxed -> False, PlotStyle -> Texture[Show[pic, ImageSize -> 1000]],
Lighting -> «Neutral», Axes -> False, RotationAction -> «Clip»,
ViewPoint -> {-2.026774, 2.07922, 1.73753418}, ImageSize -> 600]
El caso de la botella de Klein requiere un esfuerzo mayor a la hora de parametrizar la superficie, por lo que escribimos la parametrización por separado.
p[u_, v_] := Which[v < Pi,
{(2.5 – 1.5*Cos[v])*Cos[u], (2.5 – 1.5*Cos[v])*Sin[u], -2.5*Sin[v]},
v < 2*Pi,
{(2.5 – 1.5*Cos[v])*Cos[u], (2.5 – 1.5*Cos[v])*Sin[u], 3*v – 3*Pi},
v < 3*Pi,
{-2 + (2 + Cos[u])*Cos[v], Sin[u], (2 + Cos[u])*Sin[v] + 3*Pi},
True,
{-2 + 2*Cos[v] – Cos[u], Sin[u], -3*v + 12*Pi}];
ParametricPlot3D[p[u, v],
{u, 0, 2 Pi}, {v, 0, 4 Pi}, Mesh -> None, PlotPoints -> 100,
TextureCoordinateFunction -> ({#4, 1 – #5} &), Boxed -> False,
PlotStyle -> Texture[Show[pic, ImageSize -> 1000]],
Lighting -> «Neutral», Axes -> False, RotationAction -> «Clip»,
ViewPoint -> {-2.026774, 2.07922, 1.73753418}, ImageSize -> 600]
En un contexto matemático, estas transformaciones no sólo permiten observar cómo podemos moldear un rectángulo, si no que también seremos capaces de estudiar familias de conjuntos subyacentes o propiedades tales como las bases de entornos o la continuidad, respectivamente, de las superficies de una forma más intuitiva.
Para consultar las transformaciones en un fichero notebook de Mathematica consultad el siguiente enlace. Podéis también visitar las entradas:
Tenemos previsto realizar esta actividad en la próxima Feria de la Ciencia de Sevilla, los días 6, 7 y 8 de mayo de 2016, como parte del proyecto ¿Qué superficie topológica tengo en mis manos?. Más información en breve.
Mientras, os animamos a dejar vuestras imágenes en superficies en los comentarios.
Mi foto en un toro y en una botella de Klein! no podía imaginarme que era así! https://www.facebook.com/jlrodriblancas/videos/10206934574578191/
Reblogueó esto en Ово је портфолио Соње Шумоњаy comentado:
probam upravo
Fallé, He importado la imagen, pero no hay nada después de eso.
Hola portfoliosonjasumonja, por lo general al hacer «copia-pega» del archivo original al blog (y/o viceversa) se pieden espacios o, en general, se modifica el programa. Al ser Mathematica muy restrictivo al respecto, suele dar errores. De todos modos, muy pronto subiremos el notebook original con todo detallado.
Un saludo.
Aquí van algunos fractales del Proyecto Alfombra de Sierpinski en superficies: