Mostrando entradas con la etiqueta Graficación por computadora. Mostrar todas las entradas
Mostrando entradas con la etiqueta Graficación por computadora. Mostrar todas las entradas

miércoles, 22 de julio de 2015

Torbellinos de pasión

(es) Torbellinos de pasión

(eo) Pasiokirloj

Torbellinos de pasión

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Dos torbellinos entrelazados girando en la misma dirección.

Motivación:

Una lectura parcial del libro Indra's Pearls (ISBN: 0 521 35253 3), y la búsqueda de comprender las espirales loxodrómicas y los loxódromos en sí (ver Líneas de rumbo).

Descripción técnica:

La imagen es una serie de proyecciones de líneas de rumbo (loxódromos) que se construyen en la esfera de Riemann girada sobre su centro, sobre el plano, por medio de una proyección estereográfica.
El proceso de construcción es el siguiente:
Las líneas de rumbo se inician como espirales exponenciales complejas, de la forma: T n (z)= a n z , donde n Z y a,z C . Para que las espirales formen una familia como en la imagen, deben tener el mismo valor de a . En este caso a= 4 5 ( cos π 2 +i sin π 2 ) .
Para que estas espirales se conviertan en dobles espirales, se les aplica la siguiente transformación de Möbius
T ˆ n (z)=R T n R -1 (z) , con R(z)= z-1 z+1
a los números complejos z de la forma cos α +i sin α , con α [ π 4 -0.3, π 4 +0.3 ] , y n{-20,-19,-18, ,29,30} .
Nótese que R(0)=-1 , R()=1 . Es decir, lo que hace R es tomar un punto del plano complejo, lo proyecta en la esfera de Riemann, luego rota la esfera respecto de su centro (con eje de giro paralelo al eje complejo) y finalmente lo proyecta sobre el plano compleo de nuevo.
Para los colores, se utilizó una técnica de interpolación lineal segmentada pasando por los colores primarios sustractivos (amarillo, cyan y magenta) asociándolos al paso de α .

Archivos

martes, 21 de julio de 2015

Planeta fractal

(es) Planeta fractal

(eo) Fraktalplanedo

Planeta fractal

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Un mundo fractal.

Motivación:

Una revisión de las diferentes variantes conocidas de fractales de la familia Mándelbrot.

Descripción técnica:

Una vista de alta resolución de un conjunto fractal similar al de Mándelbrot, pero con ecuación recursiva z n+1 = exp ( z n 2 -1,00001 z n c 3 ) .
El conjunto de Mándelbrot es el conjunto M de todos los puntos c del plano complejo tal que la sucesión z n+1 = z n 2 +c (con z 0 =0+0i ) no diverge (es decir, tal que es acotada).
El criterio usado para determinar si las sucesiones divergen o no, es si z k , con kN , tiene un módulo mayor que 2, es decir | z k |2 (procedimiento estándar para los conjuntos de Julia y de Mándelbrot). Puesto que no puede evaluarse hasta el infinito, se usa una cota: N . Si la sucesión no “diverge” antes de llegar al N -ésimo término de las sucesiones, se considera que no diverge, es decir que es acotada.

Archivos

lunes, 20 de julio de 2015

El jardinero de Neruda

(es) El jardinero de Neruda

(eo) La ĝardenisto de NERUDA

El jardinero de Neruda

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Un jardín de plantas fractales rodeando un gran árbol cuadrado que representa una Ceiba.

Motivación:

El recuerdo de un capítulo nunca hecho del libro de Graficación por Computadora del autor... Sería un capítulo sobre fractales biológicos.

Descripción técnica:

Se han utilizado cuatro algoritmos recursivos determinísticos que dibujan “ramas que tienen ramas”. Uno de los algoritmos divide sus ramas en dos ramas, otro divide sus ramas en tres ramas, otro en cuatro y el último en cinco.
Cada árbol depende además de una posición, ángulos de las ramas divididas, tamaño, proporciones entre las ramas y sus ramas hijas, la cantidad de subdivisiones (niveles), posiciones relativas de los brotes de las ramas hijas y el color.

