View Javadoc

1   /* file : Boundary2D.java
2    * 
3    * Project : geometry
4    *
5    * ===========================================
6    * 
7    * This library is free software; you can redistribute it and/or modify it 
8    * under the terms of the GNU Lesser General Public License as published by
9    * the Free Software Foundation, either version 2.1 of the License, or (at
10   * your option) any later version.
11   *
12   * This library is distributed in the hope that it will be useful, but 
13   * WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
14   * or FITNESS FOR A PARTICULAR PURPOSE.
15   *
16   * See the GNU Lesser General Public License for more details.
17   *
18   * You should have received a copy of the GNU Lesser General Public License
19   * along with this library. if not, write to :
20   * The Free Software Foundation, Inc., 59 Temple Place, Suite 330,
21   * Boston, MA 02111-1307, USA.
22   * 
23   * Created on 25 dec. 2006
24   *
25   */
26  
27  package math.geom2d.domain;
28  
29  import java.awt.Graphics2D;
30  import java.awt.geom.Point2D;
31  import java.util.ArrayList;
32  import java.util.Collection;
33  
34  import math.geom2d.AffineTransform2D;
35  import math.geom2d.Box2D;
36  import math.geom2d.curve.ContinuousCurve2D;
37  import math.geom2d.curve.Curve2D;
38  import math.geom2d.curve.CurveSet2D;
39  
40  /**
41   * A Boundary2D is the curve which defines the contour of a domain in the plane.
42   * It is compound of one or several non-intersecting and oriented curves.
43   * 
44   * @author dlegland
45   */
46  public interface Boundary2D extends OrientedCurve2D {
47  
48      /**
49       * Returns true if the point is 'inside' the domain bounded by the curve.
50       * 
51       * @param pt a point in the plane
52       * @return true if the point is on the left side of the curve.
53       */
54      public boolean isInside(java.awt.geom.Point2D pt);
55  
56      /**
57       * Returns the different continuous curves composing the boundary
58       */
59      public Collection<? extends ContinuousBoundary2D> getBoundaryCurves();
60  
61      /**
62       * Returns the domain delimited by this boundary.
63       * 
64       * @return the domain delimited by this boundary
65       */
66      public Domain2D getDomain();
67  
68      /**
69       * Forces the subclasses to return an instance of Boundary2D.
70       */
71      public Curve2D getReverseCurve();
72  
73      /**
74       * Forces the subclasses to return an instance of Boundary2D.
75       */
76      public Curve2D transform(AffineTransform2D trans);
77  
78      public void fill(Graphics2D g2);
79  
80  }