Class BezierCurve

    • Method Detail

      • contains

        public boolean contains​(Point p)
        Description copied from interface: IGeometry
        Returns whether the given Point is contained within this IGeometry. This includes the case that the Point lies on the border of this IGeometry.
        Specified by:
        contains in interface IGeometry
        Parameters:
        p - The Point being tested for containment
        Returns:
        true if the Point is contained within this IGeometry, false otherwise.
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • get

        public Point get​(double t)
        Computes the Point on this BezierCurve at parameter value t, which is expected to lie in the parameter BezierCurve.Interval [0;1].
        Parameters:
        t - the parameter value for which this BezierCurve is evaluated
        Returns:
        the Point on this BezierCurve at the given parameter value
      • getClipped

        public BezierCurve getClipped​(double s,
                                      double e)
        Returns a new BezierCurve object representing this BezierCurve on the BezierCurve.Interval [s;e].
        Parameters:
        s - the lower limit of the parameter BezierCurve.Interval which is clipped out of this BezierCurve
        e - the upper limit of the parameter BezierCurve.Interval which is clipped out of this BezierCurve
        Returns:
        a new BezierCurve representing this BezierCurve on the BezierCurve.Interval [s;e]
      • getDerivative

        public BezierCurve getDerivative()
        Computes the hodograph, the first parametric derivative, of this BezierCurve.
        Returns:
        the hodograph of this BezierCurve
      • getIntersections

        public final Point[] getIntersections​(ICurve curve)
        Description copied from interface: ICurve
        Returns the points of intersection between this ICurve and the given ICurve.
        Specified by:
        getIntersections in interface ICurve
        Parameters:
        curve - The ICurve to compute intersection points with.
        Returns:
        The points of intersection.
      • getOffset

        public PolyBezier getOffset​(double distance)
        Returns a PolyBezier that represents an approximation of the refined offset of this BezierCurve where cusps in the input curve are approximated by arc segments in the offset and local self-intersections in the offset are removed while global self-intersections and other singularities in the offset remain unprocessed.
        Parameters:
        distance - The signed distance for which to compute a refined offset approximation.
        Returns:
        A PolyBezier representing the refined offset of this BezierCurve for the given distance.
      • getOverlap

        public BezierCurve getOverlap​(BezierCurve other)

        Returns a BezierCurve that represents the overlap of this BezierCurve and the given other BezierCurve. If no overlap exists, null is returned. An overlap is identified by an infinite number of intersection points.

        Parameters:
        other - The BezierCurve to which an overlap is computed.
        Returns:
        a BezierCurve representing the overlap of this and the given other BezierCurve if an overlap exists, otherwise null
      • getOverlaps

        public final ICurve[] getOverlaps​(ICurve c)
        Description copied from interface: ICurve
        Returns the curve segments at which this ICurve and the given ICurve overlap.
        Specified by:
        getOverlaps in interface ICurve
        Parameters:
        c - The curve to compute overlaps with.
        Returns:
        The segments where both curves overlap.
      • getP1

        public Point getP1()
        Description copied from interface: ICurve
        Returns a Point representing the start point of this ICurve.
        Specified by:
        getP1 in interface ICurve
        Returns:
        a new Point with the coordinates of the ICurve's start point.
      • getP2

        public Point getP2()
        Description copied from interface: ICurve
        Returns a Point representing the end point of this ICurve .
        Specified by:
        getP2 in interface ICurve
        Returns:
        a new Point with the coordinates of the ICurve's end point.
      • getParameterAt

        public double getParameterAt​(Point p)
        Returns the parameter value of this BezierCurve for the given Point. If the given Point is not on this BezierCurve an IllegalArgumentException is thrown.
        Parameters:
        p - the Point for which the parameter value on this BezierCurve is to be found
        Returns:
        the corresponding parameter value of the given Point on this BezierCurve
      • getProjection

        public Point getProjection​(Point reference)
        Description copied from interface: ICurve
        Returns a projection of the given reference Point onto this ICurve, i.e. a Point on this ICurve that is closest to the given reference Point. Note, that
        Specified by:
        getProjection in interface ICurve
        Parameters:
        reference - The reference Point for which to return the projection.
        Returns:
        The projection of the given reference Point onto this ICurve.
      • getRotatedCCW

        public BezierCurve getRotatedCCW​(Angle angle)
        Description copied from interface: IRotatable
        Rotates the calling object by specified Angle counter-clock-wise (CCW) around its center Point. Does not necessarily return an object of the same type.
        Specified by:
        getRotatedCCW in interface IRotatable<BezierCurve>
        Parameters:
        angle - rotation Angle
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCCW

        public BezierCurve getRotatedCCW​(Angle angle,
                                         double cx,
                                         double cy)
        Description copied from interface: IRotatable
        Rotates the calling object by the specified Angle counter-clock-wise (CCW) around the specified center Point (cx, cy). Does not necessarily return an object of the same type.
        Specified by:
        getRotatedCCW in interface IRotatable<BezierCurve>
        Parameters:
        angle - rotation Angle
        cx - x-coordinate of the relative Point for the rotation
        cy - y-coordinate of the relative Point for the rotation
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCCW

        public BezierCurve getRotatedCCW​(Angle angle,
                                         Point center)
        Description copied from interface: IRotatable
        Rotates the calling object by the specified Angle counter-clock-wise (CCW) around the specified center Point. Does not necessarily return an object of the same type.
        Specified by:
        getRotatedCCW in interface IRotatable<BezierCurve>
        Parameters:
        angle - rotation Angle
        center - relative Point for the rotation
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCW

        public BezierCurve getRotatedCW​(Angle angle)
        Description copied from interface: IRotatable
        Rotates the calling object by specified Angle clock-wise (CW) around its center Point. Does not necessarily return an object of the same type.
        Specified by:
        getRotatedCW in interface IRotatable<BezierCurve>
        Parameters:
        angle - rotation Angle
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCW

        public BezierCurve getRotatedCW​(Angle angle,
                                        double cx,
                                        double cy)
        Description copied from interface: IRotatable
        Rotates the calling object by the specified Angle clock-wise (CW) around the specified center Point (cx, cy). Does not necessarily return an object of the same type.
        Specified by:
        getRotatedCW in interface IRotatable<BezierCurve>
        Parameters:
        angle - rotation Angle
        cx - x-coordinate of the relative Point for the rotation
        cy - y-coordinate of the relative Point for the rotation
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCW

        public BezierCurve getRotatedCW​(Angle angle,
                                        Point center)
        Description copied from interface: IRotatable
        Rotates the calling object by the specified Angle clock-wise (CW) around the specified center Point. Does not necessarily return an object of the same type.
        Specified by:
        getRotatedCW in interface IRotatable<BezierCurve>
        Parameters:
        angle - rotation Angle
        center - relative Point for the rotation
        Returns:
        an IGeometry representing the result of the rotation
      • getScaled

        public BezierCurve getScaled​(double factor)
        Description copied from interface: IScalable
        Scales a copy of the calling object by the given factor relative to its center Point.
        Specified by:
        getScaled in interface IScalable<BezierCurve>
        Parameters:
        factor - scale-factor
        Returns:
        the new, scaled object
      • getScaled

        public BezierCurve getScaled​(double fx,
                                     double fy)
        Description copied from interface: IScalable
        Scales a copy of the calling object by the given factors relative to its center Point.
        Specified by:
        getScaled in interface IScalable<BezierCurve>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        Returns:
        the new, scaled object
      • getScaled

        public BezierCurve getScaled​(double factor,
                                     double cx,
                                     double cy)
        Description copied from interface: IScalable
        Scales a copy of the calling object by the given factor relative to the given center Point (cx, cy).
        Specified by:
        getScaled in interface IScalable<BezierCurve>
        Parameters:
        factor - scale-factor
        cx - x-coordinate of the relative Point for the scaling
        cy - y-coordinate of the relative Point for the scaling
        Returns:
        the new, scaled object
      • getScaled

        public BezierCurve getScaled​(double fx,
                                     double fy,
                                     double cx,
                                     double cy)
        Description copied from interface: IScalable
        Scales a copy of the calling object by the given factors relative to the given center Point (cx, cy).
        Specified by:
        getScaled in interface IScalable<BezierCurve>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        cx - x-coordinate of the relative Point for the scaling
        cy - y-coordinate of the relative Point for the scaling
        Returns:
        the new, scaled object
      • getScaled

        public BezierCurve getScaled​(double fx,
                                     double fy,
                                     Point center)
        Description copied from interface: IScalable
        Scales a copy of the calling object by the given factors relative to the given center Point.
        Specified by:
        getScaled in interface IScalable<BezierCurve>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        center - relative Point for the scaling
        Returns:
        the new, scaled object
      • getScaled

        public BezierCurve getScaled​(double factor,
                                     Point center)
        Description copied from interface: IScalable
        Scales a copy of the calling object by the given factor relative to the given center Point.
        Specified by:
        getScaled in interface IScalable<BezierCurve>
        Parameters:
        factor - scale-factor
        center - relative Point for the scaling
        Returns:
        the new, scaled object
      • getTranslated

        public BezierCurve getTranslated​(double dx,
                                         double dy)
        Description copied from interface: ITranslatable
        Translates a copy of this object by the given values in x and y direction.
        Specified by:
        getTranslated in interface ITranslatable<BezierCurve>
        Parameters:
        dx - x-translation
        dy - y-translation
        Returns:
        a new, translated object
      • getX1

        public double getX1()
        Description copied from interface: ICurve
        Returns the start Point's x coordinate.
        Specified by:
        getX1 in interface ICurve
        Returns:
        the start Point's x coordinate
      • getX2

        public double getX2()
        Description copied from interface: ICurve
        Returns the end Point's x coordinate.
        Specified by:
        getX2 in interface ICurve
        Returns:
        the end Point's x coordinate
      • getY1

        public double getY1()
        Description copied from interface: ICurve
        Returns the start Point's y coordinate.
        Specified by:
        getY1 in interface ICurve
        Returns:
        the start Point's y coordinate
      • getY2

        public double getY2()
        Description copied from interface: ICurve
        Returns the end Point's y coordinate.
        Specified by:
        getY2 in interface ICurve
        Returns:
        the end Point's y coordinate
      • rotateCCW

        public BezierCurve rotateCCW​(Angle angle)
        Directly rotates this BezierCurve counter-clockwise (CCW) around its center Point by the given Angle. Direct adaptation means, that this BezierCurve is modified in-place.
        Parameters:
        angle - the rotation Angle
        Returns:
        this for convenience
      • rotateCCW

        public BezierCurve rotateCCW​(Angle angle,
                                     double cx,
                                     double cy)
        Directly rotates this BezierCurve counter-clockwise (CCW) around the Point specified by the given x and y coordinate values by the given Angle. Direct adaptation means, that this BezierCurve is modified in-place.
        Parameters:
        angle - the rotation Angle
        cx - the x coordinate of the Point to rotate around
        cy - the y coordinate of the Point to rotate around
        Returns:
        this for convenience
      • rotateCCW

        public BezierCurve rotateCCW​(Angle angle,
                                     Point center)
        Directly rotates this BezierCurve counter-clockwise (CCW) around the given Point by the given Angle. Direct adaptation means, that this BezierCurve is modified in-place.
        Parameters:
        angle - the rotation Angle
        center - the Point to rotate around
        Returns:
        this for convenience
      • rotateCW

        public BezierCurve rotateCW​(Angle angle)
        Directly rotates this BezierCurve clockwise (CW) around its center Point by the given Angle. Direct adaptation means, that this BezierCurve is modified in-place.
        Parameters:
        angle - the rotation Angle
        Returns:
        this for convenience
      • rotateCW

        public BezierCurve rotateCW​(Angle angle,
                                    double cx,
                                    double cy)
        Directly rotates this BezierCurve clockwise (CW) around the Point specified by the given x and y coordinate values by the given Angle. Direct adaptation means, that this BezierCurve is modified in-place.
        Parameters:
        angle - the rotation Angle
        cx - the x coordinate of the Point to rotate around
        cy - the y coordinate of the Point to rotate around
        Returns:
        this for convenience
      • rotateCW

        public BezierCurve rotateCW​(Angle angle,
                                    Point center)
        Directly rotates this BezierCurve clockwise (CW) around the given Point by the given Angle. Direct adaptation means, that this BezierCurve is modified in-place.
        Parameters:
        angle - the rotation Angle
        center - the Point to rotate around
        Returns:
        this for convenience
      • scale

        public BezierCurve scale​(double factor)
        Description copied from interface: IScalable
        Scales the calling object by the given factor relative to its center Point.
        Specified by:
        scale in interface IScalable<BezierCurve>
        Parameters:
        factor - scale-factor
        Returns:
        this for convenience
      • scale

        public BezierCurve scale​(double fx,
                                 double fy)
        Description copied from interface: IScalable
        Scales the calling object by the given factors relative to the given center Point.
        Specified by:
        scale in interface IScalable<BezierCurve>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        Returns:
        this for convenience
      • scale

        public BezierCurve scale​(double factor,
                                 double cx,
                                 double cy)
        Description copied from interface: IScalable
        Scales the calling object by the given factor relative to the given center Point (cx, cy).
        Specified by:
        scale in interface IScalable<BezierCurve>
        Parameters:
        factor - scale-factor
        cx - x-coordinate of the relative Point for the scaling
        cy - y-coordinate of the relative Point for the scaling
        Returns:
        this for convenience
      • scale

        public BezierCurve scale​(double fx,
                                 double fy,
                                 double cx,
                                 double cy)
        Description copied from interface: IScalable
        Scales the calling object by the given factors relative to the given center Point (cx, cy).
        Specified by:
        scale in interface IScalable<BezierCurve>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        cx - x-coordinate of the relative Point for the scaling
        cy - y-coordinate of the relative Point for the scaling
        Returns:
        this for convenience
      • scale

        public BezierCurve scale​(double fx,
                                 double fy,
                                 Point center)
        Description copied from interface: IScalable
        Scales the calling object by the given factors relative to the given center Point.
        Specified by:
        scale in interface IScalable<BezierCurve>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        center - relative Point for the scaling
        Returns:
        this for convenience
      • scale

        public BezierCurve scale​(double factor,
                                 Point center)
        Description copied from interface: IScalable
        Scales the calling object by the given factor relative to the given center Point.
        Specified by:
        scale in interface IScalable<BezierCurve>
        Parameters:
        factor - scale-factor
        center - relative Point for the scaling
        Returns:
        this for convenience
      • setPoint

        public BezierCurve setPoint​(int i,
                                    Point p)
        Sets the ith control Point of this BezierCurve. The start Point is at index 0, the first handle- Point is at index 1, etc.
        Parameters:
        i - the index of the control Point of this BezierCurve to set
        p - the new control Point at the given index
        Returns:
        this for convenience
      • split

        public BezierCurve[] split​(double t)
        Subdivides this BezierCurve at the given parameter value t into two new BezierCurves. The first one is the BezierCurve over the parameter BezierCurve.Interval [0;t] and the second one is the BezierCurve over the parameter BezierCurve.Interval [t;1].
        Parameters:
        t - the parameter value at which this BezierCurve is subdivided
        Returns:
        an array of two BezierCurves, the left ( [0;t]) and the right ([t;1])
      • toLineStrip

        public Line[] toLineStrip​(double lineSimilarity,
                                  org.eclipse.gef.geometry.planar.BezierCurve.Interval startInterval)

        Computes an approximation of this BezierCurve by a strip of Lines.

        The BezierCurve is recursively subdivided until it is "similar" to a straight Line. The similarity check computes the sum of the distances of the control Points to the baseline ( toLine()) of this BezierCurve. If this sum is smaller than the given lineSimilarity, the BezierCurve is assumed to be "similar" to a straight line.

        Parameters:
        lineSimilarity - the threshold for the sum of the distances of the control points to the baseline of this BezierCurve
        startInterval - the BezierCurve.Interval of this BezierCurve that has to be approximated by a strip of Lines
        Returns:
        Line segments approximating this BezierCurve
      • toPoints

        public Point[] toPoints​(org.eclipse.gef.geometry.planar.BezierCurve.Interval startInterval)
        Computes Points on this BezierCurve over the given BezierCurve.Interval. Consecutive returned Points are required to be equal to each other.
        Parameters:
        startInterval - the BezierCurve.Interval of this BezierCurve to calculate Points for
        Returns:
        Points on this BezierCurve over the given parameter BezierCurve.Interval where consecutive Points are equal to each other
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • translate

        public BezierCurve translate​(double dx,
                                     double dy)
        Description copied from interface: ITranslatable
        Translates the object by the given values in x and y direction.
        Specified by:
        translate in interface ITranslatable<BezierCurve>
        Parameters:
        dx - x-translation
        dy - y-translation
        Returns:
        this for convenience
      • clone

        public java.lang.Object clone()
        Overridden with public visibility as recommended within Cloneable .
        Overrides:
        clone in class java.lang.Object
      • hashCode

        public final int hashCode()
        Overrides:
        hashCode in class java.lang.Object
        See Also:
        Object.hashCode()