Archivos

jueves, 12 de febrero de 2015

Homenaje al gato sin hogar

(es) Homenaje al gato sin hogar

(eo) Omaĝo al senhejmaj gekatoj

Homenaje al gato sin hogar

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Un gato sentado viendo a lo lejos en dirección del observador.

Motivación:

Hay una gran cantidad de gatos y gatas que son abandonados y/o maltratados por los humanos. En su mayoría porque no tienen los medios económicos para darles el cuido correcto y en otras ocaciones por falta de humanidad.
Si los humanos no desean lidiar con la procreación de sus mascotas, deben esterilizarlos.

Descripción técnica:

Perfil de un gato delineado con curvas cúbicas de Bézier.
Dados cuatro puntos P 0 , P 1 , P 2 , P 3 (que pueden ser unidimensionales, bidimensionales, tridimensionales, etc.), llamados puntos de control, se define la curva de Bézier de la siguiente manera:
B(t)=(1-t ) 3 P 0 +3t(1-t ) 2 P 1 +3 t 2 ( 1-t ) P 2 + t 3 P 3 ,0t1
Las curvas de Bézier son ampliamente usadas para la modelación por computadora por su simplicidad de cálculo frente a cualquier técnica de interpolación polinomial o racional.

Archivos

miércoles, 11 de febrero de 2015

Fiordos helados

(es) Fiordos helados

(eo) Malvarmaj fjordoj

Fiordos helados

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Una vista aérea de unos fiordos nevados, sus delgadas costas de arena oscura y el mar profundamente azul.

Motivación:

Los fiordos tienen una forma fractal natural.

Descripción técnica:

Una vista de un conjunto de Julia con semilla c=-1.384286+0.004286i en el intervalo de los reales: [0.01,0.09] y en los imaginarios: [0.02,0.10].
El conjunto de Julia con semilla c es el conjunto J c de todos los puntos z del plano complejo tal que la sucesión z n+1 = z n 2 +c (con z 0 =z ) diverge (o más pragmáticamente tal que es no acotada).
El criterio usado para determinar si las sucesiones divergen o no, es si z k , con kN , tiene un módulo mayor que 2, es decir | z k |2 (procedimiento estándar para los conjuntos de Julia y de Mándelbrot). Puesto que no puede evaluarse hasta el infinito, se usa una cota: N . Si la sucesión no “diverge” antes de llegar al N -ésimo término de las sucesiones, se considera que no diverge, es decir que es acotada.
La coloración de esta obra tiene un tinte constante al igual que la saturación, pero el brillo es variable en función del número de pasos en donde se determina que el punto pertenece o no pertenece al conjunto.

 Código (CFDG):

# Copyright 2015 Eduardo Adam Navas López
# Este archivo es Software Libre liberado bajo la licencia GNU GPLv3 o su versión más reciente:
# http://www.gnu.org/licenses/gpl.html


#Para generar la imagen:
#$ cfdg -b 0 -s 1000 fiordos.cfdg fiordos.png

startshape fiordos(-1.384286,0.004286)

LIMITE = 1000 #Resolución de la imagen
MAXPASOS = 300

LIMIZQ = 0.01
LIMDER = 0.09
LIMARRIBA = 0.10
LIMABAJO = 0.02

TAMX = (LIMDER-LIMIZQ)/(LIMITE-1)
TAMY = (LIMARRIBA-LIMABAJO)/(LIMITE-1)


pasos(numPasos,z_r,z_i,c_r,c_i) = 
 if((numPasos < MAXPASOS) && (z_r*z_r+z_i*z_i<4),
  pasos(numPasos+1, z_r*z_r - z_i*z_i + c_r, 2*z_r*z_i + c_i, c_r, c_i),
  numPasos)

