Можно создать поразительные 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])
camlight
| camposm
| camtargm
| camupm
| extractm