com.jme3.math

## Class Ray

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

```public final class Ray
extends java.lang.Object
implements Savable, java.lang.Cloneable, Collidable, java.io.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.
Serialized Form
• ### Field Summary

Fields
Modifier and Type Field and Description
`Vector3f` `direction`
The direction of the ray.
`float` `limit`
`Vector3f` `origin`
The ray's beginning point.
• ### Constructor Summary

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

All Methods
Modifier and Type Method and Description
`Ray` `clone()`
`int` ```collideWith(Collidable other, CollisionResults results)```
Check collision with another Collidable.
`float` `distanceSquared(Vector3f 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 e)`
`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.
`java.lang.String` `toString()`
`void` `write(JmeExporter e)`
• ### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
• ### Field Detail

• #### origin

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

`public Vector3f direction`
The direction of the ray.
• #### limit

`public float limit`
• ### Constructor Detail

• #### 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 Detail

• #### 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` -
`loc` -
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)`
• #### 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.
`getLimit()`
• #### 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 java.lang.String toString()`
Overrides:
`toString` in class `java.lang.Object`
• #### write

```public void write(JmeExporter e)
throws java.io.IOException```
Specified by:
`write` in interface `Savable`
Throws:
`java.io.IOException`
```public void read(JmeImporter e)
`read` in interface `Savable`
`java.io.IOException`
`public Ray clone()`
`clone` in class `java.lang.Object`