14

ちょっと簡単なプログラムを書いていて、衝突検出に円を使用する必要がある場所に出くわしました。しかし、私の知る限り、.intersects(Point p) メソッドを持つ Rectangle クラスしかありません。同じように使える円のようなものはありますか?

4

3 に答える 3

18

探しているように見えるいくつかのメソッドがあるため、使用できるパッケージで呼び出さ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を使用します。唯一の違いは、ディメンションの格納に使用されるデータ型です。

于 2012-12-02T22:08:49.810 に答える
1

ellipse2D があります。これは、正方形が長方形で、円が楕円であるのと同じです。

http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html

于 2012-12-02T22:08:31.253 に答える
1

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

于 2012-12-02T22:08:35.957 に答える