viernes, 20 de septiembre de 2013

Piramide

Despues de dos intentos fallidos, primero se nos apago la computadora y luego se depuro el programa, esto fue lo que rescatamos del programa antes de nos sucediera la tragedia anteriormente relatada.  "Caras vemos, Vertices no sabemos"

 
Trasladar: glTranslatef("x", "y"," z");
Si queremos trasladar una figura a 10 unidades en el plano de las z seria:
glTranslatef(0.0f, 0.0f, 10.0f);

La “f” añadida a la función indica que se usarán flotantes. Los parámetros de glTranslate son las unidades a desplazar en el eje x, y y z, respectivamente.
Rotar: glRotatef(Anguloº, "X","Y","Z");
Para rotar, tenemos también una función de alto nivel que construye la matriz de transformación y la multiplica por la matriz activa, glRotate. Lleva como parámetros el ángulo a rotar (en grados, sentido horario), y después x, y y z del vector sobre el cual se quiere rotar el objeto.
Una rotación simple, sobre el eje x, de 10º sería:
glRotatef(10, 1.0f, 0.0f, 0.0f);

Escalar: glScalef("X","Y","Z");
Una transformación de escala incrementa el tamaño de nuestro objeto expandiendo todos los vértices a lo largo de los tres ejes por los factores especificados.
glScalef(1.0f, 1.0f, 1.0f);



#include <GL/glut.h>
#include <stdlib.h>
 
GLfloat ang = 1.0;
GLfloat ejex=0.5,
 ejey=0.5,
 escalar=1.0;

void reshape (int width,int height)
{
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-15,15,15,-15,15,-15);
glMatrixMode(GL_MODELVIEW);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();

glRotatef(ang, 2.0f, 0.0f, 0.0f);

glTranslatef(ejex,0.0f,0.0f);
glScalef(escalar, escalar, escalar);


  glColor3f(1,0,0);
glBegin(GL_POLYGON);

glVertex3f(0,0,0);
glVertex3f(4,0,0);
glVertex3f(4,0,-4);
glVertex3f(0,0,-4);
glEnd();
 
glColor3f(0,1,0);
glBegin(GL_POLYGON);
glVertex3f(0,0,0);
glVertex3f(4,0,0);
glVertex3f(2,9,-2);
glEnd();
 

glColor3f(0,0,1);
glBegin(GL_POLYGON);
glVertex3f(4,0,0);
glVertex3f(2,9,-2);
glVertex3f(4,0,-4);

glEnd();

glColor3f(1,0,1);
glBegin(GL_POLYGON);
glVertex3f(4,0,-4);
glVertex3f(2,9,-2);
glVertex3f(0,0,-4);

glEnd();

glColor3f(1,1,0);
glBegin(GL_POLYGON);
glVertex3f(0,0,-4);
glVertex3f(2,9,-2);
glVertex3f(0,0,0);
glEnd();
glutSwapBuffers();
ang+=0.1f;
}
void piramide()

{

ang += 2;

if( ang > 360 ) ang -= 360;


glutPostRedisplay();
}

void init()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glClearColor(0,0,0,0);
}
void idle()
{
display();
}
void ArrowKey(int key, int x, int y){
switch (key){
case GLUT_KEY_RIGHT:
if( ejex<8.0 ){ejex = ejex + 0.5;}
if(ejex>0.1 && ejex<3){escalar = ejex;}
break;

case GLUT_KEY_LEFT:
if( ejex>-8.0 ){ejex = ejex - 0.5;}
if(ejex>0.1 && ejex<3){escalar = ejex;}
break;
}

}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:
exit(0);
break;}
}
int main (int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glEnable(GL_DEPTH_TEST);
glutInitWindowPosition(50,50);
glutInitWindowSize(500,500);
glutCreateWindow("Hello");

glutIdleFunc(piramide);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutKeyboardFunc(keyboard);
glutSpecialFunc(ArrowKey);
glutMainLoop();
return 0;
}


miércoles, 11 de septiembre de 2013

Transformaciones Geométricas

TRANSFORMACIONES GEOMÉTRICAS.

Un paquete grafico permite al usuario especificar que parte de una imagen definida se debe visualizar y donde esta parte se debe colocar en el dispositivo de visualización.
En el caso de las imágenes bidimensionales, una vista se selecciona especificando el plano xy y contiene la imagen total o cualquier parte de ella. Cuando se seleccionan múltiples zonas de vista, estas zonas se pueden colocar en ubicaciones de visualización independientes, o algunas zonas se podrían insertar en zonas de visualización más grandes.

TRASLACION.
Se aplica una traslación en un objeto para cambiar su posición a lo largo de la trayectoria de una línea recta de una dirección de coordenadas a otra. Convertimos un punto bidimensional al agregar las distancias de traslación, tx y ty a la posición de coordenadas original (x, y) para mover el punto a una nueva posición (x’, y’).

