Class Name: Cone Directional Light

Superclass - Directional Light Behavior

Definition

A Cone Directional Light is a light whose intensity varies depending on your position relative to the light's location, direction, and shape. This light takes the shape of a cone (which can be elliptical).

A Cone Directional Light can have a plane that divides the light cone into an upper and a lower section along the body of the cone. The upper section receives the primary color while the lower section receives the secondary color, if one is used.

Primary Page in DRM Diagram:

Example

  1. The Cone Directional Light has a primary color that is a Color Index that has an intensity_level value of 0.8. The minimum_color_intensity is 0.2. The has_plane flag is false and the use_full_intensity flag is false. The Lobe Data component has horizontal_width=40 and vertical_width=40.

    equation:

    final_intensity = minimum_color_intensity + ((((width / 2.0) - degrees_away_from_direction_vector) / (width / 2.0)) * (full_intensity - minimum_color_intensity))

    If my position from the light direction vector is 15 degrees in the horizontal direction then the final_intensity is 0.35. 0.2 + ((((40.0 / 2.0) - 15.0) / (40.0 / 2.0)) * (0.8 - 0.2))

    If my position from the light direction vector is 25 degrees in the horizontal direction then the final_intensity is 0.2, because I am outside the horizontal width.

  2. The Cone Directional Light has a primary color that is an Inline Color (which makes the full intensity 1.0). The minimum_color_intensity is 0.5. The has_plane flag is false and the use_full_intensity flag is true. The Lobe Data component has horizontal_width=90 and vertical_width=90.

    If my position from the light direction vector is 40 degrees in the horizontal direction, then the final_intensity is 1.0 since the use_full_intensity flag is true and I am inside the horizontal width.

    If my position from the light direction vector is 50 degrees in the horizontal direction, then the final_intensity is 0.5, since I am outside the horizontal width.

  3. The Cone Directional Light has both a primary and a secondary color that are Color Indexes that have intensity fields of 0.8. The minimum_color_intensity is 0.0. The has_plane flag is false and the use_full_intensity flag is true. The Lobe Data component has horizontal_width=70 and vertical_width=90.

    If my position from the light direction vector is 40 degrees in the vertical direction, then I see the primary color with an intensity of 0.8 since the use_full_intensity flag is true and I am inside the vertical width. If my position from the light direction vector is 40 degrees in the horizontal direction, then I see the secondary color with an intensity of 0.8, since the minimum_color_intensity is 0.0 and I am outside the horizontal width.

  4. The Cone Directional Light has both a primary and a secondary color that are Color Indexes that have intensity fields of 0.8. The minimum_color_intensity is 0.0. The has_plane flag is true and the plane_angular_offset is 20. The Lobe Data component has horizontal_width=70 and vertical_width=90. The minimum_color_intensity value is 0.0.

    If my position from the light direction vector is 25 degrees in the vertical direction, towards the positive end of the vertical axis vector, then I see the primary color with an intensity of 0.8. This is because the minimum_color_intensity value is 0.0 and I am inside the vertical width, in the upper section of the cone.

    If my position from the light_direction_vector is 15 degrees in the vertical direction, towards the positive end of the vertical axis vector, then I see the secondary color with an intensity of 0.8. This is because the minimum_color_intensity value is 0.0 and I am inside the vertical width, in the lower section of the cone.

FAQs

--FAQs needed here --

Constraints

None.

Composed of (one-way)(inherited)

Component of (one-way)(inherited)

Field Elements

SE_BOOLEAN has_plane; (notes)
SE_FLOAT64 plane_angular_offset; (notes)
SE_BOOLEAN use_full_intensity; (notes)
SE_FLOAT64 minimum_color_intensity; (notes)
SE_BOOLEAN invisible_behind; (notes)

Notes

Composed of Notes

Lobe_Data

 lobe shape

Fields Notes

has_plane

 A flag indicating that a plane, based at the cone apex and extending
 along the body of the cone, divides the light cone into an upper and
 a lower section. The upper section receives the primary color. If a
 secondary color is used, the lower section receives it.

plane_angular_offset

 This value defines the angular offset of the plane that
 may divide the light into an upper and a lower section.
 It is measured in degrees (-180 to 180) from the lobe's
 light direction vector
 (<Lobe Data> component Reference_Vector of type SE_LIGHT_DIRECTION)
 along its vertical axis vector
 (<Lobe Data> component Reference_Vector of type SE_VERTICAL_AXIS).
 The resulting upper section of the light is taken to be
 between the plane and the positive end of the
 vertical axis vector.
 This value is ignored if has_plane is false.

use_full_intensity

 A flag, if true indicates that the full intensity of the
 light is shown in the cone shaped area. If this flag is
 false, then the intensity of the light decreases (towards
 the minimum_color_intensity value) as you move away from
 the direction vector.

minimum_color_intensity

 This value (between 0.0 and 1.0) is used in conjunction
 with the intensity value of the primary color. If the
 primary color is a <Color_Index> then the full intensity
 will be the intensity field of that class. If the
 primary color is an <Inline Color> then the full intensity
 is 1.0.
 If your location is in the direct path of the
 light direction vector
 (<Lobe Data> component Reference_Vector of type SE_LIGHT_DIRECTION),
 then you receive the full (intensity) value.
 As you move away from the
 light direction vector (but still lie within the
 horizontal and vertical widths), your intensity decreases
 toward the minimum_color_intensity value (unless the
 use_full_intensity flag is TRUE). Once you get outside the
 horizontal and vertical width area, then the intensity is
 that of the minimum_color_intensity value.
 If the minimum_color_intensity value is 0.0 and you're
 outside the vertical and horizontal widths, the secondary
 color will be seen. If no secondary color is used then
 nothing will be seen.

invisible_behind

 if this flag is set, then the directional light is not
 seen if you're behind the plane of the directional light.

Prev: Color Table Library. Next: Conformal Behavior. Up:Index.