1 /* File SmoothCurve2D.java
2 *
3 * Project : Java Geometry Library
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
24 // package
25
26 package math.geom2d.curve;
27
28 // Imports
29 import math.geom2d.AffineTransform2D;
30 import math.geom2d.Box2D;
31 import math.geom2d.Vector2D;
32
33 /**
34 * Interface for smooth and continuous curves. They accept first and second
35 * derivative at every point, and can be drawn with a parametric representation
36 * for every values of t comprised between T0 and T1. Every Curve2D is a
37 * compound of several SmoothCurve2D.
38 */
39 public interface SmoothCurve2D extends ContinuousCurve2D {
40
41 public abstract Vector2D getTangent(double t);
42
43 public abstract double getCurvature(double t);
44
45 public abstract Curve2D getReverseCurve();
46
47 public abstract Curve2D getSubCurve(double t0, double t1);
48
49 public abstract CurveSet2D clip(Box2D box);
50
51 public abstract Curve2D transform(AffineTransform2D trans);
52 }