В этом примере показано, как создать светлый объект для имитации карты, произведенной в Цветном Поверхностном Затененном Рельефе, который использует затененные расчеты рельефа, а не световые объекты.
meshlsrm
и surflsrm
функции моделируют подсветку путем изменения палитры с полосами света и темноты. Затем матрица карты преобразуется в индексы для новой «затененной» палитры на основе вычисленных нормалей поверхности. Использование световых объектов позволяет получить широкую область значений подсветки эффектов. Тулбокс управляет световыми объектами с lightm
функция, которая зависит от MATLAB®
light
функция. Источники света являются отдельными графическими объектами MATLAB.
Для получения дополнительной информации см. страницы с описанием для lightm
, daspectm
, material
, lighting
, и view
, наряду с «Освещение», «Прозрачность» и «Затенение».
Добавьте источник света к окрашенной в поверхность сетке данных с помощью lightm
. Во-первых, загрузите повышение данные и географические камеры ссылки объект для Корейского полуострова. Отображение данных без эффектов освещения с помощью meshm
. Применить палитру, подходящую для данных о повышении, используя demcmap
. Удалите дополнительное пустое пространство вокруг карты, используя tightmap
.
load korea5c axesm('miller','MapLatLimit',[30 45],'MapLonLimit',[115 135]) meshm(korea5c,korea5cR,size(korea5c),korea5c) demcmap(korea5c) tightmap
Разместите источник света в северо-западном углу сетки высотой в один градус, используя lightm
. The lightm
функция подобна функции MATLAB ® light
, но принимает входы широты и долготы вместо x, y и z. Обратите внимание, что рисунок становится тёмный.
lightm(45,115,1)
Преувеличьте вертикальную размерность, чтобы сделать любой подрез видимым в перспективе. Обратите внимание, что рисунок становится тёмный все еще.
daspectm('meters',50)
Установите характеристики отражающей способности окружающей (прямой), рассеянной (skylight) и зеркальной (highlight) поверхностей, соответственно.
material([0.7 0.9 0.8])
По умолчанию подсветка плоское (плоские грани). Измените свет, чтобы использовать затенение Гуро (интерполированные нормальные векторы в углах граней).
lighting Gouraud
Удалите ребра ограничивающего прямоугольника. Измените вид, задав азимут -30 ° и высоту 30 °.
ax = gca;
ax.Box = 'off';
view(-30,30)
Если на текущей фигуре только один свет, можно удалить его с помощью clmo
.
clmo(handlem('light'))