Mapping Toolbox | ![]() ![]() |
Determine cross fix positions from bearings and ranges
Syntax
[newlat,newlon] = crossfix(lat,long,az) [newlat,newlon] = crossfix(lat,long,az,units) [newlat,newlon] = crossfix(lat,long,az_range,case) [newlat,newlon] = crossfix(lat,long,az_range,case,units) [newlat,newlon] = crossfix(lat,long,az_range,case,drlat,drlong) [newlat,newlon] = crossfix(lat,long,az_range,drlat,drlong,units) [newlat,newlon] = crossfix(lat,long,az_range,case,... drlat,drlong,units) mat = crossfix(...)
Description
This function calculates the points of intersection between a set of objects taken in pairs. Given great circle azimuths and/or ranges from input points, the locations of the possible intersections are returned. This is different from the navigational function navfix
in that crossfix
uses great circle measurement, while navfix
uses rhumb line azimuths and nautical mile distances.
[newlat,newlon] = crossfix(lat,long,az)
returns the intersection points of all pairs of great circles passing through the points given by the column vectors lat
and long
that have azimuths az
at those points. The outputs are two-column matrices newlat
and newlon
in which each row represents the two intersections of a possible pairing of the input great circles. If there are n input objects, there will be n choose 2 pairings.
[newlat,newlon] = crossfix(lat,long,az_range,case) allows the input az_range
to specify either azimuths or ranges. Where the vector case
equals 1, the corresponding element of az_range
is an azimuth; where case
is 0, az_range
is a range. The default value of case
is a vector of ones (azimuths).
[newlat,newlon] = crossfix(lat,long,az_range,case,drlat,drlong) resolves the ambiguities when there is more than one intersection between two objects. The scalar valued drlat
and drlong
provide the location of an estimated (dead reckoned) position. The outputs newlat
and newlong
are column vectors in this case, returning only the intersection closest to the estimated point. When this option is employed, if any pair of objects fails to intersect, no output is returned and the warning No Fix
is displayed.
[newlat,newlon] = crossfix(lat,long,az,units
), [newlat,newlon] = crossfix(lat,long,az_range,case,units
), [newlat,newlon] = crossfix(lat,long,az_range,drlat,drlong,units
), and [newlat,newlon] = crossfix(lat,long,az_range,case,drlat,drlong,units
) allow the specification of the angle units to be used for all angles and ranges, where units
is any valid angle units string. The default value of units
is 'degrees'
.
mat = crossfix(...) returns the output in a two- or four-column matrix mat
.
Examples
Where do the small circles defined as all points 8° in distance from the points (0°,0°), (5°N,5°E), and (0°,10°E)" intersect?
[newlat,newlong] = crossfix([0 5 0]',[0 5 10]',[8 8 8]',[0 0 0]') newlat = 7.5594 -2.5744 6.2529 -6.2529 7.5594 -2.5744 newlong = -2.6260 7.5770 5.0000 5.0000 12.6260 2.4230Here is an illustration to show why there are six intersections:
If a dead reckoning position is provided, say (0°,5°E), then one from each pair is returned (the closest):
[newlat,newlong] = crossfix([0 5 0]',[0 5 10]',... [8 8 8]',[0 0 0]',0,5) newlat = -2.5744 6.2529 -2.5744 newlong = 7.5770 5.0000 2.4230
See Also
gcxgc gcxsc scxsc rhxrh polyxpoly |
Other intersection functions |
navfix |
Mercator-based navigational fixing |
![]() | country2mtx | daspectm | ![]() |