Class AbstractLight

  • All Implemented Interfaces:
    Light
    Direct Known Subclasses:
    DistantLight, PointLight, SpotLight

    public abstract class AbstractLight
    extends java.lang.Object
    implements Light
    An abstract implementation of the Light interface.
    Version:
    $Id: AbstractLight.java 1733416 2016-03-03 07:07:13Z gadams $
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private double[] color
      Light color in linear sRGB
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractLight​(java.awt.Color color)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double[] getColor​(boolean linear)  
      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 isConstant()  
      void setColor​(java.awt.Color newColor)
      Sets the new light color, newColor should be in sRGB.
      static double sRGBToLsRGB​(double value)
      Conversion function for light values.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.apache.batik.ext.awt.image.Light

        getLight
    • Field Detail

      • color

        private double[] color
        Light color in linear sRGB
    • Constructor Detail

      • AbstractLight

        public AbstractLight​(java.awt.Color color)
    • Method Detail

      • sRGBToLsRGB

        public static final double sRGBToLsRGB​(double value)
        Conversion function for light values.
      • getColor

        public double[] getColor​(boolean linear)
        Specified by:
        getColor in interface Light
        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

        public void setColor​(java.awt.Color newColor)
        Sets the new light color, newColor should be in sRGB.
        Specified by:
        setColor in interface Light
      • isConstant

        public boolean isConstant()
        Specified by:
        isConstant in interface Light
        Returns:
        true if the light is constant over the whole surface
      • getLightMap

        public 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.
        Specified by:
        getLightMap in interface Light
        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

        public 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.
        Specified by:
        getLightRow in interface Light
        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.