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 в тех точках. Выходные параметры являются матрицами 2D столбца 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(...) возвращает выходной параметр в 2D или матричном 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