crossfix

Положения крест-фиксации от подшипников и областей значений

Синтаксис

[newlat,newlon] = crossfix(lat,lon,az)
[newlat,newlon] = crossfix(lat,lon,az_range,case)
[newlat,newlon] = crossfix(lat,lon,az_range,case,drlat,drlon)
[newlat,newlon] = crossfix(lat,lon,az,units)
[newlat,newlon] = crossfix(lat,lon,az_range,case,units)
[newlat,newlon] = crossfix(lat,lon,az_range,drlat,drlon,units)
[newlat,newlon] = crossfix(lat,lon,az_range,case,drlat,drlon,units)
mat = crossfix(...)

Описание

[newlat,newlon] = crossfix(lat,lon,az) возвращает точки пересечения всех пар больших кругов, проходящих через точки, заданные векторы-столбцы lat и lon которые имеют азимуты az в этих точках. Выходные выходы - матрицы с двумя столбцами newlat и newlon в котором каждая строка представляет два пересечения возможного сопряжения входных больших кругов. Если существует n входных объектов, будет n выбрать 2 пары.

[newlat,newlon] = crossfix(lat,lon,az_range,case) позволяет вход az_range для задания азимутов или областей значений. Где вектор case равен 1, соответствующий элемент az_range является азимутом; где case 0, az_range - область значений. Значение по умолчанию case является вектором таковых (азимутов).

[newlat,newlon] = crossfix(lat,lon,az_range,case,drlat,drlon) устраняет неоднозначности, когда существует более одного пересечения между двумя объектами. Скалярное drlat и drlon указать местонахождение расчетного (считанного) положения. Выходные выходы newlat и newlon являются векторами-столбцами в этом случае, возвращая только самое близкое к расчетной точке пересечение. Когда используется эта опция, если какая-либо пара объектов не пересекает, выход не возвращается, и предупреждение No Fix отображается.

[newlat,newlon] = crossfix(lat,lon,az,units), [newlat,newlon] = crossfix(lat,lon,az_range,case,units), [newlat,newlon] = crossfix(lat,lon,az_range,drlat,drlon,units), и [newlat,newlon] = crossfix(lat,lon,az_range,case,drlat,drlon,units) позволяют использовать спецификацию угловых модулей для всех углов и областей значений, где units - любое допустимое значение угловых модулей. Значение по умолчанию units является 'degrees'.

mat = crossfix(...) возвращает выход в матрице с двумя или четырьмя столбцами mat.

Эта функция вычисляет точки пересечения между набором объектов, взятых парами. Учитывая большие азимуты окружности и/или области значений от входных точек, местоположения возможных пересечений возвращаются. Это отличается от навигационной функции navfix в этом crossfix использует большое измерение окружности, в то время как navfix использует азимуты линии реванша и морские расстояния мили.

Примеры

свернуть все

В этом примере показано, как найти пересечение точек на кругах.

Создайте оси карты.

figure('color','w');
ha = axesm('mapproj','mercator', ...
    'maplatlim',[-10 15],'maplonlim',[-10 20],...
    'MLineLocation',5,'PLineLocation',5);
axis off
gridm on
framem on
mlabel on
plabel on

Задайте широты и долготы трех произвольных точек, а затем задайте три радиуса, все 8 степени.

latpts = [0;5;0];           
lonpts = [0;5;10];     
radii = [8;8;8];

Получите пересечения воображаемых небольших кругов вокруг этих точек.

[newlat,newlon] = crossfix(latpts,lonpts,radii,[0;0;0])
newlat = 3×2

    7.5594   -2.5744
    6.2529   -6.2529
    7.5594   -2.5744

newlon = 3×2

   -2.6260    7.5770
    5.0000    5.0000
   12.6260    2.4230

Нарисуйте красные маркеры круга в заданных точках.

geoshow(latpts,lonpts,'DisplayType','point',...
    'markeredgecolor','r','markerfacecolor','r','marker','o')

Нарисуйте пурпурные алмазные маркеры в точках пересечения.

geoshow(reshape(newlat,6,1),reshape(newlon,6,1),'DisplayType','point',...
    'markeredgecolor','m','markerfacecolor','m','marker','d')

Сгенерируйте небольшой радиус окружности 8 град для каждой исходной точки.

[latc1,lonc1] = scircle1(latpts(1),lonpts(1),radii(1));
[latc2,lonc2] = scircle1(latpts(2),lonpts(2),radii(2));
[latc3,lonc3] = scircle1(latpts(3),lonpts(3),radii(3));

Постройте график малых кругов, чтобы показать пересечения, как определено.

geoshow(latc1,lonc1,'DisplayType','line',...
    'color','b','linestyle','-')
geoshow(latc2,lonc2,'DisplayType','line',...
    'color','b','linestyle','-')
geoshow(latc3,lonc3,'DisplayType','line',...
    'color','b','linestyle','-')

Найдите перекресток, когда предусмотрено мертвое положение подсчета (0 °, 5 ° E). crossfix возвращает по одному от каждой пары (ближайшая).

[newlat,newlon] = crossfix([0 5 0]',[0 5 10]',...
                            [8 8 8]',[0 0 0]',0,5)
newlat =

   -2.5744
    6.2529
   -2.5744

newlon =

    7.5770
    5.0000
    2.4230

См. также

| | | | |

Представлено до R2006a