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?
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.
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
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