Cетка в трехмерном пространстве — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Cетка в трехмерном пространстве

2017-11-17 422
Cетка в трехмерном пространстве 0.00 из 5.00 0 оценок
Заказать работу

Задана функция двух переменных . Требуется построить поверхность с выделенными рёбрами по узлам области , где . Строим разбиение области, узлы - определяет два двумерных массива X и Y. Тогда сетчатую поверхность можно построить командой:

mesh(X, Y, Z, C)

Команда mesh(X, Y, Z, C) выводит на экран сетчатую поверхность для значений массива Z, где ,определенных на множестве значений массивов X и Y. Цвета узлов поверхности задаются массивом C. Цвета ребер определяются свойством EdgeColor объекта surface. Можно задать одинаковый цвет для всех ребер, определив его в виде вектора [ r, g, b ] интенсивности трех цветов - красного, зеленого, синего. Если определить спецификацию none, то ребра не будут прорисовываться. Если определить спецификацию flat, то цвет ребер ячейки определяется цветом того узла, который был первым при обходе этой ячейки. Поскольку одни и те же ребра обходятся несколько раз, то цвета будут замещаться. Если определить спецификацию interp, то будет реализована линейная интерполяция цвета между вершинами ребра.

Применение функции shading после обращения к функции mesh изменяет спецификации свойств EdgeColor и FaceColor согласно следующей таблице.

 

Свойство Применяемая функция
mesh shading flat shading interp
EdgeColor flat flat interp
FaceColor Цвет фона Цвет фона Цвет фона

 

Команда mesh(x, y, Z, C) выполняет ту же функцию, но вместо двумерных массивов X, Y использует их одномерные проекции, так что если length(x) = n, а length(y) = m, то [m, n] = size(Z). В этом случае узлы сетчатой поверхности определяются тройками { x(j), y(i), Z(i, j) }, где вектор x определяет столбцы массива Z, а y - строки.

Команда mesh(Z, C) использует сетку, которая определяется одномерными массивами x = 1: n и y = 1: m, где m*n – размеры матрицы Z.

Команды mesh(X, Y, Z), mesh(x, y, Z), mesh(Z) используют в качестве массива цвета C = Z, то есть цвет в этом случае пропорционален высоте поверхности.

Группа команд meshc(...) в дополнение к трехмерным поверхностям строит проекцию линий постоянного уровня.

Группа команд meshz(...) в дополнение к трехмерным поверхностям строит плоскость отсчета на нулевом уровне, закрывая поверхность, лежащую ниже этого уровня.

Функция h = mesh(...) возвращает дескриптор h для графического объекта surface.

Пример 5.11.

Для функции построить трехмерную поверхность с проекциями линий постоянного уровня.

>> [X,Y]=meshgrid([-2:0.1:2]);
>> Z = X. * exp(- X.^ 2 - Y.^ 2);
>> meshc(X, Y, Z)

Рис.9. Результат примера 5.11

 

5.11. Затененная сетчатая поверхность

Поверхность функции линейно аппроксимируетсязначениями в узлах разбиения, и, таким образом, представляется склейкой плоских граней. Если в предыдущем случае грани поверхности не были окрашены, то командаsurf(X, Y, Z, C) строит поверхность, закрашивая грани между узлами поверхности, используя оттенки серого цвета, соответствующие значению функции. Такой способ представления поверхности называется затененной поверхностью.

Команда surf(X, Y, Z, C) выводит на экран сетчатую поверхность для значений массива Z, определенных на множестве значений массивов X и Y. Цвет ячейки определяется массивом C. Цвет ребер - черный, определяется свойством EdgeColor, специфицированным как [0,0,0]. Можно задать одинаковый цвет для всех ребер, определив его в виде вектора [r,g,b] интенсивности трех цветов - красного, зеленого, синего. Если определить спецификацию none, то ребра не будут прорисовываться.

Применение функции shading после обращения к функции surf изменяет спецификации свойств EdgeColor и FaceColor графического объекта surface согласно следующей таблице.

Свойство Применяемая функция
surf shading flat shading interp
EdgeColor [0,0,0] none none
FaceColor flat flat interp

Команда surf(x, y, Z, C) выполняет ту же функцию, но вместо двумерных массивов X, Y использует их одномерные проекции, так что если length(x) = n, а length(y) = m, то [ m, n ] = size(Z). В этом случае узлы сетчатой поверхности определяются тройками { x(j), y(i), Z(i, j) }, где вектор x определяет столбцы массива Z, а y - строки. Команда surf(Z,C) использует сетку, которая определяется одномерными массивами x = 1: n и y =1: m. Команды surf(X, Y, Z), surf(x, y, Z), surf(Z) используют в качестве массива цвета C = Z, то есть цвет в этом случае пропорционален высоте поверхности. Группа команд surfc(...) в дополнение к трехмерным затененным поверхностям строит проекцию линий постоянного уровня. Функция h = surf(...) возвращает дескриптор h для графического объекта surface.

Пример 5.12. Построить трехмерную затененную поверхность функции со шкалой затененности.

>> [X,Y]=meshgrid([-2:0.1:2]);
>> Z = X. * exp(- X ^ 2 - Y ^ 2);
>> surf(X, Y, Z)
>> colormap(gray)
>> shading interp
>> colorbar

Рис.10. Затененная поверхность функции

 

Пример 5.13. Рассмотрим пример сферы, которая раскрашена в соответствии с матрицей Адамара (Hadamard), часто используемой в теории кодирования сигналов и составленной только из двух чисел 1 и -1.

>> k=5;n=2^k-1;
>> [X,Y,Z]=sphere(n);
>> C=hadamard(2^k);
>> surf(X,Y,Z,C);
>> colormap([111,2,32,32,3])
>> colorbar

Рис.11. Результат примера 5.13

 

В силу того, что поверхность двумерна для задания поверхности можно использовать два независимых параметра i и j, которые изменяются непрерывно, например, в прямоугольнике 1 ≤ im, 1≤ jn. Тогда поверхность будет определяться тремя функциями x(i, j), y(i, j), z(i, j). Когда i и j целые числа, они задают прямоугольную сетку с целочисленными значениями для узлов. Функции x(i, j), y(i, j), z(i, j) определяют двумерные массивы X, Y, Z размера m х n. Четвертая функция - цвет ячеек поверхности c(i, j) задает четвертую матрицу C.

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

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

Цвет такой сетчатой поверхности может быть задан двумя способами: либо цветом одной из вершин, либо цветом в центре ячейки.

Рассмотрим, как в этом случае действует функция закраски shading. Если задано значение shading interp, то цвет ячейки определяется как билинейная функция местных координат. Если задано значение shading faceted (принято по умолчанию) или shading flat, то цвет ячейки постоянен и определяется цветом верхней левой вершины, как показано на следующей схеме:


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.