Class RMLine
- java.lang.Object
-
- com.inductiveautomation.rm.graphics.RMLine
-
- All Implemented Interfaces:
java.lang.Cloneable
- Direct Known Subclasses:
RMQuadratic
public class RMLine extends java.lang.Object implements java.lang.Cloneable
This class models a simple line, providing methods for extracting points, distance calculation, bisection, hit detection and such.
-
-
Constructor Summary
Constructors Constructor Description RMLine()
Creates a new line.RMLine(double x1, double y1, double x2, double y2)
Creates a new line for the given x & y start/end points.RMLine(RMPoint startPoint, RMPoint endPoint)
Creates a new line for the given start point and end point.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description RMLine
clone()
Standard clone implementation.double
getAngle(double t)
Returns the angle at given parametric point (in degrees).float
getArcLength()
Returns the total arc length of the segmentfloat
getArcLength(float t)
Returns the arc length of the segment up to parametric value tfloat
getArcLength(float start, float end)
Returns the arc length of the segment in range [start..end]RMRect
getBounds()
Returns the bounds of the line.void
getBounds(java.awt.geom.Rectangle2D aRect)
Get bounds of line in given rect.double
getDistance(RMPoint aPoint)
Returns the minimum distance from the given point to this segment.double
getDistanceLine(RMPoint aPoint)
Returns the minimum distance from the given point to this line.double
getDistanceLineSquared(double anX, double aY)
Returns the minimum distance from the given point to this line, squared.static double
getDistanceLineSquared(double p0x, double p0y, double p1x, double p1y, double p2x, double p2y)
Returns the distance from the given point components (p0) to the given line components (p1->p2).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 object for this line and the given bezier.RMHitInfo
getHitInfo(RMLine aLine)
Returns a hit info object for this line and the given line.RMHitInfo
getHitInfo(RMQuadratic aCurve)
Returns a hit info object for this line and the given bezier curve.double
getLastX()
Returns the last x.double
getLastY()
Returns the last y.double
getMaxX()
Returns the max x point of this line.double
getMaxY()
Returns the max y point of this line.double
getMinX()
Returns the min x point of this line.double
getMinY()
Returns the min y point of this line.float
getParameterForLength(float l)
Returns parametric point t that corresponds to a given length along the curve.RMPoint
getPoint(double t)
Returns the point on this line at the parametric location t (defined from 0-1).RMPoint
getPoint(double t, RMPoint aPoint)
Returns the point on this line at the parametric location t (defined 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.double
getTangent(double t, RMSize tan)
Return the tangent at given point.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).java.lang.String
toString()
Returns a string representation of this line.
-
-
-
Method Detail
-
getPoint
public final RMPoint getPoint(double t)
Returns the point on this line at the parametric location t (defined from 0-1).
-
getPoint
public RMPoint getPoint(double t, RMPoint aPoint)
Returns the point on this line at the parametric location t (defined from 0-1).
-
getPointCount
public int getPointCount()
Returns the point count of segment.
-
getPointX
public double getPointX(int anIndex)
Returns the x of point at given index.
-
getPointY
public double getPointY(int anIndex)
Returns the y of point at given index.
-
getLastX
public double getLastX()
Returns the last x.
-
getLastY
public double getLastY()
Returns the last y.
-
getDistance
public double getDistance(RMPoint aPoint)
Returns the minimum distance from the given point to this segment.
-
getDistanceLine
public double getDistanceLine(RMPoint aPoint)
Returns the minimum distance from the given point to this line.
-
getDistanceLineSquared
public double getDistanceLineSquared(double anX, double aY)
Returns the minimum distance from the given point to this line, squared.
-
getDistanceLineSquared
public static double getDistanceLineSquared(double p0x, double p0y, double p1x, double p1y, double p2x, double p2y)
Returns the distance from the given point components (p0) to the given line components (p1->p2).
-
getMinX
public double getMinX()
Returns the min x point of this line.
-
getMinY
public double getMinY()
Returns the min y point of this line.
-
getMaxX
public double getMaxX()
Returns the max x point of this line.
-
getMaxY
public double getMaxY()
Returns the max y point of this line.
-
getBounds
public final RMRect getBounds()
Returns the bounds of the line.
-
getBounds
public void getBounds(java.awt.geom.Rectangle2D aRect)
Get bounds of line in given rect.
-
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.
-
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).
-
getHitInfo
public RMHitInfo getHitInfo(RMLine aLine)
Returns a hit info object for this line and the given line.
-
getHitInfo
public RMHitInfo getHitInfo(RMQuadratic aCurve)
Returns a hit info object for this line and the given bezier curve. HitInfo._index is overloaded to contain number of hits.
-
getHitInfo
public RMHitInfo getHitInfo(RMBezier aBezier)
Returns a hit info object for this line and the given bezier.
-
toString
public java.lang.String toString()
Returns a string representation of this line.- Overrides:
toString
in classjava.lang.Object
-
getArcLength
public float getArcLength()
Returns the total arc length of the segment
-
getArcLength
public float getArcLength(float t)
Returns the arc length of the segment up to parametric value t
-
getArcLength
public float getArcLength(float start, float end)
Returns the arc length of the segment in range [start..end]
-
getAngle
public double getAngle(double t)
Returns the angle at given parametric point (in degrees).
-
getTangent
public double getTangent(double t, RMSize tan)
Return the tangent at given point.
-
getParameterForLength
public float getParameterForLength(float l)
Returns parametric point t that corresponds to a given length along the curve. l is in the range [0-1] (ie. percentage of total arclength). For a line, l == t.
-
clone
public RMLine clone()
Standard clone implementation.- Overrides:
clone
in classjava.lang.Object
-
-