Package 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 | Description
    --- | --- | ---
    `static class` | `IntersectionState.StackNode` | Traversal stack node, helps with tree-based `AccelerationStructure` traversal.

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | 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