UNIDAD II.- TRANSFORMACIONES GEOMÉTRICAS

Anuncio
Graficación
UNIDAD II.- TRANSFORMACIONES GEOMÉTRICAS
___________________________________________________________________
LECCIÓN 2.1 Transformaciones bidimensionales.
___________________________________________________________________
2.1.11.- Transformaciones afines
Traslación: void setToTranslation(double tx, double ty)
–
Define la cantidad de puntos que se desplaza el objeto (tx y ty).
Rotación:
void setToRotation(double theta)
void setToRotation(double theta, double x, double y)
–
Define una rotación sobre el origen de coordenadas.
–
En ángulo es en radianes.
–
El giro positivo es en el sentido de las manecillas del reloj
–
Los valores x y y indican que el objeto va a rotar alrededor del punto (x,y)
Escalado:
void setToScale(double sx, double sy)
–
Define la forma en que se agranda o reduce un objeto gráfico
–
sx es el factor sobre las x y sy es el factor sobre las y
–
Si los factores son mayores a 1 es un agrandamiento, si son menores a 1 es una
reducción.
Rafael Rivera López
1
Graficación
Cizallado:
–
void setToShear(double shx, double shy)
Produce una deformación del objeto de forma que parece que se alarga de una esquina.
package ejemplosgraphics2d;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class Transformaciones extends JPanel{
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;
// Origen de coordenadas al centro de la pantalla
g2.translate(getWidth()/2,getHeight()/2);
// Ejes X y Y
Line2D linea1 = new Line2D.Double(-1*getWidth()/2,0,getWidth(),0);
g2.draw(linea1);
Line2D linea2 = new Line2D.Double(0,-getHeight()/2,0,getHeight());
g2.draw(linea2);
// Objeto original
g2.setColor(Color.blue);
Rectangle2D r = new Rectangle2D.Double(100,100,100,100);
g2.draw(r);
// Definición de transformación
AffineTransform tr = new AffineTransform();
// Traslación
tr.setToTranslation(20,20);
Shape r1 = tr.createTransformedShape(r);
g2.setPaint(Color.magenta);
g2.draw(r1);
// Rotación
Shape r2 = null;
g2.setPaint(Color.green);
for(int i=1;i<8;i++){
tr.setToRotation(45f*i*Math.PI/180);
r2 = tr.createTransformedShape(r);
g2.draw(r2);
}
g2.setPaint(Color.cyan);
tr.setToRotation(-30f*Math.PI/180,100,100);
r2 = tr.createTransformedShape(r);
g2.draw(r2);
// Cuadrado con centro en el origen
g2.setColor(Color.blue);
Rafael Rivera López
2
Graficación
}
r = new Rectangle2D.Double(-50,-50,100,100);
g2.draw(r);
// Escalado
g2.setPaint(Color.ORANGE);
tr.setToScale(2,2);
Shape r3 = tr.createTransformedShape(r);
g2.draw(r3);
// Cizallado
g2.setPaint(Color.DARK_GRAY);
tr.setToShear(0.5,0.5);
Shape r4 = tr.createTransformedShape(r);
g2.draw(r4);
}
Rafael Rivera López
3
Descargar