Interface Light

All Known Implementing Classes:
AbstractLight, DistantLight, PointLight, SpotLight

public interface Light
Top level interface to model a light element. A light is responsible for computing the light vector on a given point of a surface. A light is typically in a 3 dimensional space and the methods assumes the surface is at elevation 0.
Version:
$Id: Light.java 1733416 2016-03-03 07:07:13Z gadams $
  • Method Summary

    Modifier and Type
    Method
    Description
    double[]
    getColor(boolean linear)
     
    void
    getLight(double x, double y, double z, double[] L)
    Computes the light vector in (x, y)
    double[][][]
    getLightMap(double x, double y, double dx, double dy, int width, int height, double[][][] z)
    Returns a light map, starting in (x, y) with dx, dy increments, a given width and height, and z elevations stored in the fourth component on the N array.
    double[][]
    getLightRow(double x, double y, double dx, int width, double[][] z, double[][] lightRow)
    Returns a row of the light map, starting at (x, y) with dx increments, a given width, and z elevations stored in the fourth component on the N array.
    boolean
     
    void
    setColor(Color color)
    Sets the light color to a new value
  • Method Details

    • isConstant

      boolean isConstant()
      Returns:
      true if the light is constant over the whole surface
    • getLight

      void getLight(double x, double y, double z, double[] L)
      Computes the light vector in (x, y)
      Parameters:
      x - x-axis coordinate where the light should be computed
      y - y-axis coordinate where the light should be computed
      z - z-axis coordinate where the light should be computed
      L - array of length 3 where the result is stored
    • getLightMap

      double[][][] getLightMap(double x, double y, double dx, double dy, int width, int height, double[][][] z)
      Returns a light map, starting in (x, y) with dx, dy increments, a given width and height, and z elevations stored in the fourth component on the N array.
      Parameters:
      x - x-axis coordinate where the light should be computed
      y - y-axis coordinate where the light should be computed
      dx - delta x for computing light vectors in user space
      dy - delta y for computing light vectors in user space
      width - number of samples to compute on the x axis
      height - number of samples to compute on the y axis
      z - array containing the z elevation for all the points
      Returns:
      an array of height rows, width columns where each element is an array of three components representing the x, y and z components of the light vector.
    • getLightRow

      double[][] getLightRow(double x, double y, double dx, int width, double[][] z, double[][] lightRow)
      Returns a row of the light map, starting at (x, y) with dx increments, a given width, and z elevations stored in the fourth component on the N array.
      Parameters:
      x - x-axis coordinate where the light should be computed
      y - y-axis coordinate where the light should be computed
      dx - delta x for computing light vectors in user space
      width - number of samples to compute on the x axis
      z - array containing the z elevation for all the points
      lightRow - array to store the light info to, if null it will be allocated for you and returned.
      Returns:
      an array width columns where each element is an array of three components representing the x, y and z components of the light vector.
    • getColor

      double[] getColor(boolean linear)
      Parameters:
      linear - if true the color is returned in the Linear sRGB colorspace otherwise the color is in the gamma corrected sRGB color space.
      Returns:
      the light's color
    • setColor

      void setColor(Color color)
      Sets the light color to a new value