Upload
alejandra-felix
View
218
Download
0
Embed Size (px)
Citation preview
Primitivas de Dibujo y Transformaciones
Programas en Java
GraficaciónIA7200-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
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
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
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
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
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”
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”
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
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
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
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
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)…