/* * 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