public interface Shape
Shapeインタフェースは、何らかの形式の幾何学的な形状を表すオブジェクトの定義を提供します。 Shapeは、Shapeの輪郭と、輪郭がどのように2D平面を内部領域の点と外部領域の点とに分割するかを決めるルールを表すことができるPathIteratorオブジェクトによって記述されます。 各Shapeオブジェクトは、幾何学的図形のバウンディング・ボックスを取得したり、点または矩形の一部または全体がShapeの内部領域内にあるかどうかを判定したり、Shapeの輪郭の軌道輪郭線を記述するPathIteratorオブジェクトを取得したりするためのコールバックを提供します。
内側の定義:点は、次のような場合にだけShapeの内側にあると見なされます。
Shapeの境界の完全に内側にある場合
Shapeの境界線上に位置し、かつ、その点に隣接する、X軸方向のプラス側にあるスペースが完全に境界内に収まる場合
Y軸方向のプラス側にあるスペースが境界内に収まる場合。
containsとintersectsメソッドは、Shapeの内部が塗りつぶされているかのように閉じられた領域と見なします。 つまり、形状が矩形を含んでいるか、矩形と交差しているか、あるいは形状が点を含んでいるかを判定するために、これらのメソッドが、閉じられていない形状を閉じられているものと暗黙的に見なすことを意味します。
PathIterator, AffineTransform, FlatteningPathIterator, GeneralPath| 修飾子と型 | メソッド | 説明 |
|---|---|---|
boolean |
contains(double x, double y) |
指定された座標が、内側の定義によって記述された
Shapeの境界の内側にあるかどうかをテストします。 |
boolean |
contains(double x, double y, double w, double h) |
Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。 |
boolean |
contains(Point2D p) |
|
boolean |
contains(Rectangle2D r) |
Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。 |
Rectangle |
getBounds() |
Shapeを完全に囲む整数のRectangleを返します。 |
Rectangle2D |
getBounds2D() |
高精度で、かつ
getBoundsメソッドより正確なShapeのバウンディング・ボックスを返します。 |
PathIterator |
getPathIterator(AffineTransform at) |
Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness) |
Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータ・オブジェクトを返します。 |
boolean |
intersects(double x, double y, double w, double h) |
Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。 |
boolean |
intersects(Rectangle2D r) |
Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。 |
Rectangle getBounds()
Shapeを完全に囲む整数のRectangleを返します。 返されたRectangleがShapeを囲む最小のバウンディング・ボックスであるとは限りません。示されたRectangle内にShapeが完全に収まるというだけです。 また、Shapeが整数型の制限範囲を超える場合、返されたRectangleはShapeを完全に囲むことができないこともあります。 通常は、getBounds2Dメソッドの方が、表現の自由度が高いために、比較的ぴったりしたバウンディング・ボックスを返します。
内側の定義によって、shapeの定義する輪郭上の点が、返されたboundsオブジェクトに含まれていると見なされない状況が発生する場合があることに注意してください。ただし、これは、これらの点が元のshapeにも含まれていないと見なされる場合のみです。
pointがcontains(point)メソッドに従ってshapeの内側にある場合は、boundsのcontains(point)メソッドに従って、返されたRectangle境界オブジェクトの内側にある必要があります。 具体的には、次のようになります。
shape.contains(x,y)にはbounds.contains(x,y)が必要
pointがshapeの内側にない場合は、引き続きboundsオブジェクトに含まれている可能性があります。
bounds.contains(x,y)はshape.contains(x,y)を示さない
Shapeを完全に囲む整数型のRectangle。getBounds2D()Rectangle2D getBounds2D()
getBoundsメソッドより正確なShapeのバウンディング・ボックスを返します。 返されたRectangle2Dが、Shapeを囲む最小のバウンディング・ボックスであるという保証はありません。Shapeが、示されたRectangle2D内に完全に含まれるだけです。 戻り値を、倍精度値を使用して寸法を格納するRectangle2Dのインスタンスにすることができるため、このメソッドによって返されたバウンディング・ボックスは通常、getBoundsメソッドによって返されたものより厳密であり、オーバーフローの問題のために失敗することはありません。
内側の定義によって、shapeの定義する輪郭上の点が、返されたboundsオブジェクトに含まれていると見なされない状況が発生する場合があることに注意してください。ただし、これは、これらの点が元のshapeにも含まれていないと見なされる場合のみです。
pointがcontains(point)メソッドに従ってshapeの内側にある場合は、boundsのcontains(point)メソッドに従って、返されたRectangle2D境界オブジェクトの内側にある必要があります。 具体的には、次のようになります。
shape.contains(p)にはbounds.contains(p)が必要
pointがshapeの内側にない場合は、引き続きboundsオブジェクトに含まれている可能性があります。
bounds.contains(p)はshape.contains(p)を示さない
Shapeの高精度のバウンディング・ボックスであるRectangle2Dのインスタンス。getBounds()boolean contains(double x,
double y)
Shapeの境界の内側にあるかどうかをテストします。x - テストされる指定されたX座標y - テストされる指定されたY座標Shape境界の内側にある場合はtrue、それ以外の場合はfalse。boolean contains(Point2D p)
p - テストされる指定されたPoint2DPoint2DがShapeの境界の内側にある場合はtrue、それ以外の場合はfalse。boolean intersects(double x,
double y,
double w,
double h)
Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。 Shapeの内部と指定された矩形領域の両方に含まれている点が存在する場合、その矩形領域はShapeと交差していると見なされます。
Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
Shapeが交差している可能性が高いが、
Shapesによっては、矩形領域がShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。 x - 指定された矩形領域の左上隅のX座標y - 指定された矩形領域の左上隅のY座標w - 指定された矩形領域の幅h - 指定された矩形領域の高さShapeの内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse。Areaboolean intersects(Rectangle2D r)
Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。 Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
Rectangle2DとShapeが交差している可能性が高いが、
Shapesによっては、Rectangle2DがShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。 r - 指定されたRectangle2DShapeの内部と指定されたRectangle2Dの内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse。intersects(double, double, double, double)boolean contains(double x,
double y,
double w,
double h)
Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。 矩形領域全体がShape内に含まれていると見なされるには、矩形領域の内側にあるすべての座標がShape内にある必要があります。
Shape.contains()メソッドを使用すると、次のような場合に、Shape実装は内部的にfalseを返すことができます。
intersectメソッドがtrueを返し、かつ
Shapeに矩形領域が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapesによっては、Shapeに矩形領域が含まれている場合でもこのメソッドがfalseを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。 x - 指定された矩形領域の左上隅のX座標y - 指定された矩形領域の左上隅のY座標w - 指定された矩形領域の幅h - 指定された矩形領域の高さShapeの内部に、指定された矩形領域が完全に含まれる場合はtrue、それ以外の場合、またはShapeに矩形領域が含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse。Area, intersects(double, double, double, double)boolean contains(Rectangle2D r)
Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。 Shape.contains()メソッドを使用すると、次のような場合に、Shape実装は内部的にfalseを返すことができます。
intersectメソッドがtrueを返し、かつ
ShapeにRectangle2Dが完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapesによっては、ShapeにRectangle2Dが含まれている場合でもこのメソッドがfalseを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。 r - 指定されたRectangle2DShapeの内部にRectangle2Dが完全に含まれる場合はtrue、それ以外の場合、またはShapeにRectangle2Dが含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse。contains(double, double, double, double)PathIterator getPathIterator(AffineTransform at)
Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 オプションのAffineTransformが指定されると、反復処理で返される座標がそれに応じて変換されます。
このメソッドを呼び出すたびに、同時に使用されているほかのすべてのPathIteratorオブジェクトとは無関係に、Shapeオブジェクトの幾何学的図形をトラバースする新しいPathIteratorオブジェクトが返されます。
Shapeインタフェースを実装するオブジェクトにより、進行中の反復が、このような反復中に発生する可能性のある元のオブジェクトの幾何学的図形へのどのような変更からも切り離されることを推奨しますが、これは保証されません。
at - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnullShapeの幾何学的図形を独立してトラバースする新しいPathIteratorオブジェクト。PathIterator getPathIterator(AffineTransform at, double flatness)
Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータ・オブジェクトを返します。
イテレータが返すのは、ポイント型SEG_MOVETO、SEG_LINETO、およびSEG_CLOSEだけです。
オプションのAffineTransformが指定されると、反復処理で返される座標がそれに応じて変換されます。
曲線セグメントの分割の量は、平坦化されない変換を受けた曲線上の点が、返される平坦化されたパス・セグメントからもっとも離れる距離を指定するflatnessパラメータによって制御されます。 平坦化された輪郭線の精度に対して予告なしに制限が加えられることがあり、この場合、非常に小さな平坦化パラメータが大きな値として扱われることがあります。 この制限は、使用される特定の実装によって決まります。
このメソッドを呼び出すたびに、同時に使用されているほかのすべてのPathIteratorオブジェクトとは無関係に、Shapeオブジェクトの幾何学的図形をトラバースする新しいPathIteratorオブジェクトが返されます。
Shapeインタフェースを実装するオブジェクトにより、進行中の反復が、このような反復中に発生する可能性のある元のオブジェクトの幾何学的図形へのどのような変更からも切り離されることを推奨しますが、これは保証されません。
at - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnullflatness - 曲線セグメントを近似するために使用されるライン・セグメントが、元の曲線上の任意の点から離れることができる最大の距離Shapeの幾何学的図形の平坦化されたビューを独立してトラバースする新しいPathIterator。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。