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

La actualidad más candente

Gráficos en matlab eda
Gráficos en matlab edaGráficos en matlab eda
Gráficos en matlab eda
Jhonny Rosas
 
Imagen e histograma
Imagen e histogramaImagen e histograma
Imagen e histograma
Omar Sanchez
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
Sam Chimborazo
 
Clase 3 (1)
Clase 3 (1)Clase 3 (1)
Clase 3 (1)
esvin Rey
 
Matlab 2 Capitulo 6
Matlab 2 Capitulo 6Matlab 2 Capitulo 6
Matlab 2 Capitulo 6
guest4f4d78d
 
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 Espacial
Omar Sanchez
 
Graficas en matlab
Graficas  en matlabGraficas  en matlab
Graficas en matlab
Alexandrius Venegas
 
Gráficos en matlab
Gráficos en matlabGráficos en matlab
Gráficos en matlab
Alex Carrasco
 
Plots
PlotsPlots
Gráficas en matlab
Gráficas en matlabGráficas en matlab
Gráficas en matlab
Faraón Zurita
 
Graficas 2D y 3D
Graficas 2D y 3DGraficas 2D y 3D
Graficas 2D y 3D
Edu Morán
 
Funciones y gráficas en matlab
Funciones y gráficas en matlabFunciones y gráficas en matlab
Funciones y gráficas en matlab
Juan Luis Diaz Cuevas
 
Graficos matlab
Graficos matlabGraficos matlab
Graficos matlab
Denise Cris
 
Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlab
Marc Llanos
 
Balas
BalasBalas
Balas
erik jivan
 
Guia rapida processing
Guia rapida processingGuia rapida processing
Guia rapida processing
cordltx
 
Matlab graficas
Matlab graficasMatlab graficas
Matlab graficas
Jhony Tacuri
 
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
Juan Ete
 
Segmentación de imagenes
Segmentación de imagenesSegmentación de imagenes
Segmentación de imagenes
Omar 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

เมื่อข้อมูลเปลี่ยนโลกการแข่งขัน The new deal on data
เมื่อข้อมูลเปลี่ยนโลกการแข่งขัน The new deal on data เมื่อข้อมูลเปลี่ยนโลกการแข่งขัน The new deal on data
เมื่อข้อมูลเปลี่ยนโลกการแข่งขัน The new deal on data
maruay songtanin
 
Altea, Presentazione Business Unit Microsoft
Altea, Presentazione Business Unit MicrosoftAltea, Presentazione Business Unit Microsoft
Altea, Presentazione Business Unit Microsoft
Altea 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 struktural
Nandang Sukmara
 
여보세요견본원본한국어Korean
여보세요견본원본한국어Korean여보세요견본원본한국어Korean
여보세요견본원본한국어KoreanQuickoffice Test
 
Экзит-пол, ОФ "Стратегия"
Экзит-пол, ОФ "Стратегия"Экзит-пол, ОФ "Стратегия"
Экзит-пол, ОФ "Стратегия"
DPR
 
sample_ppt
sample_pptsample_ppt
sample_ppt
Quickoffice Test
 
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
Electro World Türkiye
 
IED.Oral Speaking
IED.Oral SpeakingIED.Oral Speaking
IED.Oral Speaking
Janaína Mendes Laureano
 
~$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 daerah
Nandang 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 terbuka
Nandang 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 data เมื่อข้อมูลเปลี่ยนโลกการแข่งขัน The 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

Interpolaion c++
Interpolaion c++Interpolaion c++
Interpolaion c++
Jean Paul IA
 
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
Benjamín Joaquín Martínez
 
Lecture 37
Lecture 37Lecture 37
EL PODER DE SYMPY.docx
EL PODER DE SYMPY.docxEL PODER DE SYMPY.docx
EL PODER DE SYMPY.docx
ssuserd2a0fa
 
EL PODER DE SYMPY.docx
EL PODER DE SYMPY.docxEL PODER DE SYMPY.docx
EL PODER DE SYMPY.docx
ssuserd2a0fa
 
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
intelligenia S.L.
 
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
UTP, TA
 
Punteros2
Punteros2Punteros2
Renderización en java
Renderización en javaRenderización en java
Renderización en java
aleja0940
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
Sam Chimborazo
 
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
johnny herrera
 
Presentacion Fractales
Presentacion FractalesPresentacion Fractales
Presentacion Fractales
patriciarevuelta
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
Gladys Coromoto Vergel Rivera
 
Máxima ejercicio
Máxima ejercicioMáxima ejercicio
Máxima ejercicio
natysarda
 
clase 7 GRAFICOS 2D.pdf
clase 7 GRAFICOS 2D.pdfclase 7 GRAFICOS 2D.pdf
clase 7 GRAFICOS 2D.pdf
NandoMartiHufer
 
Java modografico
Java modograficoJava modografico
Java modografico
Abigail Ahumada Hernandez
 
Aejemplosc
AejemploscAejemplosc
Aejemplosc
Lily- XztrzitA-
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
Carlos
 
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
Yulyana López
 

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