Class RMBezier
- java.lang.Object
-
- com.inductiveautomation.rm.graphics.RMLine
-
- com.inductiveautomation.rm.graphics.RMQuadratic
-
- com.inductiveautomation.rm.graphics.RMBezier
-
- All Implemented Interfaces:
java.lang.Cloneable
public class RMBezier extends RMQuadratic
This class models a simple bezier curve, providing methods for extracting points, distance calculation, bisection, hit detection and such.
-
-
Constructor Summary
Constructors Constructor Description RMBezier()
Creates a new bezier.RMBezier(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
Creates a new bezier from the given start point, control points and end point.RMBezier(RMPoint startPoint, RMPoint controlPoint1, RMPoint controlPoint2, RMPoint endPoint)
Creates a new bezier from the given start point, control points and end point.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description RMMath.RMFunc
getArcLengthFunction()
Returns an RMFunc which calculates the arclength of the curve up to t.static void
getBounds(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3, java.awt.geom.Rectangle2D aRect)
Returns the bounds of the bezier.void
getBounds(java.awt.geom.Rectangle2D aRect)
Returns the bounds.double
getDistance(RMPoint aPoint)
Returns the minimum distance from the given point to this segment.double
getDistanceBezier(RMPoint aPoint)
Returns the minimum distance from the given point to the curve.RMLine
getHead(double t)
Returns a new line from this line's start point to given parametric location t (defined from 0-1) on this line.RMHitInfo
getHitInfo(RMBezier aBezier)
Returns a hit info for this bezier and given bezier.RMHitInfo
getHitInfo(RMLine aLine)
Returns the hit info for this bezier and a given line.double
getMaxX()
Returns the max x point of this bezier.double
getMaxY()
Returns the max y point of this bezier.double
getMinX()
Returns the min x point of this bezier.double
getMinY()
Returns the min y point of this bezier.RMPoint
getPoint(double t, RMPoint aPoint)
Returns a specific point on the curve at the given parametric value (from 0-1).int
getPointCount()
Returns the point count of segment.double
getPointX(int anIndex)
Returns the x of point at given index.double
getPointY(int anIndex)
Returns the y of point at given index.RMLine
getTail(double t)
Returns a new line from given parametric location t (defined from 0-1) on this line to this line's end point.void
setCurve(RMPoint p1, RMPoint p2, RMPoint p3, RMPoint p4)
Sets the values of the curve.void
setEnd(double t)
Reset this curve's end point to the given parametric location (0-1).void
setStart(double t)
Reset this curve's start point to the given parametric location (0-1).void
subdivide(RMBezier left, RMBezier right, double t)
Returns a bezier curve from this curve's start point to the given parametric location (0-1).java.lang.String
toString()
Returns a string representation of this bezier.-
Methods inherited from class com.inductiveautomation.rm.graphics.RMQuadratic
getArcLength, getBounds, getDistanceQuadratic, getInverseArcLengthFunction, getParameterForLength, setCurve, setCurve, subdivide
-
Methods inherited from class com.inductiveautomation.rm.graphics.RMLine
clone, getAngle, getArcLength, getArcLength, getBounds, getDistanceLine, getDistanceLineSquared, getDistanceLineSquared, getHitInfo, getLastX, getLastY, getPoint, getTangent
-
-
-
-
Field Detail
-
_cp2
public RMPoint _cp2
-
-
Constructor Detail
-
RMBezier
public RMBezier()
Creates a new bezier.
-
RMBezier
public RMBezier(RMPoint startPoint, RMPoint controlPoint1, RMPoint controlPoint2, RMPoint endPoint)
Creates a new bezier from the given start point, control points and end point.
-
RMBezier
public RMBezier(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
Creates a new bezier from the given start point, control points and end point.
-
-
Method Detail
-
setCurve
public void setCurve(RMPoint p1, RMPoint p2, RMPoint p3, RMPoint p4)
Sets the values of the curve.
-
getPoint
public RMPoint getPoint(double t, RMPoint aPoint)
Returns a specific point on the curve at the given parametric value (from 0-1).- Overrides:
getPoint
in classRMQuadratic
-
getPointCount
public int getPointCount()
Returns the point count of segment.- Overrides:
getPointCount
in classRMQuadratic
-
getPointX
public double getPointX(int anIndex)
Returns the x of point at given index.- Overrides:
getPointX
in classRMQuadratic
-
getPointY
public double getPointY(int anIndex)
Returns the y of point at given index.- Overrides:
getPointY
in classRMQuadratic
-
getDistance
public double getDistance(RMPoint aPoint)
Returns the minimum distance from the given point to this segment.- Overrides:
getDistance
in classRMQuadratic
-
getDistanceBezier
public double getDistanceBezier(RMPoint aPoint)
Returns the minimum distance from the given point to the curve.
-
getMinX
public double getMinX()
Returns the min x point of this bezier.- Overrides:
getMinX
in classRMQuadratic
-
getMinY
public double getMinY()
Returns the min y point of this bezier.- Overrides:
getMinY
in classRMQuadratic
-
getMaxX
public double getMaxX()
Returns the max x point of this bezier.- Overrides:
getMaxX
in classRMQuadratic
-
getMaxY
public double getMaxY()
Returns the max y point of this bezier.- Overrides:
getMaxY
in classRMQuadratic
-
getBounds
public void getBounds(java.awt.geom.Rectangle2D aRect)
Returns the bounds.- Overrides:
getBounds
in classRMQuadratic
-
getBounds
public static void getBounds(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3, java.awt.geom.Rectangle2D aRect)
Returns the bounds of the bezier.
-
getHitInfo
public RMHitInfo getHitInfo(RMLine aLine)
Returns the hit info for this bezier and a given line.- Overrides:
getHitInfo
in classRMLine
-
getHitInfo
public RMHitInfo getHitInfo(RMBezier aBezier)
Returns a hit info for this bezier and given bezier.- Overrides:
getHitInfo
in classRMLine
-
getHead
public RMLine getHead(double t)
Returns a new line from this line's start point to given parametric location t (defined from 0-1) on this line.
-
getTail
public RMLine getTail(double t)
Returns a new line from given parametric location t (defined from 0-1) on this line to this line's end point.
-
subdivide
public void subdivide(RMBezier left, RMBezier right, double t)
Returns a bezier curve from this curve's start point to the given parametric location (0-1).
-
setEnd
public void setEnd(double t)
Reset this curve's end point to the given parametric location (0-1).
-
setStart
public void setStart(double t)
Reset this curve's start point to the given parametric location (0-1).
-
getArcLengthFunction
public RMMath.RMFunc getArcLengthFunction()
Returns an RMFunc which calculates the arclength of the curve up to t.- Overrides:
getArcLengthFunction
in classRMQuadratic
-
-