Sunteți pe pagina 1din 8
Materia: GRAFICACION Nombre del trabajo: 4.1. RELLENADO DE POLÍGONOS Carrera: INGENIERIA EN SISTEMAS COMPUTACIONALES
Materia:
GRAFICACION
Nombre del trabajo:
4.1. RELLENADO DE POLÍGONOS
Carrera:
INGENIERIA EN SISTEMAS COMPUTACIONALES
Catedrático:
NICOLAS CABRERA HIDALGO
Estudiante:
RICARDO ENRIQUE DE LA PARA AGUIRRE
Número de control:
13510644
Martes, 26 de abril del 2016

INTRODUCCIÓN

Para elegir el color de los polígonos, basta con hacer una llamada a glColor entre la definición de cada polígono.

Esta modificación provocará que el primer triángulo se ponga en rojo y el segundo en verde. La función glColor define el color de rellenado actual y lleva como parámetros los valores de las componentes RGB del color deseado y, opcionalmente, un cuarto parámetro con el valor alpha. Estos parámetros son flotantes y se mueven en el rango [0.0, 1.0].

4.1 RELLENO DE POLÍGONOS

Polígono es una figura básica dentro de las representaciones y tratamiento de imágenes bidimensionales y su utilización es muy interesante para modelar objetos del mundo real.

En un sentido amplio, se define como una región del espacio delimitada por un conjunto delineas (aristas) y cuyo interior puede estar rellenado por un color o patrón dado.

CASOS DE RELLENO SEGÚN SU COMPLEJIDAD

El caso más sencillo de relleno es el triángulo.

Luego sigue el relleno de polígonos convexos de N-lados.

Relleno de polígonos cóncavos.

SCAN-LINE

Fila a fila van trazando líneas de color entre aristas para scan-line que cruce el polígono se busca en la intersección entre las líneas de barrido y las aristas del polígono.

Dichas intersecciones se ordenan y se rellenan a pares.

LINEA DE BARRIDO

Es válido para polígonos cóncavos como convexos. Incluso para si el objeto tiene huecos interiores.

Funcionan en el trozo de líneas horizontales, denominadas líneas de barridos, que intersectan un número de veces, permitiendo a partir de ella identificar los puntos que se consideran interiores al polígono.

INUNDACIÓN

Empieza en un interior y pinta hasta encontrar la frontera del objeto.

Partimos de un punto inicial (x,y), un como de relleno y un color de frontera.

El algoritmo va testeando los píxeles vecinos a los ya pintados, viendo si son frontera o no.

No solo sirven para polígonos, sino para cualquier área curva para cualquier imagen AE se usan los programas de dibujo.

FUERZA BRUTA

Calcula una caja contenedora del objeto.

Hace un barrido interno de la caja para comprobar c/pixel este dentro del polígono.

Con polígonos simétricos basta con que hagamos un solo barrido en una sección y replicar los demás pixeles.

Requiere aritmética punto-flotante, esto lo hace preciso y costoso.

Modelos básicos de iluminación

Entendemos por modelo de iluminación el cálculo de la intensidad de cada punto de la escena.

En el cálculo de la intensidad de un punto intervienen:

El tipo e intensidad de la fuente de luz

El material del objeto

La orientación del objeto con respecto a la luz

El modelo más utilizado es el modelo de Phong.

Ejemplos en java.

import java.awt.Color; import java.awt.Graphics; import java.awt.Polygon; import javax.swing.JFrame; public class Polys extends JFrame {

//Declaramos variables

//Coordenadas en x para un polígono rojo

private int poliXR[] = {75, 25, 40, 110, 125}; //Coordenadas en y para un polígono rojo private int poliYR[] = {50, 90, 150, 150, 90}; //Coordenadas en x para un polígono azul private int poliXB[] = {325, 275, 290, 360, 375}; //Coordenadas en y para un polígono azul private int poliYB[] = {50, 90, 150, 150, 90}; private Polygon poliR; //Polígono de la clase

Polygon

private Polygon poliG; //Polígono de la clase

Polygon

public Polys() {

//Crea un polígono con 5 vértices poliR = new Polygon(poliXR, poliYR, 5); //Crea un nuevo polígono vacío poliG = new Polygon(); //Agrega los puntos (x, y) al polígono poliG.addPoint(200, 50); poliG.addPoint(150, 90); poliG.addPoint(165, 150); poliG.addPoint(235, 150); poliG.addPoint(250, 90); //Titulo del JFrame setTitle("Dibujando Poligonos y Polilineas"); //Operación de salida del JFrame

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Tamaño del JFrame setSize(400, 200); //Fija el tamaño del JFrame, no

redimensionable

setResizeable(false); //Hace visible el JFrame en la pantalla setVisible(true);

}

public static void paint(Graphics g) {

g.setColor(Color.WHITE);

//Rellena el fondo de color Blanco g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(Color.RED);//Color Rojo //Dibuja un polígono rojo g.drawPolygon(poliR);

g.setColor(Color.GREEN); //Rellena un polígono Verde

//Color Blanco

//Color Verde

}

g.fillPolygon(poliG);

g.setColor(Color.BLUE);

//Dibuja una polilínea Azul g.drawPolyline(poliXB, poliYB, 5);

//Color Azul

public static void main(String args []) {

//Crea una nueva instancia de la clase Polys Polys poligonos = new Polys();

}

}

