/** Sub clase Circulo * @author Nicolas Montoya - Eduardo Toro */ import java.awt.*; import java.lang.Math.*; public class Circulo extends Forma { /** * Radio del Circulo */ private double radio; /** * Punto central */ private Point c; /** * Constructor. Inicializa un nuevo Circulo * @param radio Radio del Circulo */ public Circulo(double radio) { this.radio = radio; c = new Point(); } // definicion de metodos public void escalar(Point centro, double factor){ c.setLocation(centro.getX()*(1-factor)+factor*c.getX(), centro.getY()*(1-factor)+factor*c.getY()); this.radio=this.radio*factor; } public void rotar(Point centro, double deltaAngulo){ double k; double theta = Math.atan((c.getY()-centro.getY())/(c.getX()-centro.getX())); if ((c.getX()-centro.getX())>0) k = 0; else k = 1; if (!(c.equals(centro))){ double d = Math.hypot((c.getX()-centro.getX()),(c.getY()-centro.getY())); c.setLocation(d*Math.cos(theta + Math.PI*k + deltaAngulo)+centro.getX(), d*Math.sin(theta + Math.PI*k + deltaAngulo)+centro.getY()); } } public void trasladar(double deltaX, double deltaY){ c.setLocation(c.getX() + deltaX, c.getY() + deltaY); } /** Compara contenidos @param otherObject otro objeto Forma @return true si el contenido de las formas son iguales y un false si no lo son */ public boolean equals(Object otherObject) { // un test rapido para ver si los objetos son identicos if (this == otherObject) return true; // debe retornar NULL si el parametro explicito es nulo if (otherObject == null) return false; // si no son de la misma clase no pueden ser iguales if (getClass() != otherObject.getClass()) return false; // ahora sabemos que el oterObjet es non-null Circulo Circulo other = (Circulo)otherObject; return c.equals(other.c) && radio == other.radio; } /** Clona un Circulo @return la referencia de un Circulo clonado */ public Circulo clone(){ Circulo cir = new Circulo(this.radio); cir.c.setLocation(this.c.getX(), this.c.getY()); return cir; } /** Imprime los atributos del Circulo @return los atributos del Circulo */ public String toString() { return "Este es un Circulo: Centro("+ c.getX()+ "," + c.getY()+ "); Radio=" + this.radio + "." ; } } // fin de la clase Circulo