Class Ray2d

    • Field Detail

      • phi

        public final double phi
        Phi; the angle from the positive X axis direction in radians.
    • Constructor Detail

      • Ray2d

        public Ray2d​(double x,
                     double y,
                     double phi)
              throws DrawRuntimeException
        Construct a new Ray2d.
        Parameters:
        x - double; the x coordinate of the finite end point of the ray
        y - double; the y coordinate of the finite end point of the ray
        phi - double; the angle from the positive X axis direction in radians.
        Throws:
        DrawRuntimeException - when phi is NaN
      • Ray2d

        public Ray2d​(double x,
                     double y,
                     double throughX,
                     double throughY)
              throws DrawRuntimeException
        Construct a new Ray2d.
        Parameters:
        x - double; the x coordinate of the finite end point of the ray
        y - double; the y coordinate of the finite end point of the ray
        throughX - double; the x coordinate of another point on the ray
        throughY - double; the y coordinate of another point on the ray
        Throws:
        DrawRuntimeException - when throughX == x and throughY == y
      • Ray2d

        public Ray2d​(Point2d point,
                     double throughX,
                     double throughY)
              throws NullPointerException,
                     DrawRuntimeException
        Construct a new Ray2d.
        Parameters:
        point - Point2d; the finite end point of the ray
        throughX - double; the x coordinate of another point on the ray
        throughY - double; the y coordinate of another point on the ray
        Throws:
        NullPointerException - when point is null
        DrawRuntimeException - when throughX == point.x and throughY == point.y
      • Ray2d

        public Ray2d​(double x,
                     double y,
                     Point2d throughPoint)
              throws NullPointerException,
                     DrawRuntimeException
        Construct a new Ray2d.
        Parameters:
        x - double; the x coordinate of the finite end point of the ray
        y - double; the y coordinate of the finite end point of the ray
        throughPoint - Point2d; another point on the ray
        Throws:
        NullPointerException - when throughPoint is null
        DrawRuntimeException - when throughPoint is exactly at (x, y)
    • Method Detail

      • getPhi

        public final double getPhi()
        Retrieve the angle from the positive X axis direction in radians.
        Specified by:
        getPhi in interface Ray<Ray2d,​Point2d>
        Returns:
        double; the angle from the positive X axis direction in radians
      • getEndPoint

        public Point2d getEndPoint()
        Get the finite end point of this Ray.
        Specified by:
        getEndPoint in interface Ray<Ray2d,​Point2d>
        Returns:
        P; the finite end point of this Ray
      • size

        public int size()
        Retrieve the number of points that make up the object.
        Specified by:
        size in interface Drawable<Point2d>
        Overrides:
        size in class Point2d
        Returns:
        int; the number of points that make up the object
      • getPoints

        public Iterator<Point2d> getPoints()
        Retrieve, or generate all points that make up the object.
        Specified by:
        getPoints in interface Drawable<Point2d>
        Overrides:
        getPoints in class Point2d
        Returns:
        Iterable<Point2d>; an iterator that generates all points that make up the object
      • getBounds

        public Bounds2d getBounds()
        Retrieve the bounding rectangle of the object.
        Specified by:
        getBounds in interface Drawable2d
        Overrides:
        getBounds in class Point2d
        Returns:
        Bounds2d; the bounding box of the object
      • neg

        public Ray2d neg()
        Return a new Point with negated coordinate values.
        Specified by:
        neg in interface Directed<Ray2d>
        Specified by:
        neg in interface Point<Point2d>
        Overrides:
        neg in class Point2d
        Returns:
        Point; a new point with negated coordinate values
      • flip

        public Ray2d flip()
        Flip the direction of the Ray (creates and returns a new Ray instance).
        Specified by:
        flip in interface Ray<Ray2d,​Point2d>
        Returns:
        R; Ray at the same location, but with phi incremented by π and theta (in case of a Ray3d) subtracted from π
      • getLocationExtended

        public Ray2d getLocationExtended​(double position)
                                  throws DrawRuntimeException
        Get the location at a position on the line, with its direction. Position must be a positive, finite value
        Specified by:
        getLocationExtended in interface Ray<Ray2d,​Point2d>
        Parameters:
        position - double; the position on the line for which to calculate the point on the line
        Returns:
        R; a ray with the same direction as this ray
        Throws:
        DrawRuntimeException - when position infinite, or NaN.
      • closestPointOnRay

        public Point2d closestPointOnRay​(Point2d point)
                                  throws NullPointerException
        Project a Point on a Ray. If the the projected points lies outside the ray, the start point of the ray is returned. Otherwise the closest point on the ray is returned.
        Adapted from example code provided by Paul Bourke.
        Specified by:
        closestPointOnRay in interface Ray<Ray2d,​Point2d>
        Parameters:
        point - P; the point to project onto the segment
        Returns:
        P; either the start point, or the end point of the segment or a Point2d that lies somewhere in between those two.
        Throws:
        NullPointerException - when point is null
      • projectOrthogonal

        public Point2d projectOrthogonal​(Point2d point)
                                  throws NullPointerException
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned. If there is no valid solution on the closest segment, null is returned.
        Specified by:
        projectOrthogonal in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        P; the projection of the point (may be null if no sensible projection is possible). If the result is not null; the result lies somewhere on this object.
        Throws:
        NullPointerException - when point is null;
      • projectOrthogonalExtended

        public Point2d projectOrthogonalExtended​(Point2d point)
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned.
        Specified by:
        projectOrthogonalExtended in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        P; the projection of the point. This result cannot be null, but it may not lie on this object, but, in stead, lie on a line, or plane that extends this object
      • projectOrthogonalFractional

        public double projectOrthogonalFractional​(Point2d point)
                                           throws NullPointerException
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned. If there is no valid solution on the closest segment, null is returned.
        Specified by:
        projectOrthogonalFractional in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        double; the fractional position of the projection of the point (may be NaN if no sensible projection is possible). If the result is not null; the result lies somewhere on this object.
        Throws:
        NullPointerException - when point is null;
      • projectOrthogonalFractionalExtended

        public double projectOrthogonalFractionalExtended​(Point2d point)
                                                   throws NullPointerException
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned.
        Specified by:
        projectOrthogonalFractionalExtended in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        double; the fractional position of the projection of the point. This result cannot be NaN, but it may be outside the range 0.0 .. 1.0.
        Throws:
        NullPointerException - when point is null;
      • epsilonEquals

        public boolean epsilonEquals​(Ray2d other,
                                     double epsilonCoordinate,
                                     double epsilonDirection)
                              throws NullPointerException,
                                     IllegalArgumentException
        Compare this Directed with another Directed with specified tolerances in the coordinates and the angles.
        Specified by:
        epsilonEquals in interface Directed<Ray2d>
        Parameters:
        other - D; the point to compare with
        epsilonCoordinate - double; the upper bound of difference for one of the coordinates; use Double.POSITIVE_INFINITY if you do not want to check the coordinates
        epsilonDirection - double; the upper bound of difference for the direction(s); use Double.POSITIVE_INFINITY if you do not want to check the angles
        Returns:
        boolean; true if x, y, and z are less than epsilonCoordinate apart, and rotX, rotY and rotZ are less than epsilonRotation apart, otherwise false
        Throws:
        NullPointerException - when point is null
        IllegalArgumentException - epsilonCoordinate or epsilonRotation is NaN or negative
      • toString

        public String toString()
        Produce a string describing the Drawable using default conversion for the (double) coordinate values. Regrettably, it is not allowed to provide a default implementation here.
        Specified by:
        toString in interface Drawable<Point2d>
        Overrides:
        toString in class Point2d
        Returns:
        String; a string describing the Drawable
      • toString

        public String toString​(String doubleFormat,
                               boolean doNotIncludeClassName)
        Produce a String describing the Drawable.
        Specified by:
        toString in interface Drawable<Point2d>
        Overrides:
        toString in class Point2d
        Parameters:
        doubleFormat - String; a format string (something like "%6.3f") which will be used to render every coordinate value)
        doNotIncludeClassName - boolean; if true; the output of toString is not prefixed by the class name. This is useful for concatenating the textual representation of lots of Drawables (e.g. an array, or a List).
        Returns:
        String; textual representation of the Drawable