import java.awt.Graphics; import java.awt.Polygon; import javax.swing.JPanel; public class PoligonosJPanel extends
import java.awt.Graphics;
import java.awt.Polygon;
import javax.swing.JPanel;
public class PoligonosJPanel extends JPanel
{
// dibuja polígonos y polilíneas
public void paintComponent( Graphics g )
{
super.paintComponent( g ); // llama al método paintComponent
de la superclase

// dibuja polígono con objeto polígono

 

int valoresX[] = { 20, 40, 50, 30, 20, 15 }; int valoresY[] = { 50, 50, 60, 80, 80, 60 };

 

Polygon poligono1 = new Polygon( valoresX, valoresY, 6 );

g.drawPolygon( poligono1 );

 

// dibuja polilíneas con dos arreglos

 

int valoresX2[] = { 70, 90, 100, 80, 70, 65, 60 };

 

int valoresY2[] = { 100, 100, 110, 110, 130, 110, 90 };

g.drawPolyline( valoresX2, valoresY2, 7 );

 

// rellena polígono con dos arreglos

 

int valoresX3[] = { 120, 140, 150, 190 };

int valoresY3[] = { 40, 70, 80, 60 };

 

g.fillPolygon( valoresX3, valoresY3, 4 );

// dibuja polígono relleno con objeto Polygon

Polygon poligono2= new Polygon();

 

poligono2.addPoint( 165, 135 ); poligono2.addPoint( 175, 150 );

 

poligono2.addPoint( 270, 200 ); poligono2.addPoint( 200, 220 ); poligono2.addPoint( 130, 180 );

 

g.fillPolygon( poligono2);

 

} // fin del método paintComponent

 

} // fin de la clase PoligonosJPanel

-------------------------------------------------------------

-------------------------------------------------------------

-------------------------------------

------------------------------------------------------------- ------------------------------------ -
// Fig. 12.28: DibujarPoligonos.java // Dibujo de polígonos. import javax.swing.JFrame; public class DibujarPoligonos
// Fig. 12.28: DibujarPoligonos.java
// Dibujo de polígonos.
import javax.swing.JFrame;
public class DibujarPoligonos
{
// ejecuta la aplicación
public static void main( String args[] )
{
// crea marco para objeto PoligonosJPanel
JFrame marco = new JFrame( "Dibujo de poligonos" );
marco.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

PoligonosJPanel poligonosJPanel = new PoligonosJPanel();

 

marco.add( poligonosJPanel ); // agrega poligonosJPanel al

 

marco

 

marco.setSize( 280, 270 ); // establece el tamaño del marco

marco.setVisible( true ); // muestra el marco

 

} // fin de main

 

} // fin de la clase DibujarPoligonos

 

CONCLUSIÓN

Gracias a las diferentes técnicas que vimos con respecto a los polígonos nosotros podemos lograr a través de estos que nuestros gráficos adquieran un mayor efecto de realismo. Y vemos que la iluminación y sombreado toman como características principales de la visibilidad, pero por otra parte hay otras características que influyen como el acabado del objeto, la transmisión de luz. Distintas combinaciones de estos factores pueden dar lugar a una infinita variedad de distintos enfoques, que harán que nuestros objetos se vean mejor.

REFERENCIA

http://es.scribd.com/doc/39390470/Computacion-Grafica-Iluminacion-y-

Sombreado

http://www.buenastareas.com/ensayos/Computacion-Grafica-Tecnicas-

De-Sombreado-e/1156313.html

http://graficacionedgar.blogspot.mx/p/4.html

http://graficos-12.blogspot.mx/2010/01/ejercicio-12-27-28.html

http://jugandoconjava.co/tutoriales/jFrames/dibujandoJFrame/dibujandoJ

Frame.html