Package org.sunflow.core.camera

## Class PinholeLens

- java.lang.Object
- - org.sunflow.core.camera.PinholeLens

- All Implemented Interfaces:
    `CameraLens`, `RenderObject`

      public class PinholeLens
      extends java.lang.Object
      implements CameraLens

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PinholeLens()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Ray` | `getRay​(float x, float y, int imageWidth, int imageHeight, double lensX, double lensY, double time)` | Create a new `ray`to be cast through pixel (x,y) on the image plane.
    `boolean` | `update​(ParameterList pl, SunflowAPI api)` | Update this object given a list of parameters.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PinholeLens

          public PinholeLens()

  - ### Method Detail

    - #### update

          public boolean update​(ParameterList pl,
                                SunflowAPI api)

      Description copied from interface: `RenderObject`
      Update this object given a list of parameters. This method is guarenteed to be called at least once on every object, but it should correctly handle empty parameter lists. This means that the object should be in a valid state from the time it is constructed. This method should also return true or false depending on whether the update was succesfull or not.
      Specified by:
        `update` in interface `RenderObject`
      Parameters:
        `pl` - list of parameters to read from
        `api` - reference to the current scene
      Returns:
        `true` if the update is succesfull, `false` otherwise

    - #### getRay

          public Ray getRay​(float x,
                            float y,
                            int imageWidth,
                            int imageHeight,
                            double lensX,
                            double lensY,
                            double time)

      Description copied from interface: `CameraLens`
      Create a new `ray`to be cast through pixel (x,y) on the image plane. Two sampling parameters are provided for lens sampling. They are guarenteed to be in the interval [0,1). They can be used to perturb the position of the source of the ray on the lens of the camera for DOF effects. A third sampling parameter is provided for motion blur effects. Note that the `Camera` class already handles camera movement motion blur. Rays should be generated in camera space - that is, with the eye at the origin, looking down the -Z axis, with +Y pointing up.
      Specified by:
        `getRay` in interface `CameraLens`
      Parameters:
        `x` - x coordinate of the (sub)pixel
        `y` - y coordinate of the (sub)pixel
        `imageWidth` - image width in pixels
        `imageHeight` - image height in pixels
        `lensX` - x lens sampling parameter
        `lensY` - y lens sampling parameter
        `time` - time sampling parameter
      Returns:
        a new ray passing through the given pixel