org.sunflow.core

## Class IntersectionState

- java.lang.Object
- - 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

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `IntersectionState.StackNode` Traversal stack node, helps with tree-based `AccelerationStructure` traversal.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IntersectionState()` Initializes all traversal stacks.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `IntersectionState.StackNode[]` | `getStack()` Get stack object for tree based `AccelerationStructure`s.
    `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 `AccelerationStructure`s.
      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