import java.awt.*; import java.awt.geom.*; import java.lang.Math; public class Circulo extends Forma { Circulo (Point center, double radio ) { elipse = new Ellipse2D.Double(center.getX()-radio, center.getY(), 2*radio, 2*radio); } public void paintComponent(Graphics2D g2d) { g2d.draw(elipse); } public void setRadio(double r) { double centerX=elipse.getX()+elipse.getWidth()/2; double centerY=elipse.getY()+elipse.getHeight()/2; elipse.setFrame(centerX-r, centerY-r, 2*r, 2*r); } public void escalar (Point c, double factor) { double x=elipse.getX(); double y=elipse.getY(); x = c.getX()+factor*(x-c.getX()); y = c.getY()+factor*(y-c.getY()); double diameter=elipse.getWidth()*factor; elipse.setFrame(x, y, diameter, diameter); } public void rotar (Point c, double deltaAngulo) { double centerX=elipse.getX()+elipse.getWidth()/2 - c.getX(); double centerY=elipse.getY()+elipse.getHeight()/2 - c.getY(); double distancia = Math.sqrt(centerX*centerX+centerY*centerY); double anguloInicial=Math.atan2(centerY, centerX); centerX = distancia*Math.cos(anguloInicial+deltaAngulo) + c.getX(); centerY = distancia*Math.sin(anguloInicial+deltaAngulo) + c.getY(); double diameter=elipse.getWidth(); elipse.setFrame(centerX-diameter/2, centerY-diameter/2, diameter, diameter); } public void trasladar (double dx, double dy) { double x=elipse.getX()+dx; double y=elipse.getY()+dy; double diameter=elipse.getWidth(); elipse.setFrame(x, y, diameter, diameter); } private Ellipse2D.Double elipse; }