SlideShare una empresa de Scribd logo
/*
 * Lienzo.java
 *
 * Created on 2 de mayo de 2004, 12:43
 */

package chuidiang.ejemplos.graficos.seno;

import   java.awt.Canvas;
import   java.awt.Graphics;
import   java.awt.Color;
import   java.awt.geom.AffineTransform;
import   java.awt.geom.Point2D;

/**
  * Clase que hereda de Canvas y dibuja en él una función sin(x), ajustándola
  * al tamaño del Canvas.
  */
public class Lienzo extends Canvas
{
     /**
     * Crea un AffineTransform y rellena un array de puntos con la función
     * sin(x)
     */
     public Lienzo()
     {
         t = new AffineTransform();
         ponSeno (puntos);
     }

    /**
    * Dibuja el sin(x) en el Canvas.
    * Recalcula la AffineTransform por si ha habido un cambio en el tamaño
    * del Cavnas, transforma los puntos de coordenadas de sin(x) a pixels y
    * los dibuja.
    */
    public void paint(Graphics g)
    {
        Point2D [] puntosTransformados;

         // Recalcula la AffineTransform
         ajustaAffineTransform();

         // Transforma los puntos, cambio de coordenadas de los mismos
         puntosTransformados = transformaPuntos(puntos);

         // Dibuja los puntos.
         g.setColor (Color.RED);
         for (int i = 1; i<500; i++)
         {
             g.drawLine (
                 (int)puntosTransformados[i-1].getX(),
                 (int)puntosTransformados[i-1].getY(),
                 (int)puntosTransformados[i].getX(),
                 (int)puntosTransformados[i].getY());
         }
    }

    /**
    * Rellena un array de puntos con la función sin(x).
    * El array de puntos que se le pasa debe tener dimensión, pero no hace
    * falta que tenga los items creados.
    */
    protected void ponSeno (Point2D [] puntos)
{
        double incremento = (xMax - xMin)/puntos.length;
        double x = xMin;

        for (int i = 0; i<puntos.length; i++)
        {
            puntos[i] = new Point2D.Double (x, Math.sin(x));
            x = x + incremento;
        }
    }

    /**
    * Transforma las coordenadas de los puntos en pixels.
    */
    protected Point2D[] transformaPuntos (Point2D [] puntos)
    {
        Point2D [] puntosTransformados = new Point2D[puntos.length];
        for (int i=0; i<puntos.length; i++)
            puntosTransformados[i] = new Point2D.Double();
        t.transform (puntos, 0, puntosTransformados, 0, puntos.length);
        return puntosTransformados;
    }

    /**
    * Recalcula la AffineTransform con el tamaño del Canvas y los extremos
    * de las coordenadas del sin(x).
    */
    protected void ajustaAffineTransform()
    {
        t.setToIdentity();
        t.translate (0.0, getHeight());
        t.scale (getWidth()/(xMax-xMin), -getHeight()/(yMax-yMin));
        t.translate (-xMin, -yMin);
    }


    /** AffineTransform para el cambio de coordenadas a pixels */
    private AffineTransform t;

    /** Valor minimo de x para el dibujo del sin(x) */
    private double xMin = -Math.PI/2.0;

    /** Valor máximo de x para el dibujo del sin(x) */
    private double xMax = 3*Math.PI/2.0;

    /** Valor minimo de y para el dibujo del sin(x) */
    private double yMin = -1.5;

    /** Valor máximo de y para el dibujo del sin(x) */
    private double yMax = 2.0;

    /** Número de puntos que queremos dibujar */
    private Point2D [] puntos = new Point2D[500];

}

Más contenido relacionado

PDF
PPT
Máxima ejercicio
PPT
Máxima ejercicio
PPT
Imagen Morfologicas
PPTX
Graficas en matlab 2 d y 3d
PDF
Introducción a Processing
PPTX
Graficas en matlab
DOCX
Lab 3 de tele final
Máxima ejercicio
Máxima ejercicio
Imagen Morfologicas
Graficas en matlab 2 d y 3d
Introducción a Processing
Graficas en matlab
Lab 3 de tele final

