Сверхгоризонт 3-D представления Используя функции расположения камеры

Можно создать поразительные 3-D представления с помощью отображения Земного шара. camtargm и функции camposm (функции Mapping Toolbox, соответствующие camtarget и campos), включают вам к центру положения и точке зрения, соответственно, в географических координатах, таким образом, вы не должны иметь дело с 3-D Декартовыми координатами фигуры.

В этом осуществлении вы отображаете береговые линии из файла форм landareas по топографическому облегчению, и затем просматриваете земной шар из вышеупомянутого Вашингтона, округ Колумбия, смотрящего на Москву, Россия.

Настройте отображение Земного шара и получите топографические данные для карты. Скройте фон карты.

figure
axesm globe
load topo
hidem(gca)

Отобразите topo без вертикальной составляющей (путем исключения четвертого аргумента к meshm). Представление по умолчанию от над Северным полюсом с центральным меридианом, идущим параллельно оси X.

meshm(topo,topolegend,size(topo)); 
demcmap(topo);

Добавьте мировые береговые линии из глобального файла форм landareas и постройте их в светло-сером.

coastlines = shaperead('landareas',...
    'UseGeoCoords', true, 'Attributes', {}); 
plotm([coastlines.Lat], [coastlines.Lon], 'Color', [.7 .7 .7])

Считайте координатные местоположения для Москвы и Вашингтона из файла форм worldcities.

moscow = shaperead('worldcities',...
    'UseGeoCoords',true,...
    'Selector',{@(name) strcmpi(name,'Moscow'),'Name'});
washington = shaperead('worldcities',...
    'UseGeoCoords',true,...
    'Selector',{@(name) strcmpi(name,'Washington D.C.'),...
    'Name'});

Создайте большую круговую дорожку, чтобы соединить Вашингтон с Москвой и построить его в красном.

[latc,lonc] = track2('gc',...
    moscow.Lat, moscow.Lon, washington.Lat, washington.Lon);
plotm(latc,lonc,'r')

Укажите камеру на Москву. Везде, куда камера впоследствии перемещена, это всегда смотрит на [moscow.Lat moscow.Lon].

camtargm(moscow.Lat, moscow.Lon, 0)

Разместите камеру над Вашингтоном. Третий аргумент является высотой в Наземных радиусах.

camposm(washington.Lat, washington.Lon, 3)

Установите камеру вектор с координатами целевого объекта камеры. Большой круг, соединяющий Вашингтон и Москву теперь, запускается вертикально.

camupm(moscow.Lat,moscow.Lon)

Установите поле зрения для камеры к 20 °.

camva(20)

Добавьте свет и задайте относительно неотражающий поверхностный материал. Это - итоговое представление.

camlight; material(0.6*[ 1 1 1])

Смотрите также

| | | |

Похожие темы