shape fiordos(c_r,c_i) {
 #Océano:
 FILL[h 214 sat 0.89 b 0.95]
 loop i = (LIMITE) []  {
  z_i = (LIMARRIBA-LIMABAJO)*i/(LIMITE-1) + LIMABAJO #y
  loop j = LIMITE [] {
   z_r = (LIMDER-LIMIZQ)*j/(LIMITE-1) + LIMIZQ #x
   
   numPasos = pasos(0, z_r, z_i, c_r, c_i)
   if(numPasos<MAXPASOS){
    SQUARE[x z_r 
      y z_i
      size TAMX TAMY 
      h 30 sat 0 
      b (1+(1-numPasos)/(MAXPASOS-1))]
   }
  }
 }
}

martes, 10 de febrero de 2015

Perfección

(es) Perfección

(eo) Senerareco

Perfección

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Una circunferencia perfecta.

Motivación:

Una circunferencia puede considerarse como la figura geométrica más perfecta.

Descripción técnica:

Es una circunferencia dibujada con el algoritmo de línea de Bresenham.
Algoritmo básico para dibujar una circunferencia de un pixel de grueso (en lenguaje C):
// Función auxiliar
void marcarPixelesCicunferencia(int x, int y, int xc, int yc){
    marcarPixel( x+xc, y+yc);
    marcarPixel( x+xc,-y+yc);
    marcarPixel(-x+xc, y+yc);
    marcarPixel(-x+xc,-y+yc);
    marcarPixel( y+xc, x+yc);
    marcarPixel( y+xc,-x+yc);
    marcarPixel(-y+xc, x+yc);
    marcarPixel(-y+xc,-x+yc);
}
void circunferencia_punto_medio(int xc, int yc, int radio){
    int x,y,d;
    x=0;
    y=radio;
    d=1-radio;
    marcarPixelesCicunferencia(x,y, xc,yc);
    while(y>x){
        if(d<0){
            d += x * 2 + 3;
        }else{
            d += (x - y) * 2 + 5;
            y--;
        }
        x++;
        marcarPixelesCicunferencia(x,y, xc,yc);
    }
}
 

lunes, 9 de febrero de 2015

El arco del triunfo de Cantor

(es) El arco del triunfo de Cantor

(eo) Triumfarko de Cantor

El arco del triunfo de Cantor

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Una ilustración del conjunto de Cantor en forma de Arco de Triunfo.

Motivación:

Los grandes logros intelectuales de Georg Cantor.

Descripción técnica:

La forma geométrica de describir el conjunto de Cantor es la siguiente:
  1. Se toma un segmento de longitud 1. Se puede considerar como el intervalo [0,1].
  2. A este segmento se le quita el tercio medio del segmento. Se puede considerar que al intervalo [0,1] se le resta el intervalo abierto ( 1 3 , 2 3 ) , con lo que queda el intervalo [ 0, 1 3 ][ 2 3 ,1 ] .
  3. A cada uno de los dos segmentos disjuntos restantes se les resta el intervalo abierto equivalente a su tercio interior. En este momento quedan cuatro intervalos cerrados disjuntos.
  4. A cada uno de los intervalos se les resta el intervalo abierto equivalente a su tercio interior. Y este paso se repite hasta el infinito.
  5. La unión de todos los segmentos o intervalos cerrados resultante es el conjunto de Cantor.
Además de una curiosidad matemática, contradice una intuición relativa al tamaño de objetos geométricos, ya que es un conjunto de medida nula (es decir que la suma de todos los segmentes resultantes es cero), pero no es vacío ni numerable, es decir, que además es infinito.


Archivos

Código (CFDG):

# Copyright 2015 Eduardo Adam Navas López
# Este archivo es Software Libre liberado bajo la licencia GNU GPLv3 o su versión más reciente:
# http://www.gnu.org/licenses/gpl.html


#Para generar la imagen:
#$ cfdg -s 8000 -b 0 -x 5 cantor.cfdg cantor.png

startshape principal

shape principal{
 loop i=4 []{
  SQUARE[s 12 0.9 y (i+1)]
 }
 cantor[]
 CIRCLE[b 1 s 4 z 2 y (-1/2)]
}

shape cantor {
 SQUARE[s 12 0.95]
 cantor[y -1 x (-12/3) s (1/3) (0.9)]
 cantor[y -1 x  (12/3) s (1/3) (0.9)]
}

domingo, 1 de febrero de 2015