La actualidad más candente (20)

PPTX
Gráficos en matlab eda
PPT
Imagen e histograma
PPTX
Deber graficas en matlab
PPTX
Clase 3 (1)
PDF
Matlab 2 Capitulo 6
PPTX
gráficas 2D y 3D (José Ponce)
PPT
Imagen Filtrado Espacial
PPTX
Graficas en matlab
PPTX
Gráficos en matlab
PPTX
Gráficas en matlab
PPTX
Graficas 2D y 3D
PPTX
Funciones y gráficas en matlab
PPTX
Graficos matlab
PDF
Graficos en matlab
DOC
Balas
PDF
Guia rapida processing
PPTX
Matlab graficas
PPT
Graficas en 2 d y 3d matlab
PPT
Segmentación de imagenes
Gráficos en matlab eda
Imagen e histograma
Deber graficas en matlab
Clase 3 (1)
Matlab 2 Capitulo 6
gráficas 2D y 3D (José Ponce)
Imagen Filtrado Espacial
Graficas en matlab
Gráficos en matlab
Gráficas en matlab
Graficas 2D y 3D
Funciones y gráficas en matlab
Graficos matlab
Graficos en matlab
Balas
Guia rapida processing
Matlab graficas
Graficas en 2 d y 3d matlab
Segmentación de imagenes
Publicidad

Destacado (20)

PDF
เมื่อข้อมูลเปลี่ยนโลกการแข่งขัน The new deal on data
PDF
Altea, Presentazione Business Unit Microsoft
PDF
Pp2002 13 ttg pengangkatan pns dalam jabatn struktural
PDF
여보세요견본원본한국어Korean
PPSX
Fisica
PPT
test_ms_pptx
PDF
5-8 Nisan Fırsatları
PPT
Экзит-пол, ОФ "Стратегия"
 
PDF
metro linea a
PPT
sample_ppt
PDF
Fiyatlar Kırılıyor, Herkesin Yüzü Gülüyor
PDF
IED.Oral Speaking
DOC
~$Mputer programming ii c
PPTX
Presentation2
PDF
2011年上半年中国公司美国ipo研究报告
PPT
ใครพิการกันแน่
PDF
Permendagri no. 13 thn 2006 pedoman pengelolaan keuangan daerah
PDF
Buku 5 panduan lomba motivasi belajar mandiri (lomojari) siswa smp terbuka
PPT
Newslide1
DOC
Nuevo documento de microsoft word
เมื่อข้อมูลเปลี่ยนโลกการแข่งขัน The new deal on data
Altea, Presentazione Business Unit Microsoft
Pp2002 13 ttg pengangkatan pns dalam jabatn struktural
여보세요견본원본한국어Korean
Fisica
test_ms_pptx
5-8 Nisan Fırsatları
Экзит-пол, ОФ "Стратегия"
 
metro linea a
sample_ppt
Fiyatlar Kırılıyor, Herkesin Yüzü Gülüyor
IED.Oral Speaking
~$Mputer programming ii c
Presentation2
2011年上半年中国公司美国ipo研究报告
ใครพิการกันแน่
Permendagri no. 13 thn 2006 pedoman pengelolaan keuangan daerah
Buku 5 panduan lomba motivasi belajar mandiri (lomojari) siswa smp terbuka
Newslide1
Nuevo documento de microsoft word
Publicidad

Similar a Lienzo.java (20)

