Можно сделать размерные монохромные карты теневого облегчения с функциональным 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]);
Это - хороший выбор для подсветки этого ландшафта из-за господства горных гребней, которые запускаются с северо-востока на юго-запад, более или менее перпендикулярный направлению освещения.
Теневые вспомогательные представления могут подсветить микроструктуру земли и морского дна, но из-за монохроматической окраски, трудно отличить землю от моря. Смотрите Цветное Поверхностное Теневое Облегчение изучить, как окрасить такие карты, чтобы дифференцировать землю от воды.