Class SpotLight

  • All Implemented Interfaces:
    Light

    public class SpotLight
    extends AbstractLight
    A light source which emits a light of constant intensity in all directions.
    • Constructor Detail

      • SpotLight

        public SpotLight​(double lightX,
                         double lightY,
                         double lightZ,
                         double pointAtX,
                         double pointAtY,
                         double pointAtZ,
                         double specularExponent,
                         double limitingConeAngle,
                         java.awt.Color lightColor)
    • Method Detail

      • getLightX

        public double getLightX()
        Returns:
        the light's x position
      • getLightY

        public double getLightY()
        Returns:
        the light's y position
      • getLightZ

        public double getLightZ()
        Returns:
        the light's z position
      • getPointAtX

        public double getPointAtX()
        Returns:
        x-axis coordinate where the light points to
      • getPointAtY

        public double getPointAtY()
        Returns:
        y-axis coordinate where the light points to
      • getPointAtZ

        public double getPointAtZ()
        Returns:
        z-axis coordinate where the light points to
      • getSpecularExponent

        public double getSpecularExponent()
        Returns:
        light's specular exponent (focus)
      • getLimitingConeAngle

        public double getLimitingConeAngle()
        Returns:
        light's limiting cone angle
      • isConstant

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

        public final double getLightBase​(double x,
                                         double y,
                                         double z,
                                         double[] L)
        Computes the light vector in (x, y, z)
        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
        Returns:
        the intensity factor for this light vector.
      • getLight

        public final void getLight​(double x,
                                   double y,
                                   double z,
                                   double[] L)
        Computes the light vector in (x, y, z)
        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, x,y,z are scaled by light intensity.
      • getLight4

        public final void getLight4​(double x,
                                    double y,
                                    double z,
                                    double[] L)
        computes light vector in (x, y, z).
        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 4 where result is stored. 0,1,2 are x,y,z respectively of light vector (normalized). 3 is the intensity of the light at this point.
      • getLightRow4

        public double[][] getLightRow4​(double x,
                                       double y,
                                       double dx,
                                       int width,
                                       double[][] z,
                                       double[][] lightRow)