Main Content

llarangeangle

Propagation range between two geolocations

Since R2022b

    Description

    rs = llarangeangle(lla1,lla2) computes the propagation range rs from one geolocation lla1 to another geolocation lla2. The propagation range is computed using an effective earth radius factor of 4/3 for a spherical Earth. If the destination is located beyond the range of the horizon of the starting location, then rs is Inf.

    example

    rs = llarangeangle(___,K) also specifies the effective earth radius factor K.

    example

    rs = llarangeangle(lla1,lla2,laxes1) also specifies the local orientation axes laxes1 of the departure geolocation.

    example

    rs = llarangeangle(lla1,lla2,laxes1,laxes2) also specifies the local orientation axes laxes2 arrival point geolocation.

    example

    [rs,aod,aoa] = llarangeangle(___) also returns the departure angle aod at the starting location and the path angle of arrival aoa at the destination.

    example

    Examples

    collapse all

    Find the propagation range between two points on the earth using the default effective earth radius of 4/3.

    Specify the geolocation of the first point.

    lat1 = 42.861119;
    lon1 = 72.108272;
    alt1 = 936.95;

    Specify the geolocation of the second point.

    lat2 = 42.384144;
    lon2 = 71.173108;
    alt2 = 55.7784;

    Call the llarangeangle function.

    lla1 = [lat1 lon1 alt1];
    lla2 = [lat2 lon2 alt2];
    [d,aod,aoa] = llarangeangle(lla1,lla2)
    d = 
    9.3111e+04
    
    aod = 2×1
    
     -124.4107
        0.8568
    
    
    aoa = 2×1
    
       54.9561
       -0.2276
    
    

    Compute the propagation range.

    Compute the propagated range and departure angles from a transmitter at Norfolk, Virginia (37N, 76W), with an altitude of 20 km, to a receiver at Hickman, Virginia (37N, 80W), with an altitude of 300 m. Assume the effective earth radius factor is 1.16.

    lla1 = [37 -76 20e3];
    lla2 = [37 -80 300];
    [d,aod,aoa] = llarangeangle(lla1,lla2,1.16)
    d = 
    3.5634e+05
    
    aod = 2×1
    
      -88.7961
        4.5457
    
    
    aoa = 2×1
    
       88.7961
       -1.7908
    
    

    Compute the propagation range from a source point to two closely-spaced arrival points. Use an effective earth radius factor of 1.36

    Specify the source geolocation.

    lat1 = 42.861119;
    lon1 = 72.108272;
    alt1 = 936.95;

    Specify the first arrival geolocation.

    lat2 = 42.384144;
    lon2 = 71.173108;
    alt2 = 55.7784;

    Specify the second arrival geolocation.

    lat3 = 42.384500;
    lon3 = 71.173000;
    alt3 = 20;

    Compute the range in kilometers between the positions.

    lla1 = [lat1 lon1 alt1];
    lla2 = [lat2 lon2 alt2; lat3 lon3 alt3];
    rs = llarangeangle(lla1,lla2,1.36)/1000.0
    rs = 1×2
    
       93.1116   93.0963
    
    

    Compute the propagation range between two points. Set the local orientation axes at the departure and arrival points.

    Specify the geolocation and local orientation axes of the departure point.

    lat1 = 42.861119;
    lon1 = 72.108272;
    alt1 = 936.95;
    laxes1 = rotz(30);

    Specify the geolocation and local orientation axes of the arrival point.

    lat2 = 42.384144;
    lon2 = 71.173108;
    alt2 = 55.7784;
    laxes2 = rotx(45);

    Compute the propagation range in kilometers.

    rs = llarangeangle([lat1 lon1 alt1], ...
        [lat2 lon2 alt2],4/3,laxes1,laxes2)/1000.0
    rs = 
    93.1115
    

    Compute the propagation range between two points. Set the local orientation axes at the departure point.

    Specify the geolocation of the departure point.

    lat1 = 42.861119;
    lon1 = 72.108272;
    alt1 = 936.95;

    Specify the geolocation of the arrival point.

    lat2 = 42.384144;
    lon2 = 71.173108;
    alt2 = 55.7784;

    Choose a local coordinate axes matrix at the departure point.

    laxes1 = rotz(30);

    Compute the propagation range in kilometers.

    rs = llarangeangle([lat1 lon1 alt1],[lat2 lon2 alt2],4/3,laxes1)/1000.0
    rs = 
    93.1115
    

    Input Arguments

    collapse all

    First geolocation, specified as an M-by-3 real-valued matrix. Each row defines a different geolocation in the form [latitude longitude altitude]. Latitude values lie in the range [-90 90] with zero at the Equator. Longitude values lie in the range [-180 180] with zero at Greenwich. Altitude values are measured from mean sea level (MSL). Latitude and longitude units are in degrees. Altitude units are in meters.

    If both lla1 and lla2 have multiple rows, then lla1 and lla2 must have identical sizes. Each row in lla1 corresponds to a row in lla2.

    Example: [45,0,100]

    Data Types: single | double

    Second geolocation, specified as an M-by-3 real-valued matrix. Each row defines a different geolocation in the form [latitude longitude altitude]. Latitude values lie in the range [-90 90] with zero at the Equator. Longitude values lie in the range [-180 180] with zero at Greenwich. Altitude values are measured from mean sea level (MSL). Latitude and longitude units are in degrees. Altitude units are in meters.

    If both lla1 and lla2 have multiple rows, then lla1 and lla2 must have identical sizes. Each row in lla1 corresponds to a row in lla2.

    Example: [46,0,100]

    Data Types: single | double

    Effective earth radius factor, specified as a positive scalar. The default value is the effective radius returned by effearthradius, which is 4/3. Units are dimensionless.

    Data Types: single | double

    Local orientation axes of departure, specified as a real-valued 3-by-3 matrix or a 3-by-3-by-M real-valued array. If laxes1 is a matrix, then all locations specified in lla1 have the same orientation. Each column in laxes1 specifies the x, y, and z coordinate axes in the form of [x;y;z] in ECEF coordinates. If laxes1 is a 3-by-3-by-M array, then each page corresponds to a location specified in lla1. This argument has no impact on the value of rs. Units are dimensionless.

    Data Types: double

    Local orientation axes of arrival, specified as a 3-by-3 real-valued matrix or a 3-by-3-by-M real-valued array. If laxes2 is a matrix, then all locations specified in lla2 have the same orientation. Each column in laxes2 specifies the x, y, and z coordinate axes in the form of [x;y;z] in earth-centered earth fixed (ECEF) coordinates. If laxes2 is a 3-by-3-by-M array, then each page corresponds to a location specified in lla2. This argument has no impact on the value of rs. Units are dimensionless.

    Data Types: double

    Output Arguments

    collapse all

    Propagation range, returned as a scalar or real-valued length-M vector. M is the number of geolocations specified in the lla1 and lla2 arguments.

    Data Types: double

    Angle of departure of signal from geolocation lla1 to geolocation lla2. aod is a 2-by-M matrix whose columns represent the departure directions in the form of [azimuth; elevation].

    Data Types: double

    Angle of arrival of signal at geolocation lla2 from geolocation lla1. apa is a 2-by-M matrix whose columns represent the arrival directions in the form of [azimuth; elevation].

    Data Types: double

    References

    [1] G. Robertshaw, "Effective earth radius for refraction of radio waves at altitudes above 1 km," in IEEE Transactions on Antennas and Propagation, vol. 34, no. 9, pp. 1099-1105, September 1986, doi: 10.1109/TAP.1986.1143948.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2022b