13
Primitivas de Dibujo y Transformaciones Programas en Java Graficación IA7200-T

Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Embed Size (px)

Citation preview

Page 1: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Primitivas de Dibujo y Transformaciones

Programas en Java

GraficaciónIA7200-T

Page 2: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 2

Contenido• Primitivas de Dibujo

– Swing de Java:• drawLine()

• drawRect()

• drawString()

– Formas Simples:• Rectangle

• Ellipse

• Aplicaciones de Java– Objetos JFrame

– Objetos JPanel

• Trasformaciones de Coordenadas– Translación

– Rotación

– Escalamiento

– Deformación (Shearing)

• Recortes de Coordenadas– Rectilineo

– Por forma

Page 3: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 3

Aplicaciones Java • Programas completos

que pueden ser ejecutados de forma independiente

• Es más difícil escribir programas simples que Applets

• Demasiado código alrededor de la aplicación, que los applets proporcionan de manera automática

• Heredar (Extend) de un Frame o JFrame

• Jframe = entidad Swing

Page 4: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 4

• MyProg01– Rectángulo negro en fondo

blanco

• Estructura:– Un JPanel dentro de un

JFrame

– Método paintComponent()

– Más acerca de Java y Swing en el curso

• El manejador de ventanas lanza una ventana independiente para la aplicación, con sus propias gráficas, botones, etc.

• Se puede correr desde una terminal

Aplicaciones Java

Page 5: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 5

• MyProg02– Misma estructura que MyProg01– Diferentes comandos de graficación

• Cada vez que el sistema llama a paintComponent() se imprime:

paintComponent: ancho=532paintComponent: alto=532

• Se puede usar setResizeable(true) para que el usuario pueda cambiar el tamaño se la ventana en tiempo de ejecución.

Aplicaciones Java

Page 6: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 6

Transformaciones: Translación

• translate(x, y);

• Puede ser aplicado e objetos de tipo Graphics o Graphics2D

• Desplaza el origen en magnitudes x, y

• No distorsiona• Desliza el dibujo en el

espacio de Coordenadas Cartesianas

Page 7: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 7

Transformaciones: Rotación

• rotate(angulo);

• Angulo debe estar en radianes

• 360°= 2 π radianes• Puede ser aplicado a

Graphics y Graphics2D

• Rota el dibujo• Un ángulo positivo va

del eje +x al eje +y• Recuerden que y “va

hacia abajo”

Page 8: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 8

Transformaciones: Escalamiento

• scale(x,y);

• Puede usarse con Graphics y Graphics2D

• Estira o encoge el espacio de coordenadas

• Ejemplo:– scale( 1.0, -1.0);

– Hace que la y “vaya hacia arriba”

Page 9: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 9

Transformaciones: Deformación (Shearing)

• shear(shx, shy);• El primer argumento es

la deformación en dirección x, como factor de y

• El segundo es la deformación de y como factor de x

• Distorciona el espacio de dibujo

• Puede ser usado con Graphics y Graphics2D

Page 10: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 10

• MyProg03– Mismo código que MyProg01 y 02

– Demuestra las Transformaciones Afines

– y corre hacia abajo, los ángulos positivos se ven como negativos

– Ángulos positivos van de +x a +y (convención)

• Más tarde estudiaremos la trigonometría y álgebra lineal de estas transformaciones

Aplicaciones Java

Page 11: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 11

• MyProg04• Mismo código que 01-03• Usa una Constante int SQUARE_SIZE =10• Dibuja un patrón espiral usando transformaciones

afines sucesivas• Rota 12 grados, y traslada progresivamente

Aplicaciones Java

Page 12: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 12

• MyProg05• Ejemplo de Recorte (Clipping) • Clipping es limitar el área de dibujo - i.e. Recortando

partes indeseadas• Podemos usar recortes rectlíneos simples• O mas complejos - v.g. un círculo

Aplicaciones Java

Page 13: Primitivas de Dibujo y Transformaciones Programas en Java Graficaci ó n IA7200-T

Graficación 13

Resumen• Podemos escribir aplicaciones

de Java que corren en su propia ventana usando JFrames

• La biblioteca de Swing tiene muchas primitivas interesantes para dibujo

• Hay muchas formas geométricas útiles y rutinas diversas

• Las Transformaciones pueden ser aplicadas al espacio de coordenadas de dibujo

• Se puede hacer Clipping para limitar lo que dibujamos

• Los programas estudiados usan código estático de dibujo

• Escribiremos programas más interesantes que decidan dinámicamente que dibujar (render)…