El viaje del caballo por mesoamérica

(es) El viaje del caballo por Mesoamérica

(eo) Ĉevalvojaĝo tra Mezameriko

El viaje del caballo por Mesoamérica

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Es un tablero de ajedrez con una ruta del caballo escrita con números mayas.

Motivación:

El recuerdo de un programa desarrollado durante los años de juventud del autor... un programa que utiliza fuerza bruta para encontrar una ruta del caballo.

Descripción técnica:

Es una ruta del caballo escrita con números mayas, comenzando con se (uno) en la esquina inferior izquierda, luego ume (dos) dos casillas a la derecha y una arriba, luego yey (tres) dos casillas a la derecha y una abajo, … y así sucesivamente, hasta llegar a yey pual nawi (64) en la casilla abajo de la esquina superior derecha.

Archivos

lunes, 8 de marzo de 2010

Una Humilde Introduccióna la Graficación por Computadora y Otras Yerbas

ISBN 978-99923-73-36-1

Support independent publishing: Buy this book on Lulu.


Descripción general

Este libro está siendo desarrollado con el propósito de ser libro de texto para diversas materias impartidas y a impartir para la carrera de Licenciatura en Ciencias de la Computación y otras carreras de grado y postgrado en la Universidad Centroamericana “José Simeón Cañas” en El Salvador. Está pensado para estudiantes que ya han aprobado los cursos en los que se estudia cálculo infinitesimal, geometría analítica vectorial, estructura de datos y programación orientada a objetos.

La graficación por computadora es una de las principales áreas de estudio de las ciencias de la computación, con aplicación en todos los ámbitos de la computación; desde la necesidad de representar medianas o grandes cantidades de datos numéricos que serían ilegibles en texto, hasta el desarrollo de sofisticadas aplicaciones científicas de simulación de modelos matemáticos del clima; desde el uso de software de edición de fotografías, hasta el desarrollo de videojuegos. En todos los ámbitos, surge la necesidad de tener conocimientos elementales de graficación por computadora.

El contendio del libro comienza con una breve introducción a SDL (y PyGame) que es la biblioteca gráfica base a ser usada en los primeros capítulos del libro. Se sigue con una introducción teórica a la graficación por computador, en la que se presentan algunos conceptos elementales que son imprescindibles para la programación de aplicaciones gráficas interactivas.

En el capítulo siguiente se aborda ámpliamente el tema de la discretización de líneas rectas y circunferencias de un pixel de grosor. Se aborda también el tema de relleno de circunferencias. Luego se procede a hacer un riguroso análisis vectorial del tema de cambio de coordenadas o cambio de marco de referencia. Allí se incluye una aplicación de ejemplo en la que se pone en práctica la teoría presentada.

Después, se describe la teoría matemática matricial relacionada con las transformaciones geométricas bidimensionales y tridimensionales. Se incluye entonces una aplicación de corte pedagógico que permite practicar transformaciones geométricas tridimensionales y permite ver en tiempo real sus efectos sobre un conjunto de objetos geométricamente sencillos.

El siguiente capítulo, muestra la teoría necesaria para comprender cómo transformar un objeto de tres dimensiones a una imagen bidimensional y cómo implementar tal transformación.

A continuación, se incluye una reflexión sobre el diseño de la interacción entre el humano y las aplicaciones gráficas.

Una vez hecha dicha reflexión, se procede al estudio de la aproximación de curvas arbitrarias por medio de segmentos cúbicos paramétricos. Y luego de la presentación de la teoría matemática implicada, se presentan cinco implementaciones sencillas. Después se hace una breve mención de superficies paramétricas.

Hacia el final del contenido principal del libro, se presenta una descripción de las estructuras de datos utilizables para representar mallas poligonales, que representan la técnica usada para modelar superficies arbitrarias en todo el software de modelación tridimensional.

Finalmente se hace una introducción a la graficación por medio de técnicas fractales que incluye implementación de aplicaciones de dibujo fractal.

