web-dev-qa-db-fra.com

Y a-t-il une classe cercle en Java comme la classe Rectangle

Hey, j’étais en train d’écrire un programme rapide et quelque chose m’a amené à utiliser un cercle pour détecter les collisions. Mais pour autant que je sache, seule la classe Rectangle possède la méthode .intersects (Point p). Y a-t-il quelque chose comme un cercle que je pourrais utiliser de la même manière?

14
user1871085

Il existe une classe appelée Ellipse2D dans le package Java.awt.geom que vous pouvez utiliser, car certaines méthodes semblent correspondre à ce que vous recherchez. Une ellipse de largeur égale à sa hauteur est un cercle.

Une des surcharges de contains vous permet de tester les collisions cercle-point:

boolean contains(double x, double y) 

Teste si les coordonnées spécifiées sont à l'intérieur de la limite de Shape, comme décrit dans la définition d'insideness.

Une autre fonction appelée intersects vous permet de tester les collisions cercle-rectangle:

boolean intersects(double x, double y, double w, double h)

Teste si l'intérieur de la Shape intersecte l'intérieur d'une zone rectangulaire spécifiée.

Notez que Ellipse2D est une classe abstraite; vous utiliseriez l'une de ses sous-classes imbriquées Ellipse2D.Double ou Ellipse2D.Float, la seule différence étant le type de données utilisé pour stocker les dimensions.

17
In silico

Il y a une ellipse2D, de la même manière qu'un carré est un rectangle, qu'un cercle est une ellipse.

http://docs.Oracle.com/javase/7/docs/api/Java/awt/geom/Ellipse2D.html

1
ThePerson

Java.awt.Shape aussi. et toute la classe qui l'implémente: Arc2D, Arc2D.Double, Arc2D.Float, Area, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float, DefaultCaret, Ellipse2D , Ellipse2D. Float, GeneralPath, Line2D, Line2D.Double, Line2D.Float, Path2D, Path2D.Double, Path2D.Float, Polygon, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float

1
Aubin