Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > un circulo que no sea un cuadrado...

muy buenas, quiero poder hacer un cirulo en java, he usado el codigo fillOval pero me encuentro con que aunque se vea un circulo en realidad es un cuadrado, las esquinas de ese cuadrado(que son invisibles) cuentan a la hora de hacer colisiones y demás (si pongo dos pelotas y chocan en diagonal se ve claramente como cuenta como colision aunque aún haya distancia entre ellas). me gustaría saber como hacer un circulo completo, si alguien me ayuda estaré muy agradecido

noviembre 27, 2014 | Unregistered Commenterdr4

Saludos cordiales.
Talvez provaste con Graphics2D y graficas la elipse
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
int x = 5;
int y = 7;


g2.draw(new Ellipse2D.Double(x, y, 200, 200));

}

.Dejanos saber si esto te funciona

noviembre 28, 2014 | Unregistered CommenterDavid

Para dibujar polígono usa

drawPolygon

Este codigo te sirve para crear los polígonos y saber si se interceptan

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));
}

// Granulidada es la cantidad de puntos que tendra la elipce
public Polygon getElipce(int xCentro, int yCentro, int longitudEjeX, int longitudEjeY, int granulidad) {

int xPoints[];
int yPoints[];

xPoints = new int[granulidad];
yPoints = new int[granulidad];

for (int i = 0; i < xPoints.length; i++) {
xPoints[i] = (int) getX(xCentro, longitudEjeX, i * ((2 * Math.PI) / granulidad));
yPoints[i] = (int) getY(yCentro, longitudEjeY, i * ((2 * Math.PI) / granulidad));
}

return new Polygon(xPoints, yPoints, xPoints.length);
}

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;
}

diciembre 3, 2014 | Unregistered Commenternelsonxx1

gracias a los dos por contestar,no tengo problemas para dibujar el circulo, mi problema viene con la colisión.


intenté hacer el polígono pero no fui capaz, nunca he hecho ninguno así que es seguro que estoy haciendo algo mal,pero mirando el código ya veo que no pones el paint por ninguna parte para que lo dibuje, he intentado encajarlo yo pero nada, obviamente no es tan sencillo como dibujar un circulo.

conseguí hacer que colisionaran 2 círculos usando sus radios, pero no consigo que un circulo colisione con un rectángulo, la distancia del centro de un rectángulo cambia según el lado.

diciembre 12, 2014 | Unregistered Commenterdr4