Foro sobre Java SE > MouseEvent en area circular
Calculas la distancia entre la posición del ratón y el centro del círculo, y compruebas si es menor o mayor que el radio del mismo. Así sabes si el ratón está dentro o no.
Gracias por la respuesta choces, pero me podrías orientar un poco... como lo hago eso?
Es un problema simple de trigonometría: se trata de calcular la hipotenusa de un triángulo rectángulo.
El punto del ratón tendrá unas coordenadas x1, y1 mientras que el centro del círculo x2, y2
Los catetos del triángulo serán las diferencias entre esas coordenadas, luego la distancia será la hipotenusa del mismo.
Gracias choces, lo probaré
Un saludo
Usa el metodo contains de esta clase
public class Elipce extends Polygon {
private double X;
private double Y;
private double logintudEjeX;
private double longitudEjeY;
private int granulidad;
public Elipce(double X, double Y, double logintudEjeX, double longitudEjeY, int granulidad) {
super();
this.X = X;
this.Y = Y;
this.logintudEjeX = logintudEjeX;
this.longitudEjeY = longitudEjeY;
this.granulidad = granulidad;
calcularPuntos();
}
private void calcularPuntos(){
int[] xPoints = new int[granulidad];
int[] yPoints = new int[granulidad];
for (int i = 0; i < xPoints.length; i++) {
xPoints[i] = (int) getX(X, longitudEjeY, i * ((2 * Math.PI) / granulidad));
yPoints[i] = (int) getY(Y, longitudEjeY, i * ((2 * Math.PI) / granulidad));
}
}
private double getX(double xCentro, double semiEje, double angulo) {
return (xCentro + semiEje * Math.cos(angulo));
}
private double getY(double yCentro, double semiEje, double angulo) {
return (yCentro + semiEje * Math.sin(angulo));
}
public boolean intersect(Polygon elipce1, Polygon elipce2) {
for (int i = 0; i < elipce1.npoints; i++) {
if (elipce2.contains(elipce1.xpoints[i], elipce1.ypoints[i])) {
return true;
}
}
return false;
}
}
Ejemplo de uso
Elipce e=new Elipce(XCirculo, YCirculo, ancho, alto, numeroPuntosPoligono);
if(e.contains(xRaton,yRaton)){
//// Contiene
}else{
// No contiene
}
Hola a todos.
Mi pregunta es ¿Como puedo hacer para que java me detecte un área circular para cuando tenga el ratón encima me cree un evento?
Gracias.