PPSX
Colision por pixel
DOCX
PROGRAMA
PPTX
Producto notable Geogebra
PPT
Entorno visual p2
DOCX
Clase de dibujar c#
PDF
Laboratorio03
PPTX
Renderización en java
PDF
Interface de la aplicación
KEY
Introducción al elemento canvas de HTML5
PDF
Algoritmos2d
PDF
Universidad tecnológica del estado de zacatecas
PPTX
HTML Tour - Programación de Videojuegos HTML5
PDF
PPTX
Framework .NET 3.5 12 Uso de system.drawing
PPTX
Producto notable (Geogebra)
PPTX
Xna game studio presentación 05
PDF
PDF
Java 2d
PDF
Java 2d
PPTX
Graficacion
Colision por pixel
PROGRAMA
Producto notable Geogebra
Entorno visual p2
Clase de dibujar c#
Laboratorio03
Renderización en java
Interface de la aplicación
Introducción al elemento canvas de HTML5
Algoritmos2d
Universidad tecnológica del estado de zacatecas
HTML Tour - Programación de Videojuegos HTML5
Framework .NET 3.5 12 Uso de system.drawing
Producto notable (Geogebra)
Xna game studio presentación 05
Java 2d
Java 2d
Graficacion

Lienzo.java

  • 1. /* * Lienzo.java * * Created on 2 de mayo de 2004, 12:43 */ package chuidiang.ejemplos.graficos.seno; import java.awt.Canvas; import java.awt.Graphics; import java.awt.Color; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; /** * Clase que hereda de Canvas y dibuja en él una función sin(x), ajustándola * al tamaño del Canvas. */ public class Lienzo extends Canvas { /** * Crea un AffineTransform y rellena un array de puntos con la función * sin(x) */ public Lienzo() { t = new AffineTransform(); ponSeno (puntos); } /** * Dibuja el sin(x) en el Canvas. * Recalcula la AffineTransform por si ha habido un cambio en el tamaño * del Cavnas, transforma los puntos de coordenadas de sin(x) a pixels y * los dibuja. */ public void paint(Graphics g) { Point2D [] puntosTransformados; // Recalcula la AffineTransform ajustaAffineTransform(); // Transforma los puntos, cambio de coordenadas de los mismos puntosTransformados = transformaPuntos(puntos); // Dibuja los puntos. g.setColor (Color.RED); for (int i = 1; i<500; i++) { g.drawLine ( (int)puntosTransformados[i-1].getX(), (int)puntosTransformados[i-1].getY(), (int)puntosTransformados[i].getX(), (int)puntosTransformados[i].getY()); } } /** * Rellena un array de puntos con la función sin(x). * El array de puntos que se le pasa debe tener dimensión, pero no hace * falta que tenga los items creados. */ protected void ponSeno (Point2D [] puntos)
  • 2. { double incremento = (xMax - xMin)/puntos.length; double x = xMin; for (int i = 0; i<puntos.length; i++) { puntos[i] = new Point2D.Double (x, Math.sin(x)); x = x + incremento; } } /** * Transforma las coordenadas de los puntos en pixels. */ protected Point2D[] transformaPuntos (Point2D [] puntos) { Point2D [] puntosTransformados = new Point2D[puntos.length]; for (int i=0; i<puntos.length; i++) puntosTransformados[i] = new Point2D.Double(); t.transform (puntos, 0, puntosTransformados, 0, puntos.length); return puntosTransformados; } /** * Recalcula la AffineTransform con el tamaño del Canvas y los extremos * de las coordenadas del sin(x). */ protected void ajustaAffineTransform() { t.setToIdentity(); t.translate (0.0, getHeight()); t.scale (getWidth()/(xMax-xMin), -getHeight()/(yMax-yMin)); t.translate (-xMin, -yMin); } /** AffineTransform para el cambio de coordenadas a pixels */ private AffineTransform t; /** Valor minimo de x para el dibujo del sin(x) */ private double xMin = -Math.PI/2.0; /** Valor máximo de x para el dibujo del sin(x) */ private double xMax = 3*Math.PI/2.0; /** Valor minimo de y para el dibujo del sin(x) */ private double yMin = -1.5; /** Valor máximo de y para el dibujo del sin(x) */ private double yMax = 2.0; /** Número de puntos que queremos dibujar */ private Point2D [] puntos = new Point2D[500]; }