Class TLcdLOSRadarPropagationFunctionSkyBackground

java.lang.Object
com.luciad.tea.TLcdLOSRadarPropagationFunctionSkyBackground
All Implemented Interfaces:
ILcdLOSPropagationFunction, ILcdLOSRadarPropagationFunction

public class TLcdLOSRadarPropagationFunctionSkyBackground extends Object implements ILcdLOSRadarPropagationFunction
Computes the minimal heights from which one is visible around the center point of a line-of-sight coverage with the sky as background. These heights are assigned along the given azimuth and stored in the polar matrix view. This implementation takes the whole horizon of the line-of-sight coverage into account while checking for terrain background. If this horizon is too close, the results will be incorrect since terrain background just outside the horizon are not taken into account.

This propagation function needs an ILcdLOSPropagationFunction on which it will base its line-of-sight computations. The radar propagation function computes the minimal heights from which one is visible. The visibility with sky in background is computed using the resulting value of the last matrix entry corresponding to the given azimuth.

The matrix resulting from this propagation function can contain the following special values:

The following image gives a visual explanation of this propagation function. The green line denotes the result given this terrain profile and the visibility properties of the helicopter pilot. The thin black line corresponds to the line-of-sight coverage matrix, needed by this function.

Line-of-sight propagation with sky in background
  • Constructor Details

    • TLcdLOSRadarPropagationFunctionSkyBackground

      public TLcdLOSRadarPropagationFunctionSkyBackground(ILcdLOSRadarPropagationFunction aLOSRadarPropagationFunction, TLcdCoverageAltitudeMode aAltitudeMode)
      Creates a propagation function which computes the minimal height from which one is visible from the center point of a circular area with the sky as background. Note that the propagation function cannot be set to null. If this condition is not met, a NullPointerException will be thrown.
      Parameters:
      aLOSRadarPropagationFunction - The propagation function on which to base its computations.
      aAltitudeMode - The altitude mode indicating the definition of the resulting values.
      Throws:
      NullPointerException - when the argument aLOSRadarPropagationFunction is null.
      IllegalArgumentException -
      • if the argument aLOSRadarPropagationFunction does not use the following earth representation mode: TLcdEarthRepresentationMode.SPHERICAL_FIXED_RADIUS or TLcdEarthRepresentationMode.SPHERICAL_EULER_RADIUS or if it uses the altitude mode TLcdCoverageAltitudeMode.ABOVE_OBJECT,
      • if the aAltitudeMode is TLcdCoverageAltitudeMode.ABOVE_OBJECT and
      • if the argument aKFactor is smaller than or equal to zero.
    • TLcdLOSRadarPropagationFunctionSkyBackground

      public TLcdLOSRadarPropagationFunctionSkyBackground(ILcdLOSRadarPropagationFunction aLOSRadarPropagationFunction, TLcdCoverageAltitudeMode aAltitudeMode, TLcdLOSOptions aLOSOption)
      Creates a propagation function which computes the minimal height from which one is visible from the center point of a circular area with the sky as background. Note that the propagation function cannot be set to null. If this condition is not met, a NullPointerException will be thrown.
      Parameters:
      aLOSRadarPropagationFunction - The propagation function on which to base its computations.
      aAltitudeMode - The altitude mode indicating the definition of the resulting values.
      aLOSOption - A LOS option object containing parameters for the internals of this propagation function and its resulting coverages
      Throws:
      NullPointerException - when the argument aLOSRadarPropagationFunction is null.
      IllegalArgumentException -
      • if the argument aLOSRadarPropagationFunction does not use the following earth representation mode: TLcdEarthRepresentationMode.SPHERICAL_FIXED_RADIUS or TLcdEarthRepresentationMode.SPHERICAL_EULER_RADIUS or if it uses the altitude mode TLcdCoverageAltitudeMode.ABOVE_OBJECT,
      • if the aAltitudeMode is TLcdCoverageAltitudeMode.ABOVE_OBJECT and
      • if the argument aKFactor is smaller than or equal to zero.
  • Method Details

    • createLOSCoverageMatrix

      public ILcdLOSCoverageMatrix createLOSCoverageMatrix(ILcdLOSCoverage aLOSCoverage, ILcdGeoReference aMatrixReference)
      Description copied from interface: ILcdLOSPropagationFunction
      Creates a coverage matrix using the line-of-sight coverage aLOSCoverage and the matrix reference aMatrixReference. The result of this method is used as input parameter for the method applyForAzimuthSFCT, which will store the actual matrix values. The matrix should be consistent with the given coverage. This means that all matrix rows and columns represent evenly spaced radii and azimuths as defined by the radial and angular step sizes of the line-of-sight coverage.

      The method ILcdLOSPropagationFunction.initialize(com.luciad.tea.ILcdLOSCoverage, com.luciad.reference.ILcdGeoReference) is called with the same arguments as supplied with this method.

      The ILcdLOSCoverageMatrix created by this method is guaranteed to be capable of determining its own associatedPointX and associatedPointY properties. These values are not calculated by this ILcdPropagationFunction . An ILcdLOSPropagationFunction does not modify the values of the associatedPointX and associatedPointY for its created ILcdLOSCoverageMatrix.

      Specified by:
      createLOSCoverageMatrix in interface ILcdLOSPropagationFunction
      Parameters:
      aLOSCoverage - The covered area and the intermediate step sizes.
      aMatrixReference - The reference in which this matrix is defined.
      Returns:
      the created coverage matrix.
    • initialize

      public void initialize(ILcdLOSCoverage aLOSCoverage, ILcdGeoReference aMatrixReference)
      Description copied from interface: ILcdLOSPropagationFunction
      Initialize the propagation function with the given coverage aLOSCoverage and the given matrix reference aMatrixReference. For performance reasons, it is recommended that this method initializes all fields that are common to all computations or which do not depend on a specific azimuth.
      Specified by:
      initialize in interface ILcdLOSPropagationFunction
      Parameters:
      aLOSCoverage - The covered area to use.
      aMatrixReference - The matrix reference in which to compute the matrix values.
    • applyForAzimuthSFCT

      public void applyForAzimuthSFCT(double aAzimuth, ILcdLOSCoverageMatrix aLOSCoverageMatrixSFCT)
      Computes the minimal heights from which one is visible around the center point of a line-of-sight coverage with the sky as background for a given azimuth and stores the resulting heights in the line-of-sight coverage matrix.

      Note that this implementation assumes that the default value of a matrix entry corresponds to the value for invisible points (which is ILcdLOSRadarPropagationFunction.INVISIBLE). Refer to the class documentation for more information about the different special values.

      Specified by:
      applyForAzimuthSFCT in interface ILcdLOSPropagationFunction
      Parameters:
      aAzimuth - The azimuth in degrees.
      aLOSCoverageMatrixSFCT - The coverage matrix to update.
      Throws:
      NullPointerException - if the aLOSCoverageMatrixSFCT is null.
    • getEarthRepresentationMode

      public TLcdEarthRepresentationMode getEarthRepresentationMode()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the earth representation mode used by this instance.
      Specified by:
      getEarthRepresentationMode in interface ILcdLOSRadarPropagationFunction
      Returns:
      the earth representation mode used by this instance.
    • getAltitudeMode

      public TLcdCoverageAltitudeMode getAltitudeMode()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the altitude mode indicating the definition of the resulting line-of-sight values.
      Specified by:
      getAltitudeMode in interface ILcdLOSRadarPropagationFunction
      Returns:
      the altitude mode indicating the definition of the resulting line-of-sight values.
    • getKFactor

      public double getKFactor()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the K-factor indicating the reflection of radar waves on the atmosphere. For radar computations, values should be greater than 1, usually 4/3. Setting the value equal to 1 will yield the same results as visual line-of-sight computations.
      Specified by:
      getKFactor in interface ILcdLOSRadarPropagationFunction
      Returns:
      the K-factor indicating the reflection of radar waves on the atmosphere.
    • getMaxVerticalAngle

      public double getMaxVerticalAngle()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the maximum angle of the vertical extent in degrees, starting from 0 at the ground to 180 at zenith. It is the maximum vertical angle when the radar tilt angle is set to zero.
      Specified by:
      getMaxVerticalAngle in interface ILcdLOSRadarPropagationFunction
      Returns:
      the maximum angle of the vertical extent in degrees.
    • getMinVerticalAngle

      public double getMinVerticalAngle()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the minimum angle of the vertical extent in degrees, starting from 0 at the ground to 180 at zenith. It is the minimum vertical angle when the radar tilt angle is set to zero.
      Specified by:
      getMinVerticalAngle in interface ILcdLOSRadarPropagationFunction
      Returns:
      the minimum angle of the vertical extent in degrees.
    • getMaxRadarTiltAngle

      public double getMaxRadarTiltAngle()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the maximum radar tilt angle in degrees, starting from 0 at the horizontal plane to 90 at zenith.
      Specified by:
      getMaxRadarTiltAngle in interface ILcdLOSRadarPropagationFunction
      Returns:
      the maximum radar tilt angle in degrees.
    • getMaxRadarTiltAzimuth

      public double getMaxRadarTiltAzimuth()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the azimuth in degrees where the maximum radar tilt angle occurs.
      Specified by:
      getMaxRadarTiltAzimuth in interface ILcdLOSRadarPropagationFunction
      Returns:
      the azimuth in degrees where the maximum radar tilt angle occurs.
    • getTerrainElevationProvider

      public ALcdTerrainElevationProvider getTerrainElevationProvider()
      Description copied from interface: ILcdLOSRadarPropagationFunction
      Returns the elevation provider used to retrieve the terrain elevation data.
      Specified by:
      getTerrainElevationProvider in interface ILcdLOSRadarPropagationFunction
      Returns:
      the elevation provider used to retrieve the terrain elevation data.