Class PolyBezier

    • Field Detail

      • INTERPOLATION_CURVE_WIDTH_COEFFICIENT

        public static final double INTERPOLATION_CURVE_WIDTH_COEFFICIENT
        The default curve width coefficient used in interpolateCubic(...) methods.
        See Also:
        Constant Field Values
    • Method Detail

      • interpolateCubic

        public static PolyBezier interpolateCubic​(Angle startAngle,
                                                  double startLength,
                                                  Angle endAngle,
                                                  double endLength,
                                                  double curveWidthCoefficient,
                                                  Point... wayPoints)

        Creates a PolyBezier consisting of continuous CubicCurve segments through the given Points.

        The start angle and start length constrain the curve. Way points are added to assure the curve starts off with a straight line of said length in the direction specified by said angle.

        The end angle and end length constrain the curve. Way points are added to assure the curve ends in a straight line of said length in the direction specified by said angle.

        Parameters:
        startAngle - start direction of the curve
        startLength - length of the straight start segment of the curve
        endAngle - end direction of the curve
        endLength - length of the straight end segment of the curve
        curveWidthCoefficient - value in the range ]0;+Inf[ that adjusts the width of the curve. A value smaller than 1 sharpens the curve and a value greater than 1 thickens the curve.
        wayPoints - The array of Points which lie on the resulting PolyBezier.
        Returns:
        PolyBezier consisting of continuous CubicCurve segments through the given Points
      • interpolateCubic

        public static PolyBezier interpolateCubic​(double... coordinates)
        Creates a PolyBezier with continuous CubicCurve segments through the given Points.
        Parameters:
        coordinates - the coordinates of the points that are to be interpolated.
        Returns:
        PolyBezier with continuous CubicCurve segments through the points, specified via the given coordinates.
        See Also:
        interpolateCubic(Point...)
      • interpolateCubic

        public static PolyBezier interpolateCubic​(double curveWidthCoefficient,
                                                  Point... points)
        Creates a PolyBezier with continuous CubicCurve segments through the given Points.
        Parameters:
        curveWidthCoefficient - value in the range ]0;+Inf[ that adjusts the width of the curve. A value smaller than one sharpens the curve and a value greater than one thickens the curve.
        points - The array of Points which lie on the resulting PolyBezier.
        Returns:
        PolyBezier with continuous CubicCurve segments through the given Points.
      • 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 o)
        Overrides:
        equals in class java.lang.Object
      • getIntersections

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

        public 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.
      • 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 PolyBezier 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<PolyBezier>
        Parameters:
        angle - rotation Angle
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCCW

        public PolyBezier 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<PolyBezier>
        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 PolyBezier 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<PolyBezier>
        Parameters:
        angle - rotation Angle
        center - relative Point for the rotation
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCW

        public PolyBezier 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<PolyBezier>
        Parameters:
        angle - rotation Angle
        Returns:
        an IGeometry representing the result of the rotation
      • getRotatedCW

        public PolyBezier 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<PolyBezier>
        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 PolyBezier 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<PolyBezier>
        Parameters:
        angle - rotation Angle
        center - relative Point for the rotation
        Returns:
        an IGeometry representing the result of the rotation
      • getScaled

        public PolyBezier 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<PolyBezier>
        Parameters:
        factor - scale-factor
        Returns:
        the new, scaled object
      • getScaled

        public PolyBezier 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<PolyBezier>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        Returns:
        the new, scaled object
      • getScaled

        public PolyBezier 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<PolyBezier>
        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 PolyBezier 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<PolyBezier>
        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 PolyBezier 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<PolyBezier>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        center - relative Point for the scaling
        Returns:
        the new, scaled object
      • getScaled

        public PolyBezier 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<PolyBezier>
        Parameters:
        factor - scale-factor
        center - relative Point for the scaling
        Returns:
        the new, scaled object
      • getTranslated

        public PolyBezier 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<PolyBezier>
        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 PolyBezier rotateCCW​(Angle angle)
        Directly rotates this PolyBezier counter-clock-wise around its center Point by the given Angle. Direct adaptation means, that this PolyBezier is modified in-place.
        Parameters:
        angle - rotation Angle
        Returns:
        this for convenience
      • rotateCCW

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

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

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

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

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

        public PolyBezier 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<PolyBezier>
        Parameters:
        factor - scale-factor
        Returns:
        this for convenience
      • scale

        public PolyBezier 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<PolyBezier>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        Returns:
        this for convenience
      • scale

        public PolyBezier 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<PolyBezier>
        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 PolyBezier 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<PolyBezier>
        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 PolyBezier 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<PolyBezier>
        Parameters:
        fx - x-scale-factor
        fy - y-scale-factor
        center - relative Point for the scaling
        Returns:
        this for convenience
      • scale

        public PolyBezier 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<PolyBezier>
        Parameters:
        factor - scale-factor
        center - relative Point for the scaling
        Returns:
        this for convenience
      • toString

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

        public PolyBezier 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<PolyBezier>
        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()