math.geom2d.curve
Class Curve2DUtils

Package class diagram package Curve2DUtils
java.lang.Object
  extended by math.geom2d.curve.Curve2DUtils

public abstract class Curve2DUtils
extends Object

Collects some useful methods for clipping curves.

Author:
dlegland

Constructor Summary
Curve2DUtils()
           
 
Method Summary
static double choosePosition(double t0, double t1)
          Choose an arbitrary position between positions t0 and t1, which can be infinite.
static CurveSet2D<ContinuousCurve2D> clipContinuousCurve(ContinuousCurve2D curve, Box2D box)
           Clips a continuous curve and returns a set of continuous curves.
static CurveSet2D<? extends Curve2D> clipCurve(Curve2D curve, Box2D box)
          Clip a curve, and return a CurveSet2D.
static CurveSet2D<? extends Curve2D> clipCurveSet(CurveSet2D<?> curveSet, Box2D box)
          clip a CurveSet2D.
static CurveSet2D<SmoothCurve2D> clipSmoothCurve(SmoothCurve2D curve, Box2D box)
          Clip a continuous smooth curve.
static CurveSet2D<SmoothCurve2D> clipSmoothCurve(SmoothCurve2D curve, StraightLine2D line)
          Clip a continuous smooth curve by the half-plane defined by a line.
static int findNextCurveIndex(double[] positions, double pos)
           
static double fromUnitSegment(double t, double t0, double t1)
          Transforms the value t between 0 and 1 in a value comprised between t0 and t1.
static boolean isLeftInfinite(Curve2D curve)
           
static boolean isRightInfinite(Curve2D curve)
           
static double toUnitSegment(double t, double t0, double t1)
          Mapping of the parameter t, relative to the local curve, into the interval [0 1], [0 1[, ]0 1], or ]0 1[, depending on the values of t0 and t1.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Curve2DUtils

public Curve2DUtils()
Method Detail

toUnitSegment

public static final double toUnitSegment(double t,
                                         double t0,
                                         double t1)
Mapping of the parameter t, relative to the local curve, into the interval [0 1], [0 1[, ]0 1], or ]0 1[, depending on the values of t0 and t1.

Parameters:
t - a value between t0 and t1
t0 - the lower bound of parameterization domain
t1 - the upper bound of parameterization domain
Returns:
a value between 0 and 1

fromUnitSegment

public static final double fromUnitSegment(double t,
                                           double t0,
                                           double t1)
Transforms the value t between 0 and 1 in a value comprised between t0 and t1.

Parameters:
t - a value between 0 and 1
t0 - the lower bound of parameterization domain
t1 - the upper bound of parameterization domain
Returns:
a value between t0 and t1

clipCurve

public static final CurveSet2D<? extends Curve2D> clipCurve(Curve2D curve,
                                                            Box2D box)
Clip a curve, and return a CurveSet2D. If the curve is totally outside the box, return a CurveSet2D with 0 curves inside. If the curve is totally inside the box, return a CurveSet2D with only one curve, which is the original curve.


clipCurveSet

public static final CurveSet2D<? extends Curve2D> clipCurveSet(CurveSet2D<?> curveSet,
                                                               Box2D box)
clip a CurveSet2D.


clipContinuousCurve

public static final CurveSet2D<ContinuousCurve2D> clipContinuousCurve(ContinuousCurve2D curve,
                                                                      Box2D box)

Clips a continuous curve and returns a set of continuous curves.

Algorithm is the following one:

Special processing is added when the first point of the curve lies on the boundary of the box, and when the curve is closed (when the first point of the curve is inside the box, the method return a portion of curve between the last intersection and the first intersection).


clipSmoothCurve

public static final CurveSet2D<SmoothCurve2D> clipSmoothCurve(SmoothCurve2D curve,
                                                              Box2D box)
Clip a continuous smooth curve. Currently just call the static method clipContinuousCurve, and cast clipped curves.


clipSmoothCurve

public static final CurveSet2D<SmoothCurve2D> clipSmoothCurve(SmoothCurve2D curve,
                                                              StraightLine2D line)
Clip a continuous smooth curve by the half-plane defined by a line. This method is mainly used to help debugging when implementing curves.


findNextCurveIndex

public static final int findNextCurveIndex(double[] positions,
                                           double pos)

choosePosition

public static final double choosePosition(double t0,
                                          double t1)
Choose an arbitrary position between positions t0 and t1, which can be infinite.

Parameters:
t0 - the first bound of a curve parameterization
t1 - the second bound of a curve parameterization
Returns:
a position located between t0 and t1

isLeftInfinite

public static final boolean isLeftInfinite(Curve2D curve)

isRightInfinite

public static final boolean isRightInfinite(Curve2D curve)


Copyright © 2012 AMIS research group, Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic. All Rights Reserved.