UNIDAD II.- TRANSFORMACIONES GEOMÉTRICAS

Anuncio
Graficación
UNIDAD II.- TRANSFORMACIONES GEOMÉTRICAS
___________________________________________________________________
LECCIÓN 2.1 Transformaciones bidimensionales.
___________________________________________________________________
2.1.6.- Modelos geométricos
package ejemplosgraphics2d;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class Graficos extends JPanel{
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;
g2.translate(5,5);
Line2D linea1 = new Line2D.Double(-5,0,640,0);
g2.draw(linea1);
Line2D linea2 = new Line2D.Double(0,-5,0,480);
g2.draw(linea2);
g2.setColor(Color.darkGray);
QuadCurve2D quad = new QuadCurve2D.Double(20,20,100,300,300,150);
g2.draw(quad);
g2.setColor(Color.GREEN);
CubicCurve2D cubic =
new CubicCurve2D.Float(20,20,100,300,300,150,400,400);
g2.draw(cubic);
g2.setColor(Color.MAGENTA);
Arc2D arc;
for(int i=0;i<3;i++){
arc = new Arc2D.Float(400f,100f,200f,200f,
0f+120f*i,40f,Arc2D.OPEN);
g2.draw(arc);
arc = new Arc2D.Float(400f,100f,200f,200f,
40f+120f*i,40f,Arc2D.PIE);
g2.fill(arc);
arc = new Arc2D.Float(400f,100f,200f,200f,
80f+120f*i,40f,Arc2D.CHORD);
g2.draw(arc);
}
Rafael Rivera López
1
Graficación
int [] x = {20,100,300,400};
int [] y = {20,300,150,400};
g2.setColor(Color.BLUE);
Polygon p = new Polygon(x, y, 4);
g2.draw(p);
}
}
2.1.7.- Área de Geometría Constructiva
Clase Area: Clase para crear formas más complejas se combinan varias formas
Operaciones: Se aplican sobre dos formas produciendo una nueva forma
–
Unión: Todos los puntos de dos formas.
–
Intersección: Los puntos que están en ambas formas.
–
Diferencia: Los puntos que están en la primera forma y no están en la segunda.
–
Diferencia simétrica: Los puntos que están solamente en alguno de las dos formas
Area(Shape s)
void add(Area a)
void intersect(Area a)
void subtract(Area a)
void exclusiveOr(Area a)
package ejemplosgraphics2d;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class AreaGeometria extends JPanel{
public void paintComponent(Graphics g){
Rafael Rivera López
2
Graficación
}
Graphics2D g2 = (Graphics2D)g;
g2.translate(5,5);
Line2D linea1 = new Line2D.Double(-5,0,640,0);
g2.draw(linea1);
Line2D linea2 = new Line2D.Double(0,-5,0,480);
g2.draw(linea2);
g2.setColor(Color.darkGray);
Shape s1 = new Ellipse2D.Double(0, 0, 100, 100);
Shape s2 = new Ellipse2D.Double(60, 0, 100, 100);
Area a1;
Area a2 = new Area(s2);
g2.translate(20, 50);
g2.draw(s1);
g2.draw(s2);
g2.translate(0,200);
a1 = new Area(s1);
a1.add(a2);
g2.fill(a1);
g2.translate(140,0);
a1 = new Area(s1);
a1.intersect(a2);
g2.fill(a1);
g2.translate(140,0);
a1 = new Area(s1);
a1.subtract(a2);
g2.fill(a1);
g2.translate(140,0);
a1 = new Area(s1);
a1.exclusiveOr(a2);
g2.fill(a1);
}
2.1.8.- General Path
–
GeneralPatth: Soporta la construcción de caminos con los objetos gráficos de
Graphics2D. El proceso de GeneralPath es como trazar con un lápiz.
–
Métodos:
void moveTo(float x, float y): Mueve el lápiz a la ubicación (x,y) sin trazar nada.
void lineTo(float x, float y): Traza una línea de la posición actual a la ubicación (x,y).
Rafael Rivera López
3
Graficación
void quadTo(float x1, float y1, float x2, float y2): Traza una curva cuadrática iniciando en
la posición actual hasta la ubicación (x2,y2).
void curveTo(float x1, float y1, float x2, float y2, float x3, float y3): Traza una curva
cúbica iniciando en la posición actual hasta la ubicación (x3,y3);
void closePath(): Traza una linea entre el punto inicial y el final.
package ejemplosgraphics2d;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class Dibujo extends JPanel{
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
GeneralPath path = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
float x0 = 1.0f;
float y0 = 0.0f;
float x1 = (float)Math.cos(2*Math.PI/5.0);
float y1 = (float)Math.sin(2*Math.PI/5.0);
float x2 = (float)Math.cos(4*Math.PI/5.0);
float y2 = (float)Math.sin(4*Math.PI/5.0);
float x3 = (float)Math.cos(6*Math.PI/5.0);
float y3 = (float)Math.sin(6*Math.PI/5.0);
float x4 = (float)Math.cos(8*Math.PI/5.0);
float y4 = (float)Math.sin(8*Math.PI/5.0);
path.moveTo(x2*100,y2*100);
path.lineTo(x0*100,y0*100);
path.lineTo(x3*100,y3*100);
path.lineTo(x1*100,y1*100);
path.lineTo(x4*100,y4*100);
path.closePath();
g2.translate(120,120);
g2.draw(path);
g2.translate(200,0);
g2.fill(path);
path.setWindingRule(GeneralPath.WIND_NON_ZERO);
g2.translate(200,0);
g2.fill(path);
}
}
Rafael Rivera López
4
Descargar