SlideShare una empresa de Scribd logo
1 de 2
/*
 * 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

La actualidad más candente

Gráficos en matlab eda
Gráficos en matlab edaGráficos en matlab eda
Gráficos en matlab edaJhonny Rosas
 
Imagen e histograma
Imagen e histogramaImagen e histograma
Imagen e histogramaOmar Sanchez
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlabSam Chimborazo
 
Matlab 2 Capitulo 6
Matlab 2 Capitulo 6Matlab 2 Capitulo 6
Matlab 2 Capitulo 6guest4f4d78d
 
gráficas 2D y 3D (José Ponce)
gráficas 2D y 3D (José  Ponce)gráficas 2D y 3D (José  Ponce)
gráficas 2D y 3D (José Ponce)José Ponce
 
Imagen Filtrado Espacial
Imagen Filtrado EspacialImagen Filtrado Espacial
Imagen Filtrado EspacialOmar Sanchez
 
Graficas 2D y 3D
Graficas 2D y 3DGraficas 2D y 3D
Graficas 2D y 3DEdu Morán
 
Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlabMarc Llanos
 
Guia rapida processing
Guia rapida processingGuia rapida processing
Guia rapida processingcordltx
 
Graficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabGraficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabJuan Ete
 
Segmentación de imagenes
Segmentación de imagenesSegmentación de imagenes
Segmentación de imagenesOmar Sanchez
 

La actualidad más candente (20)

Gráficos en matlab eda
Gráficos en matlab edaGráficos en matlab eda
Gráficos en matlab eda
 
Imagen e histograma
Imagen e histogramaImagen e histograma
Imagen e histograma
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
 
Clase 3 (1)
Clase 3 (1)Clase 3 (1)
Clase 3 (1)
 
Matlab 2 Capitulo 6
Matlab 2 Capitulo 6Matlab 2 Capitulo 6
Matlab 2 Capitulo 6
 
gráficas 2D y 3D (José Ponce)
gráficas 2D y 3D (José  Ponce)gráficas 2D y 3D (José  Ponce)
gráficas 2D y 3D (José Ponce)
 
Imagen Filtrado Espacial
Imagen Filtrado EspacialImagen Filtrado Espacial
Imagen Filtrado Espacial
 
Graficas en matlab
Graficas  en matlabGraficas  en matlab
Graficas en matlab
 
Gráficos en matlab
Gráficos en matlabGráficos en matlab
Gráficos en matlab
 
Plots
PlotsPlots
Plots
 
Gráficas en matlab
Gráficas en matlabGráficas en matlab
Gráficas en matlab
 
Graficas 2D y 3D
Graficas 2D y 3DGraficas 2D y 3D
Graficas 2D y 3D
 
Funciones y gráficas en matlab
Funciones y gráficas en matlabFunciones y gráficas en matlab
Funciones y gráficas en matlab
 
Graficos matlab
Graficos matlabGraficos matlab
Graficos matlab
 
Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlab
 
Balas
BalasBalas
Balas
 
Guia rapida processing
Guia rapida processingGuia rapida processing
Guia rapida processing
 
Matlab graficas
Matlab graficasMatlab graficas
Matlab graficas
 
Graficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabGraficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlab
 
Segmentación de imagenes
Segmentación de imagenesSegmentación de imagenes
Segmentación de imagenes
 

Destacado

Altea, Presentazione Business Unit Microsoft
Altea, Presentazione Business Unit MicrosoftAltea, Presentazione Business Unit Microsoft
Altea, Presentazione Business Unit MicrosoftAltea SpA
 
Pp2002 13 ttg pengangkatan pns dalam jabatn struktural
Pp2002 13 ttg pengangkatan pns dalam jabatn strukturalPp2002 13 ttg pengangkatan pns dalam jabatn struktural
Pp2002 13 ttg pengangkatan pns dalam jabatn strukturalNandang Sukmara
 
여보세요견본원본한국어Korean
여보세요견본원본한국어Korean여보세요견본원본한국어Korean
여보세요견본원본한국어KoreanQuickoffice Test
 
Экзит-пол, ОФ "Стратегия"
Экзит-пол, ОФ "Стратегия"Экзит-пол, ОФ "Стратегия"
Экзит-пол, ОФ "Стратегия"DPR
 
Fiyatlar Kırılıyor, Herkesin Yüzü Gülüyor
Fiyatlar Kırılıyor, Herkesin Yüzü GülüyorFiyatlar Kırılıyor, Herkesin Yüzü Gülüyor
Fiyatlar Kırılıyor, Herkesin Yüzü GülüyorElectro World Türkiye
 
~$Mputer programming ii c
~$Mputer programming ii   c  ~$Mputer programming ii   c
~$Mputer programming ii c jovain
 
2011年上半年中国公司美国ipo研究报告
2011年上半年中国公司美国ipo研究报告2011年上半年中国公司美国ipo研究报告
2011年上半年中国公司美国ipo研究报告武挥 魏
 
ใครพิการกันแน่
ใครพิการกันแน่ใครพิการกันแน่
ใครพิการกันแน่taweesak supanan
 
Permendagri no. 13 thn 2006 pedoman pengelolaan keuangan daerah
Permendagri no. 13 thn 2006   pedoman pengelolaan keuangan daerahPermendagri no. 13 thn 2006   pedoman pengelolaan keuangan daerah
Permendagri no. 13 thn 2006 pedoman pengelolaan keuangan daerahNandang Sukmara
 
Buku 5 panduan lomba motivasi belajar mandiri (lomojari) siswa smp terbuka
Buku 5 panduan lomba motivasi belajar mandiri (lomojari) siswa smp terbukaBuku 5 panduan lomba motivasi belajar mandiri (lomojari) siswa smp terbuka
Buku 5 panduan lomba motivasi belajar mandiri (lomojari) siswa smp terbukaNandang Sukmara
 
Newslide1
Newslide1Newslide1
Newslide1SWK6
 
Nuevo documento de microsoft word
Nuevo documento de microsoft wordNuevo documento de microsoft word
Nuevo documento de microsoft wordyesiyes
 

Destacado (20)

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

Similar a Lienzo.java

Similar a Lienzo.java (20)

Interpolaion c++
Interpolaion c++Interpolaion c++
Interpolaion c++
 
Inicialización del modo gráfico de C
Inicialización del modo gráfico de CInicialización del modo gráfico de C
Inicialización del modo gráfico de C
 
Lecture 37
Lecture 37Lecture 37
Lecture 37
 
EL PODER DE SYMPY.docx
EL PODER DE SYMPY.docxEL PODER DE SYMPY.docx
EL PODER DE SYMPY.docx
 
EL PODER DE SYMPY.docx
EL PODER DE SYMPY.docxEL PODER DE SYMPY.docx
EL PODER DE SYMPY.docx
 
Introducción al elemento canvas de HTML5
Introducción al elemento canvas de HTML5Introducción al elemento canvas de HTML5
Introducción al elemento canvas de HTML5
 
Vb Ii, Unidad Iv MéTodos Graficos
Vb Ii, Unidad Iv MéTodos GraficosVb Ii, Unidad Iv MéTodos Graficos
Vb Ii, Unidad Iv MéTodos Graficos
 
Punteros2
Punteros2Punteros2
Punteros2
 
Renderización en java
Renderización en javaRenderización en java
Renderización en java
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
 
Graficos de Funciones en Visual Basic subido JHS
Graficos de Funciones en Visual Basic subido JHSGraficos de Funciones en Visual Basic subido JHS
Graficos de Funciones en Visual Basic subido JHS
 
Presentacion Fractales
Presentacion FractalesPresentacion Fractales
Presentacion Fractales
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Máxima ejercicio
Máxima ejercicioMáxima ejercicio
Máxima ejercicio
 
clase 7 GRAFICOS 2D.pdf
clase 7 GRAFICOS 2D.pdfclase 7 GRAFICOS 2D.pdf
clase 7 GRAFICOS 2D.pdf
 
Java modografico
Java modograficoJava modografico
Java modografico
 
Aejemplosc
AejemploscAejemplosc
Aejemplosc
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
Soluciones segunda semana: Estructura del lenguaje de programación C++, SENA
Soluciones segunda semana: Estructura del lenguaje de programación C++, SENASoluciones segunda semana: Estructura del lenguaje de programación C++, SENA
Soluciones segunda semana: Estructura del lenguaje de programación C++, SENA
 
Suma de funciones
Suma de funcionesSuma de funciones
Suma de funciones
 

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]; }