X’ = x + tx’                         y’ = y + ty
La traslación es una transformación de cuerpo rígido que mueve objetos sin deformarlos, es decir, se traslada cada punto del objeto la misma distancia.

ROTACIÓN.

Se aplica a los objetos al cambiar su posición a lo largo de la trayectoria de una circunferencia en el plano xy, especificamos un ángulo de rotación y la posición, en torno al cual se gira el objeto.

Al igual que las traslaciones, las rotaciones son transformaciones de cuerpos rígidos que mueven los objetos sin deformarlos. Se giran a través del mismo ángulo todos los puntos del objeto.  Los polígonos se giran al desplegar cada vértice a través del ángulo de rotación especifico y se vuelve a generar el polígono utilizando los nuevos vértices.  Las líneas curvas se giran al cambiar la posición de los puntos de definición y se vuelven a trazar las curvas.



ESCALACION.
Una transformación de Escalacion altera el tamaño de un objeto. Se puede realizar esta operación para polígonos al multiplicar los valores de coordenadas (x, y) de cada vértice por los factores de Escalacion sx y sy para producir las coordenadas transformadas (x’, y’):
X’ = x.sx, y’ = y.sy

Los objetos que se transforman con las ecuaciones se escalan y cambian de posición. Los factores de Escalacion con valores menores a 1 acercan los objetos al origen de las coordenadas en tanto que los valores mayores que 1 alejan las posiciones de coordenadas del origen.

Incluir coordenadas para un punto fijo en las ecuaciones de Escalacion es similar a incluir coordenadas para un punto pivote en las ecuaciones de rotación. Se escalan polígonos al aplicar las transformaciones en cada vértice y luego volver a generar el polígono utilizando los vértices transformados.

2.2 COORDENADAS HOMOGENEAS Y REPRESENTACION MATRICIAL

En las aplicaciones de diseño y de creación de imágenes, realizamos traslaciones, rotaciones y escalaciones para ajustar los componentes de la imagen en sus posiciones apropiadas.

Las representaciones de matriz o representaciones matriciales son métodos estándar para implementar transformaciones en sistemas de graficas. En muchos sistemas, las funciones de rotación y Escalacion producen transformaciones con respecto al origen de las coordenadas.

2.3 COMPOSICION DE TRANSFORMACIONES BIDIMENSIONALES.

Traslaciones, rotaciones y escalaciones.

TRASLACIONES.
Se aplican dos vectores de traslación sucesivos en la posición de coordenadas P, la localización transformada final P, donde se representan P y P’ como vectores de columna de coordenadas homogéneas. Se puede verificar este resultado al calcular el producto de la matriz para las dos agrupaciones asociativas, es así, que demuestra que dos transformaciones sucesivas son aditivas.

ROTACIONES.

Dos rotaciones sucesivas que se aplican en el punto P producen la posición transformada. Al multiplicar las dos matrices de rotación, se verifica que dos rotaciones sucesivas son aditivas de modo que es posible calcular las coordenadas giradas finales con la matriz de rotación compuesta.

ESCALACIONES.

Concatenar matrices de transformación para dos operaciones de Escalacion sucesivas produce matriz de Escalacion compuesta. La matriz resultante indica que las operaciones de Escalacion sucesivas con multiplicativas. Es decir, si debiéramos triplicar el tamaño de un objeto dos veces en una sucesión, el tamaño final seria nueve veces al tamaño original.

ROTACIÓN DEL PUNTO PIVOTE GENERAL.

Se realiza una secuencia de operaciones la cual es:
-          Traslade el objeto de modo que mueva la posición del punto pivote al origen de las coordenadas
-          Gire el objeto con respecto del origen de las coordenadas.
-          Traslade el objeto de manera que se regrese el punto pivote a su posición original

ESCALACION DEL PUNTO FIJO GENERAL.

Se realiza una secuencia de operaciones la cual es:
1.      Traslade el objeto de modo que el punto fijo coincida con el origen de las coordenadas
2.      Escale el objeto con respecto del origen de las coordenadas
3.      Utilice la traslación inversa del paso 1 para regresar el objeto a su posición original.

PROPIEDADES DE CONCATENACIÓN.

La multiplicación de matrices es asociativa. Para tres matrices cualesquiera A, B y C, el producto matricial ABC se puede llevar a cabo al multiplicar primero a por B o multiplicar primero B por C
Por tanto podemos evaluar los productos matriciales al utilizar una agrupación asociativa ya sea de izquierda a derecha o de derecha a izquierda.

2.4 TRANSFORMACION VENTANA-AREA DE VISTA