Por último, pero no menos importante, se incluyen algunos temas no relacionados directamente con la graficación por computadora, pero sí relevantes para facilitar la lectura y comprensión de algunos temas y códigos fuente incluídos. Entre ellos, instrucciones sencillas y concisas para compilar proyectos en lenguaje C estándar distribuidos en varios archivos fuente; y un brevísimo resumen de notación UML para diagramas de clases y diagramas de objeto.

Lo que queda fuera

Como se dijo antes, la graficación por computadora es una de las grandes áreas de las ciencias de la computación, razón por la cual, cualquier obra que pretenda cubrirla toda, se quedará corta. En el caso de este libro, estos son los temas que no se cubren en la versión actual de la obra:

• Temas avanzados de SDL

• Interfaces gráficas de usuario (GUI)

• Modelado de sólidos

• Renderización de texto

• Operaciones de bajo nivel (en ensamblador, por ejemplo)

• Manipulación de mapas de bits

• Hardware gráfico

• Iluminación, sombreado y texturas

• Detalles de instalación de las herramientas en ambientes Windows

Esto no significa que no sean temas interesantes para un computólogo, o para un científico. Pero esta edición simplemente no los contempla.

Lo que conviene saber

Antes de escrutar este libro, es recomendable tener una base aceptable en los siguientes temas:

• Operaciones básicas con matrices

• Álgebra vectorial y nociones de cálculo vectorial

• Operaciones básicas con números complejos

• Parametrización de curvas

• Sistemas de coordenadas rectangulares, cilíndricas y esféricas

• Estructuras de datos básicas (listas, pilas, colas, árboles, directorios de nodos, grafos, etc.)

• Nociones claras de Programación Estructurada y Programación Orientada a Objetos

• Conocimientos sólidos del lenguaje C estándar en ambiente GNU/Linux

• Conocimientos intermedios en lenguaje Python en ambiente GNU/Linux

• Conocimientos intermedios del lenguaje Java

• Destrezas elementales del uso de sistemas operativos GNU/Linux

Motivación al lector

En general, el autor desea expresar su deseo de seguir mejorando y ampliando, en la medida de lo posible, esta obra para beneficio de la sociedad salvadoreña. Y también desea invitar al apreciable lector a que le saque todo el provecho posible, que aplique sus aportes en todas las áreas posibles de su trayectoria profesional; y también que no lo considere una serie de afirmaciones incuestionables, sino una contribución al desarrollo tecnológico salvadoreño y a la independencia tecnológica de la región centroamericana.

Como toda obra académica de programación, o como la mayoría, los códigos (y programas) incluídos pretenden mantener simplicidad y claridad para no dificultar innecesariamente la comprensión, pero se recomienda hacer el ejercicio de optimizarlos.

Cambios en esta versión

En esta nueva versión (que se corresponde con la segunda edición), se han hecho muchos cambios a lo largo de todo el texto. Se han corregido diversos errores tipográficos en todos los capítulos, se han revisado todos los códigos fuente que ya estaban y las imágenes se han revisado en su resolución y distribución. El tamaño de las páginas también se ha cambiado al tamaño carta, que es el estándar de facto en El Salvador.

Todos los bloques de código fuente se han resaltado para su más cómoda y más fácil lectura.

El capítulo 1 se ha ampliado en el tema de la instalación de SDL. Los ejemplos básicos fueron revisados y reordendados.

El capítulo 2 incluye ahora una sección especial sobre el ciclo de interacción de aplicaciones gráficas interactivas.

El capítulo 9 incluye mucho nuevo material, incluyendo nuevas imágenes, más algoritmos, más profundidad y nuevos programas de ejemplo.

El capítulo 10 también cuenta con nuevas imágenes, hechas con Maxima. El contenido del 12 fue revisado y cuenta con nuevas imágenes.

Y finalmente, se ha integrado la biblioteca pygame para Python en la primera parte del texto, en paralelo con SDL para C.

http://aliamondano-eo.wdfiles.com/local--files/libro-graficos-1-0/graficos-1.0.pdf
http://aliamondano-eo.wdfiles.com/local--files/libro-graficos-1-0/codigo-1.0.tar.gz Support independent publishing: Buy this book on Lulu.