Package com.jme3.math

Class Ray

java.lang.Object
com.jme3.math.Ray
All Implemented Interfaces:
Collidable, Savable, Serializable, Cloneable

public final class Ray extends Object implements Savable, Cloneable, Collidable, Serializable
Ray defines a line segment which has an origin and a direction. That is, a point and an infinite ray is cast from this point. The ray is defined by the following equation: R(t) = origin + t*direction for t >= 0.
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    The direction of the ray.
    float
    The length of the ray (defaults to +Infinity).
    The ray's beginning point.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Ray()
    Constructor instantiates a new Ray object.
    Ray(Vector3f origin, Vector3f direction)
    Constructor instantiates a new Ray object.
  • Method Summary

    Modifier and Type
    Method
    Description
    Create a copy of this ray.
    int
    Check collision with another Collidable.
    float
    Calculate the squared distance from this ray to the specified point.
    getDirection retrieves the direction vector of the ray.
    float
    getLimit returns the limit of the ray, aka the length.
    getOrigin retrieves the origin point of the ray.
    float
     
    boolean
     
    boolean
    intersectWhere determines if the Ray intersects a triangle.
    boolean
    intersectWhere determines if the Ray intersects a triangle defined by the specified points and if so it stores the point of intersection in the given loc vector.
    boolean
    intersectWherePlanar determines if the Ray intersects a triangle and if so it stores the point of intersection in the given loc vector as t, u, v where t is the distance from the origin to the point of intersection and u,v is the intersection point in terms of the triangle plane.
    boolean
    intersectWherePlanar determines if the Ray intersects a triangle defined by the specified points and if so it stores the point of intersection in the given loc vector as t, u, v where t is the distance from the origin to the point of intersection and u,v is the intersection point in terms of the triangle plane.
    boolean
    intersectWherePlanar determines if the Ray intersects a quad defined by the specified points and if so it stores the point of intersection in the given loc vector as t, u, v where t is the distance from the origin to the point of intersection and u,v is the intersection point in terms of the quad plane.
    void
    read(JmeImporter importer)
    De-serialize this ray from the specified importer, for example when loading from a J3O file.
    void
    set(Ray source)
    Copies information from a source ray into this ray.
    void
    setDirection sets the direction vector of the ray.
    void
    setLimit(float limit)
    setLimit sets the limit of the ray.
    void
    setOrigin sets the origin of the ray.
    Represent this ray as a String.
    void
    Serialize this ray to the specified exporter, for example when saving to a J3O file.

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • origin

      public Vector3f origin
      The ray's beginning point.
    • direction

      public Vector3f direction
      The direction of the ray.
    • limit

      public float limit
      The length of the ray (defaults to +Infinity).
  • Constructor Details

    • Ray

      public Ray()
      Constructor instantiates a new Ray object. As default, the origin is (0,0,0) and the direction is (0,0,1).
    • Ray

      public Ray(Vector3f origin, Vector3f direction)
      Constructor instantiates a new Ray object. The origin and direction are given.
      Parameters:
      origin - the origin of the ray.
      direction - the direction the ray travels in.
  • Method Details

    • intersectWhere

      public boolean intersectWhere(Triangle t, Vector3f loc)
      intersectWhere determines if the Ray intersects a triangle. It then stores the point of intersection in the given loc vector
      Parameters:
      t - the Triangle to test against.
      loc - storage vector to save the collision point in (if the ray collides)
      Returns:
      true if the ray collides.
    • intersectWhere

      public boolean intersectWhere(Vector3f v0, Vector3f v1, Vector3f v2, Vector3f loc)
      intersectWhere determines if the Ray intersects a triangle defined by the specified points and if so it stores the point of intersection in the given loc vector.
      Parameters:
      v0 - first point of the triangle.
      v1 - second point of the triangle.
      v2 - third point of the triangle.
      loc - storage vector to save the collision point in (if the ray collides) if null, only boolean is calculated.
      Returns:
      true if the ray collides.
    • intersectWherePlanar

      public boolean intersectWherePlanar(Triangle t, Vector3f loc)
      intersectWherePlanar determines if the Ray intersects a triangle and if so it stores the point of intersection in the given loc vector as t, u, v where t is the distance from the origin to the point of intersection and u,v is the intersection point in terms of the triangle plane.
      Parameters:
      t - the Triangle to test against.
      loc - storage vector to save the collision point in (if the ray collides) as t, u, v
      Returns:
      true if the ray collides.
    • intersectWherePlanar

      public boolean intersectWherePlanar(Vector3f v0, Vector3f v1, Vector3f v2, Vector3f loc)
      intersectWherePlanar determines if the Ray intersects a triangle defined by the specified points and if so it stores the point of intersection in the given loc vector as t, u, v where t is the distance from the origin to the point of intersection and u,v is the intersection point in terms of the triangle plane.
      Parameters:
      v0 - first point of the triangle.
      v1 - second point of the triangle.
      v2 - third point of the triangle.
      loc - storage vector to save the collision point in (if the ray collides) as t, u, v
      Returns:
      true if the ray collides.
    • intersects

      public float intersects(Vector3f v0, Vector3f v1, Vector3f v2)
    • intersectWherePlanarQuad

      public boolean intersectWherePlanarQuad(Vector3f v0, Vector3f v1, Vector3f v2, Vector3f loc)
      intersectWherePlanar determines if the Ray intersects a quad defined by the specified points and if so it stores the point of intersection in the given loc vector as t, u, v where t is the distance from the origin to the point of intersection and u,v is the intersection point in terms of the quad plane. One edge of the quad is [v0,v1], another one [v0,v2]. The behaviour thus is like intersectWherePlanar(Vector3f, Vector3f, Vector3f, Vector3f) except for the extended area, which is equivalent to the union of the triangles [v0,v1,v2] and [-v0+v1+v2,v1,v2].
      Parameters:
      v0 - top left point of the quad.
      v1 - top right point of the quad.
      v2 - bottom left point of the quad.
      loc - storage vector to save the collision point in (if the ray collides) as t, u, v
      Returns:
      true if the ray collides with the quad.
    • intersectsWherePlane

      public boolean intersectsWherePlane(Plane p, Vector3f loc)
      Parameters:
      p - the Plane to test for collision (not null, unaffected)
      loc - storage for the location of the intersection (not null, modified when returning true)
      Returns:
      true if the ray collides with the given Plane
    • collideWith

      public int collideWith(Collidable other, CollisionResults results)
      Description copied from interface: Collidable
      Check collision with another Collidable.
      Specified by:
      collideWith in interface Collidable
      Parameters:
      other - The object to check collision against
      results - Will contain the list of CollisionResults.
      Returns:
      how many collisions were found between this and other
    • distanceSquared

      public float distanceSquared(Vector3f point)
      Calculate the squared distance from this ray to the specified point.
      Parameters:
      point - location vector of the input point (not null, unaffected)
      Returns:
      the square of the minimum distance (≥0)
    • getOrigin

      public Vector3f getOrigin()
      getOrigin retrieves the origin point of the ray.
      Returns:
      the origin of the ray.
    • setOrigin

      public void setOrigin(Vector3f origin)
      setOrigin sets the origin of the ray.
      Parameters:
      origin - the origin of the ray.
    • getLimit

      public float getLimit()
      getLimit returns the limit of the ray, aka the length. If the limit is not infinity, then this ray is a line with length limit.
      Returns:
      the limit of the ray, aka the length.
    • setLimit

      public void setLimit(float limit)
      setLimit sets the limit of the ray.
      Parameters:
      limit - the limit of the ray.
      See Also:
    • getDirection

      public Vector3f getDirection()
      getDirection retrieves the direction vector of the ray.
      Returns:
      the direction of the ray.
    • setDirection

      public void setDirection(Vector3f direction)
      setDirection sets the direction vector of the ray.
      Parameters:
      direction - the direction of the ray.
    • set

      public void set(Ray source)
      Copies information from a source ray into this ray.
      Parameters:
      source - the ray to copy information from
    • toString

      public String toString()
      Represent this ray as a String. The format is: Ray [Origin: (X.X, Y.Y, Z.Z), Direction: (X.X, Y.Y, Z.Z)]
      Overrides:
      toString in class Object
      Returns:
      a descriptive string of text (not null, not empty)
    • write

      public void write(JmeExporter e) throws IOException
      Serialize this ray to the specified exporter, for example when saving to a J3O file.
      Specified by:
      write in interface Savable
      Parameters:
      e - (not null)
      Throws:
      IOException - from the exporter
    • read

      public void read(JmeImporter importer) throws IOException
      De-serialize this ray from the specified importer, for example when loading from a J3O file.
      Specified by:
      read in interface Savable
      Parameters:
      importer - (not null)
      Throws:
      IOException - from the importer
    • clone

      public Ray clone()
      Create a copy of this ray.
      Overrides:
      clone in class Object
      Returns:
      a new instance, equivalent to this one