El programador de la aplicación especifica una región rectangular en coordenadas de mundo (programa de aplicación representa un mundo que se crea o presenta interactivamente para el usuario), llamada ventana de coordenadas mundiales y una región rectangular correspondiente en coordenadas de pantalla, llamada área de vista, con la cual se establece la correspondencia de la ventana de coordenadas mundiales. La transformación que establece entre la ventana y el área se aplica a todas las primitivas de salida en coordenadas de mundo para que correspondan a coordenadas de pantalla.

2.5 TRANSFORMACIONES DE COMPOSICION GENERAL Y DE EFICIENCIA COMPUTACIONAL.

Una transformación bidimensional general representa una combinación de traslaciones, rotaciones y escalaciones.
Una implementación eficiente de las operaciones de transformación consiste en formular matrices de transformación, concatenar cualquier secuencia de transformación y calcular coordenadas transformadas al utilizar ecuaciones.




2.6 REPRESENTACION MATRICIAL DE TRANSFORMACIONES TRIDIMENSIONALES.

Así como las transformaciones bidimensionales se pueden presentar con matrices de 3 x 3 usando coordenadas homogéneas, las transformaciones tridimensionales se pueden representar con matrices de 4 x 4, siempre y cuando usemos representaciones de coordenadas homogéneas de los puntos en el espacio tridimensional.
La transformación de un punto a esta forma se denomina homogeneización, igual que antes. Además los puntos cuya coordenada W es cero se llaman puntos en el infinito. También existe una interpretación geométrica. Cada punto en el espacio tridimensional se representa con una línea que pasa por el origen en el espacio de cuatro dimensiones y las representaciones homogeneizadas de estos puntos forman un subespacio tridimensional de un espacio de cuatro dimensiones definido por la ecuación W = 1.

2.7 COMPOSICION DE TRANSFORMACIONES TRIDIMENSIONALES
                                                                               
Se presentan dos formas de lograr la transformación deseada. El primer método es componer las transformaciones primitivas, T, Rx, Ry y Rz. Este método aunque es algo tedioso, es fácil de ilustrar y su comprensión nos ayudara en nuestro conocimiento de las transformaciones. El segundo método, que utiliza las propiedades de las matrices ortogonales especiales es más abstracto.
Transformaciones primitivas.

1.      Traslación de P1 al origen
2.      Rotación sobre el eje y para que P1P2 este en el plano (y, z)
3.      Rotación sobre el eje x para que P1P2 este en el eje z.

4.      Rotación sobre el eje z para que P1P3 esté en el plano (y, z).

miércoles, 4 de septiembre de 2013

Transformaciones Geometricas,Traslación, Rotación y Escalación.


TRANSFORMACIONES GEOMÉTRICAS EN DOS DIMENSIONES. 
Un paquete grafico permite al usuario especificar que parte de una imagen definida se debe visualizar y donde esta parte se debe colocar en el dispositivo de visualización. 
En el caso de las imágenes bidimensionales, una vista se selecciona especificando el plano xy y contiene la imagen total o cualquier parte de ella. Cuando se seleccionan múltiples zonas de vista, estas zonas se pueden colocar en ubicaciones de visualización independientes, o algunas zonas se podrían insertar en zonas de visualización más grandes.

TRASLACION.
Se aplica una traslación en un objeto para cambiar su posición a lo largo de la trayectoria de una línea recta de una dirección de coordenadas a otra. Convertimos un punto bidimensional al agregar las distancias de traslación, tx y ty a la posición de coordenadas original (x, y) para mover el punto a una nueva posición (x’, y’).

X’ = x + tx’                         y’ = y + ty

La traslación es una transformación de cuerpo rígido que mueve objetos sin deformarlos, es decir, se traslada cada punto del objeto la misma distancia. 



ROTACIÓN. 

Se aplica a los objetos al cambiar su posición a lo largo de la trayectoria de una circunferencia en el plano xy, especificamos un ángulo de rotación y la posición, en torno al cual se gira el objeto. 

Al igual que las traslaciones, las rotaciones son transformaciones de cuerpos rígidos que mueven los objetos sin deformarlos. Se giran a través del mismo ángulo todos los puntos del objeto.  Los polígonos se giran al desplegar cada vértice a través del ángulo de rotación especifico y se vuelve a generar el polígono utilizando los nuevos vértices.  Las líneas curvas se giran al cambiar la posición de los puntos de definición y se vuelven a trazar las curvas. 


ESCALACION. 
Una transformación de Escalacion altera el tamaño de un objeto. Se puede realizar esta operación para polígonos al multiplicar los valores de coordenadas (x, y) de cada vértice por los factores de Escalacion sx y sy para producir las coordenadas transformadas (x’, y’):
X’ = x.sx, y’ = y.sy
Los objetos que se transforman con las ecuaciones se escalan y cambian de posición. Los factores de Escalacion con valores menores a 1 acercan los objetos al origen de las coordenadas en tanto que los valores mayores que 1 alejan las posiciones de coordenadas del origen. 

