org.sunflow.core
Class IntersectionState

java.lang.Object
  extended by org.sunflow.core.IntersectionState

public final class IntersectionState
extends java.lang.Object

This class is used to store ray/object intersections. It also provides additional data to assist AccelerationStructure objects with traversal.


Nested Class Summary
static class IntersectionState.StackNode
          Traversal stack node, helps with tree-based AccelerationStructure traversal.
 
Constructor Summary
IntersectionState()
          Initializes all traversal stacks.
 
Method Summary
 IntersectionState.StackNode[] getStack()
          Get stack object for tree based AccelerationStructures.
 float getTime()
          Returns the time at which the intersection should be calculated.
 boolean hit()
          Checks to see if a hit has been recorded.
 void setIntersection(int id)
          Record an intersection with the specified primitive id.
 void setIntersection(int id, float u, float v)
          Record an intersection with the specified primitive id.
 void setIntersection(int id, float u, float v, float w)
          Record an intersection with the specified primitive id.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IntersectionState

public IntersectionState()
Initializes all traversal stacks.

Method Detail

getTime

public float getTime()
Returns the time at which the intersection should be calculated. This will be constant for a given ray-tree. This value is guarenteed to be between the camera's shutter open and shutter close time.

Returns:
time value

getStack

public final IntersectionState.StackNode[] getStack()
Get stack object for tree based AccelerationStructures.

Returns:
array of stack nodes

hit

public final boolean hit()
Checks to see if a hit has been recorded.

Returns:
true if a hit has been recorded, false otherwise

setIntersection

public final void setIntersection(int id)
Record an intersection with the specified primitive id. The parent object is assumed to be the current instance. The u and v parameters are used to pinpoint the location on the surface if needed.

Parameters:
id - primitive id of the intersected object

setIntersection

public final void setIntersection(int id,
                                  float u,
                                  float v)
Record an intersection with the specified primitive id. The parent object is assumed to be the current instance. The u and v parameters are used to pinpoint the location on the surface if needed.

Parameters:
id - primitive id of the intersected object
u - u surface paramater of the intersection point
v - v surface parameter of the intersection point

setIntersection

public final void setIntersection(int id,
                                  float u,
                                  float v,
                                  float w)
Record an intersection with the specified primitive id. The parent object is assumed to be the current instance. The u and v parameters are used to pinpoint the location on the surface if needed.

Parameters:
id - primitive id of the intersected object
u - u surface paramater of the intersection point
v - v surface parameter of the intersection point