ちょっと簡単なプログラムを書いていて、衝突検出に円を使用する必要がある場所に出くわしました。しかし、私の知る限り、.intersects(Point p) メソッドを持つ Rectangle クラスしかありません。同じように使える円のようなものはありますか?
3 に答える
探しているように見えるいくつかのメソッドがあるため、使用できるパッケージで呼び出さEllipse2D
れるクラスがあります。java.awt.geom
高さと幅が等しい楕円は円です。
のオーバーロードの 1 つをcontains
使用すると、円と点の衝突をテストできます。
boolean contains(double x, double y)
Shape
内部性の定義で説明されているように、指定された座標が の境界内にあるかどうかをテストします 。
別の関数を呼び出すとintersects
、円と長方形の衝突をテストできます。
boolean intersects(double x, double y, double w, double h)
Shape
の内部が指定された長方形領域の内部と交差するかどうかをテストします。
Ellipse2D
は抽象クラスであることに注意してください。ネストされたサブクラスの 1 つEllipse2D.Double
またはEllipse2D.Float
を使用します。唯一の違いは、ディメンションの格納に使用されるデータ型です。
ellipse2D があります。これは、正方形が長方形で、円が楕円であるのと同じです。
http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html
java.awt.Shape も。およびそれを実装するすべてのクラス: Arc2D、Arc2D.Double、Arc2D.Float、Area、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