52 lines
1.2 KiB
Java
52 lines
1.2 KiB
Java
import java.awt.Color;
|
|
import java.awt.Graphics2D;
|
|
import java.awt.geom.Ellipse2D;
|
|
|
|
public class Circle {
|
|
private int x;
|
|
private int y;
|
|
private double raggio;
|
|
|
|
public Circle(int x, int y, double raggio) {
|
|
this.x = x;
|
|
this.y = y;
|
|
this.raggio = raggio;
|
|
}
|
|
|
|
public double getRaggio() {
|
|
return raggio;
|
|
}
|
|
|
|
public int getX() {
|
|
return x;
|
|
}
|
|
|
|
public int getY() {
|
|
return y;
|
|
}
|
|
|
|
public boolean intersects(Circle other) {
|
|
return (distanza(x, y, other.getX(), other.getY()) <= (raggio + other.getRaggio()));
|
|
}
|
|
|
|
private static double distanza(int xa, int ya, int xb, int yb) {
|
|
double dx, dy;
|
|
dx = xa - xb;
|
|
dy = ya - yb;
|
|
return Math.sqrt(dx*dx + dy*dy);
|
|
}
|
|
|
|
public void drawCircle(Graphics2D g2, Circle other) {
|
|
Ellipse2D.Double cerchio1 = new Ellipse2D.Double(x - raggio, y - raggio, raggio*2, raggio*2);
|
|
Ellipse2D.Double cerchio2 = new Ellipse2D.Double(other.getX() - other.getRaggio(), other.getY() - other.getRaggio(), other.getRaggio()*2, other.getRaggio()*2);
|
|
if(this.intersects(other)) {
|
|
g2.setColor(Color.RED);
|
|
g2.fill(cerchio1);
|
|
g2.fill(cerchio2);
|
|
} else {
|
|
g2.setColor(Color.GREEN);
|
|
g2.fill(cerchio1);
|
|
g2.fill(cerchio2);
|
|
}
|
|
}
|
|
} |