Incluir coordenadas para un punto fijo en las ecuaciones de Escalacion es similar a incluir coordenadas para un punto pivote en las ecuaciones de rotación. Se escalan polígonos al aplicar las transformaciones en cada vértice y luego volver a generar el polígono utilizando los vértices transformados.

APLICACIÓN

TRASLACIÓN.
Se aplican dos vectores de traslación sucesivos en la posición de coordenadas P, la localización transformada final P, donde se representan P y P’ como vectores de columna de coordenadas homogéneas. Se puede verificar este resultado al calcular el producto de la matriz para las dos agrupaciones asociativas, es así, que demuestra que dos transformaciones sucesivas son aditivas.

ROTACIÓN.

Dos rotaciones sucesivas que se aplican en el punto P producen la posición transformada. Al multiplicar las dos matrices de rotación, se verifica que dos rotaciones sucesivas son aditivas de modo que es posible calcular las coordenadas giradas finales con la matriz de rotación compuesta.

ESCALACION.

Concatenar matrices de transformación para dos operaciones de Escalacion sucesivas produce matriz de Escalacion compuesta. La matriz resultante indica que las operaciones de Escalacion sucesivas con multiplicativas. Es decir, si debiéramos triplicar el tamaño de un objeto dos veces en una sucesión, el tamaño final seria nueve veces al tamaño original.

domingo, 1 de septiembre de 2013

Imagen Vectorial y Rasterizada

IMAGEN RASTERIZADA 


Una imagen rasterizada es una estructura o fichero de datos que representan generalmente una rejilla rectangular de pixeles o puntos de color en un monitor de ordenador, papel u otro dispositivo de representación.

El color de cada pixel esta definido individualmente. Por ejemplo, una imagen en un espacio de color RGB, almacenara el valor de color de cada pixel en tres bytes: una para el verde, para azul y para rojo.

IMAGEN VECTORIAL

Es la imagen digital. La misma se encuentra conformada por objetos geométricos independientes como ser: polígonos, arcos, entre otros, y a cada uno de ellos se los definirá por distintos atributos matemáticos tales como la forma, el color, la posición.

La principal bondad que nos ofrecen las imágenes vectoriales es la de poder ampliar a placer su tamaño sin sufrir el problema del escalado que tienen los gráficos rasterizados.
Además permiten mover, estirar y hasta retorcer las imágenes de manera muy simple.
Entre las figuras geométricas que se aplican se destacan las siguientes: polígonos, líneas, políneas, curvas de Bézier, Bezigonos, elipses y círculos.
Cabe destacar, que el uso de este tipo de formato se ha extendido a la generación de imágenes en tres dimensiones, ya sean estáticas o dinámicas.

IMÁGENES RASTERIZADAS (FORMATOS)

GIF
Utilizado en la web. Formato de 8 bits (256 colores máximo) con soporte de animación por frames. Utiliza la compresión LZW.


JPEG
Es usado para fotografías e imágenes de gran tamaño y variedad de color en la web y por las cámaras digitales. Formato comprimido con perdida de calidad aunque se puede ajustar.


BMP
Usado por Microsoft Windows y por su Sistema Operativo. Se le puede aplicar compresión sin perdidas, aunque no todos los programas son compatibles.


TIFF
Se utiliza en gráficos de imprenta. Se pueden emplear algoritmos con perdida o sin perdida, muchos programas solo son compatibles con un pequeño conjunto de opciones disponibles y mayormente utilizados en scanner.


PNG
Gráfico libre con compresión sin pérdida que ofrece profundidades desde 8, 24 y 48 bits: 281 trillones de colores y se pueden obtener archivos desde 8 y 16 bits igual a 65536 tonos de grises. Fue diseñado para reemplazar al GIF en la web.

IMÁGENES VECTORIALES (FORMATOS)

DXF
Ficheros estándar de texto ASCII utilizados para almacenar datos vectoriales de programas CAD


CDR
Formato vectorial para aplicaciones CorelDRAW


DWG
Archivo en formato binario usado por AutoCAD. Puede contener tanto en 2D como en 3D con compresion y comprobacion de errores CRC para datos internos.


ODG
Formato creado por Macromedia, es ejecutado por plugin Flash, el cual permite mostrar animaciones contenidas en ficheros SWF.


SWF
Formato de archivo de gráficos vectoriales creado por Macromedia, pueden ser creados por Flash, suelen ser pequeños para ser publicadas en la WWW en forma de animaciones o applets con diversas funciones.


AI
Formato vectorial para Adobe Illustrator.