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.
• ## Field Summary

Fields
Modifier and Type
Field
Description
`Vector3f`
`direction`
The direction of the ray.
`float`
`limit`
The length of the ray (defaults to +Infinity).
`Vector3f`
`origin`
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
`Ray`
`clone()`
Create a copy of this ray.
`int`
```collideWith(Collidable other, CollisionResults results)```
Check collision with another Collidable.
`float`
`distanceSquared(Vector3f point)`
Calculate the squared distance from this ray to the specified point.
`Vector3f`
`getDirection()`
`getDirection` retrieves the direction vector of the ray.
`float`
`getLimit()`
`getLimit` returns the limit of the ray, aka the length.
`Vector3f`
`getOrigin()`
`getOrigin` retrieves the origin point of the ray.
`float`
```intersects(Vector3f v0, Vector3f v1, Vector3f v2)```

`boolean`
```intersectsWherePlane(Plane p, Vector3f loc)```

`boolean`
```intersectWhere(Triangle t, Vector3f loc)```
`intersectWhere` determines if the Ray intersects a triangle.
`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.
`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.
`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.
`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.
`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(Vector3f direction)`
`setDirection` sets the direction vector of the ray.
`void`
`setLimit(float limit)`
`setLimit` sets the limit of the ray.
`void`
`setOrigin(Vector3f origin)`
`setOrigin` sets the origin of the ray.
`String`
`toString()`
Represent this ray as a String.
`void`
`write(JmeExporter e)`
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)

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 `CollisionResult`s.
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.
• ### 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

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