Hey, ich habe gerade ein schnelles Programm geschrieben und da ist etwas passiert, wo ich einen Kreis für die Kollisionserkennung brauche. Aber soweit ich weiß, gibt es nur die Rectangle-Klasse, die die .interseects (Point p) -Methode hat. Gibt es so etwas wie einen Kreis, den ich genauso benutzen könnte?Gibt es in Java eine Kreisklasse wie die Rectangle-Klasse?
Antwort
Es gibt eine Klasse namens Ellipse2D
in der java.awt.geom
Paket, das Sie verwenden können, da es einige Methoden hat, die zu sein scheinen, was Sie suchen. Eine Ellipse mit einer Breite gleich ihrer Höhe ist ein Kreis.
Einer der Überlastungen für contains
können Sie für Kreis-Punkt-Kollisionen testen:
boolean contains(double x, double y)
Tests, wenn die angegebenen Koordinaten innerhalb der Grenze des sind
Shape
, wie sie in der Definition von Innenhaftigkeit beschrieben .
Eine weitere Funktion namens intersects
Sie Kreis-Rechteck Kollisionen testen können:
boolean intersects(double x, double y, double w, double h)
Prüft, ob das Innere des
Shape
das Innere eines bestimmten rechteckigen Bereich schneidet.
Beachten Sie, dass Ellipse2D
eine abstrakte Klasse ist; Sie würden eine der geschachtelten Unterklassen Ellipse2D.Double
oder Ellipse2D.Float
verwenden. Der einzige Unterschied ist der Datentyp, der zum Speichern der Dimensionen verwendet wird.
+1, aber die geeignetere Methode für den Schnittpunkt ist 'enthält (double x, double y)'. – Vulcan
Perfekt, vielen Dank – user1871085
Es gibt eine ellipse2D, das ist in der gleichen Weise, dass ein Quadrat ein Rechteck ist, ein Kreis eine Ellipse ist.
http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html
Leite deinen Link zur Java 7 API um Ich werde dich abstimmen (Java 1.4 ist fast 10 Jahre alt: P) – MadProgrammer
Ahh vielen Dank. Ich werde das hier ausprobieren. – user1871085
Aktualisiert wie angefordert. – ThePerson
java.awt.Shape too. und alle die Klasse, die es implementiert: Arc2D, Arc2D.Double, Arc2D.Float, Fläche, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float, DefaultCaret, Ellipse2D, Ellipse2D. Double, Ellipse2D.Float, GeneralPath, Line2D, Line2D.Double, Line2D.Float, Path2D, Path2D.Double, Path2D.Float, Polygon, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle2D, Rectangle2D.Double, Rectangle2D. Float, RectangularShape, RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float
- 1. Erstellen einer Kreisklasse in Java mit Point Center?
- 2. Java: Gibt es eine Kartenfunktion?
- 3. Java - gibt es eine "Unterklasse" wie Instanz?
- 4. Gibt es in Java eine eval() - Funktion?
- 5. gibt es eine Funktion in Java, die von c
- 6. Gibt es eine CPU, die Java in Mikrocode ausführt?
- 7. Gibt es eine Java-Klasse, die eine POM.xml-Datei generiert?
- 8. Gibt es eine File.AppendAllText() in Java?
- 9. Gibt es eine Berichtsengine in NodeJS (wie JasperReport in Java)?
- 10. Gibt es in PHP eine __equals-Methode wie in Java?
- 11. Gibt es eine Java-Funktion, die ausgelassene Zeichen analysiert?
- 12. Gibt es eine Datenbankmodellierungsbibliothek für Java?
- 13. Gibt es etwas wie RhinoMocks in Java?
- 14. Gibt es eine Uhrzeitsynchronisierungslösung für Java?
- 15. Java Posix IPC Gibt es eine API?
- 16. Gibt es eine Möglichkeit, ich die ganze JSONObject entleeren - java
- 17. Gibt es eine Java Annotation für Bugs?
- 18. Feiertage - gibt es eine Java-Implementierung?
- 19. Gibt es eine Java-Bibliothek für die Domain-Suche?
- 20. Gibt es eine Java-Bibliothek für die Erstellung von Thumbnails?
- 21. Gibt es eine Java-Bibliothek für die Zugriffskontrollliste?
- 22. Gibt es eine ausgeklügelte Java WorkQueue API?
- 23. Gibt es eine COM-Bibliothek für Java, die gut funktioniert?
- 24. Gibt es eine Java-Methode, die Konventionen festlegt?
- 25. Gibt es eine eigenständige Java-Bibliothek, die LDAP-Syntaxanalyse bietet?
- 26. Gibt es eine Online-IDE für Java?
- 27. Gibt es eine Namenskonvention für Keystore (Java)
- 28. Java: Gibt es eine Methode in JTextPane, die das Gleiche wie append() in JTextArea tut?
- 29. Gibt es eine konsistente (monotone) Clock-Implementierung in Java?
- 30. Gibt es einen Java-Parser für die Java-Sprache?
Nicht, dass ich weiß. – duffymo
Sie können [Eclipse2D] (http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html) verwenden, das 'enthält (x, y)'. – Vulcan
Ja, ich dachte neulich, dass Oracle uns allen einen schlechten Dienst erwiesen hätte, indem wir keine Dodekaeder-Klasse in die Standard-Bibliotheken aufgenommen hätten :-) – paxdiablo