Поверхностная вспомогательная штриховка

Можно сделать размерные монохромные карты теневого облегчения с функциональным surflm, который походит на MATLAB® surfl функция. Эффект surflm похоже на использование световых сигналов, но само освещение моделей функции (с одним “источником света”, который вы задаете, когда вы вызываете его, но не может изменить местоположение) путем взвешивания поверхностных нормалей вместо того, чтобы использовать световые объекты.

Теневые вспомогательные карты этого типа обычно изображаются двумерно, а не как перспективные отображения. surflm функция работает с любой проекцией кроме globe.

surflm функция принимает определенные геолокацию сетки данных только. Вспомните, однако, что обычные сетки данных являются подмножеством определенных геолокацию сеток данных, в которые они могут быть преобразованы с помощью meshgrat (сочтите целесообразным Данные С координатной сеткой к Координатной сетке). Следующий пример иллюстрирует эту процедуру.

Создайте монохромную теневую вспомогательную карту

В этом примере показано, как использовать surflm симулировать один источник света в фигуре. Пример использует worldmap настраивать соответствующую карту оси и ссылочные основы.

Настройте проекцию и отобразите векторную карту корейского полуострова с worldmap. worldmap выбирает проекцию и границы карты, чтобы сделать эту карту.

figure;
ax = worldmap('Korea, Republic of');

latlim = getm(ax,'MapLatLimit');
lonlim = getm(ax,'MapLonLimit');

coastline = shaperead('landareas',...
    'UseGeoCoords', true,...
    'BoundingBox', [lonlim' latlim']);

geoshow(ax, coastline, 'FaceColor', 'none');

Загрузите модель ландшафта Кореи.

load korea

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

[klat,klon] = meshgrat(map,refvec);

Используйте surflm сгенерировать значение по умолчанию заштриховало вспомогательную карту, и измените палитру в монохроматическую шкалу, такой как серую, кость или медь. В этом случае по умолчанию направление подсветки установлено в 45º против часовой стрелки от направления просмотра; таким образом "солнце" находится на юго-востоке.

ht = surflm(klat,klon,map);
colormap('copper')

Заставить свет прибыть из некоторого другого направления, задать азимут источника света и вертикальное изменение как четвертый аргумент к surflm. Очистите карту ландшафта и перерисуйте ее, задав азимут 135º (северо-восток) и вертикальное изменение 60º выше горизонта.

clmo(ht);
ht=surflm(klat,klon,map,[135,60]);

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

Теперь переключите свет на северо-запад (-135º азимут) и понизьте его к 40º выше горизонта. Поскольку более низкое "солнце" уменьшает полный коэффициент отражения, когда просматривается с прямо выше, также задайте больше отражающей поверхности в качестве пятого аргумента к surflm. Это - вектор 1 на 4, описывающий относительные вклады рассеянного света, рассеянного отражения, зеркального отражения и зеркального коэффициента сияния. Это принимает значение по умолчанию к [.55.6.4 10].

clmo(ht);
ht=surflm(klat,klon,map,[-135, 30],[.65 .4 .3 10]);

Это - хороший выбор для подсветки этого ландшафта из-за господства горных гребней, которые запускаются с северо-востока на юго-запад, более или менее перпендикулярный направлению освещения.

Теневые вспомогательные представления могут подсветить микроструктуру земли и морского дна, но из-за монохроматической окраски, это затрудняет, чтобы отличить землю от моря. Смотрите Цветное Поверхностное Теневое Облегчение изучить, как окрасить такие карты, чтобы дифференцировать землю от воды.