exponenta event banner

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