8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 354 355 356 357 358 359 360 ... 365

surface(PropName, PropValue, PropName, PropValue, ...) — общий вид вызова surface, позволяющий построить поверхность с заданными свойствами. Ниже перечислены наиболее часто используемые свойства и их возможные значения с необходимыми комментариями. Следует иметь в виду, что поверхность, отображаемая функцией surface, выводится на текущие оси графического окна. Если текущих осей (или окна) нет, то создаются оси, содержащие график поверхности. Однако по умолчанию оси являются двумерными, т. е. наблюдатель смотрит на них с точки, имеющей азимут 90° и угол склонения 0°. Высокоуровненевые графические функции, напротив, выводят график, видимый с точки обзора, азимут которой равен -37.5е, а угол склонения 30°. Для получения привычного вида графика поверхности при помощи surface, следовательно, требуется установить точку обзора, используя функцию view: view(-37.5, 30) (см. разд. "Поворот графика, изменение точки обзора" главы 3).

Задание визуализируемых данных производится установкой свойств XData, YData и ZData. Значениями данных свойств являются матрицы х, y и z с координатами узлов каркасной сетки и значениями высоты в соответствующей точке поверхности (см. функцию mesh). Цвет каждого узла сетки задается матрицей в свойстве CData (см. функцию surf выше). Последовательность команд, приведенная ниже, отображает поверхность в одном графическом окне при помощи surf, а в другом — с использованием эквивалентного (за исключением вывода линий сетки) обращения к

surface.

» [X, Y] = meshgrid(-3:0.5:3);

» Z = sin(X).*COS(Y).*exp(abs(X.*Y/10));

» surf(X, Y, Z)

» figure

» surface(XData, x, YData, Y, ZData, Z, CData, Z) ; » view(-37.5, 30)

Значение свойства CData может быть матрицей с такого же размера, как х, у и z. В данном примере с = z. Линейное преобразование значений матрицы к отрезку [0,1] устанавливает соответствие между цветами текущей палитры и значениями матрицы с (индексированный цвет). Способ определения соответствия элементов с цвету зависит от значения свойства поверхности CDataMapping. По умолчанию значение равно scaled, что как раз и обеспечивает линейное преобразование. Установка свойству CDataMapping значения direct приводит к интерпретации значений с как номеров цветов текущей палитры, поэтому элементы с(1, j) должны принадлежать отрезку (1, length (colormap) ].


Цвет каждого узла каркасной сетки поверхности можно задавать напрямую, не привязываясь к цветовой палитре. Значением свойства CData должна быть не матрица, а трехмерный массив размера size (С) = [m п 3],

где [т n] = size(X), а С(:, :, 1), С(:, :, 2), С(:, :, 3) ЯВЛЯЮТСЯ

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

Способ изменения цвета линий каркасной поверхности определяется значением свойства EdgeColor. Заначение flat1 приводит к постоянному цвету границы в пределах каждой ячейки, interp — обеспечивает плавное изменение от вершины к вершине (используется линейная интерполяция). Фиксированный цвет задается одним из сокращений: с, т\ у, к (по умолчанию), г, g, b, "W, или вектором из трех элементов в RGB. Значение • попе • приводит к тому, что линии каркасной поверхности не отображаются.

Способ заливки ячеек устанавливается при помощи свойства FaceColor. Постоянное значение FaceColor, равное одному из сокращений для цвета или вектору из трех элементов, приводит к заливке всех ячеек одним цветом. Заливка ячейки не производится, если свойство FaceColor имеет значение попе. Изменение цвета в пределах ячейки зависит от flat или interp (см. функцию surf). Значение texturemap позволяет использовать матрицу с размера, отличного от х, у и z. Следующий пример демонстрирует отображение текстурированной поверхности, сама текстура содержится в графическом файле texture.bmp размера 300 на 300 пикселов, цвет каждого пиксела представляется 24 битами.

» С = imread(texture.bmp);

» whos С

NameSizeBytes Class

С300x300x3270000 uintS array

Grand total is 270000 elements using 270000 bytes

Массив с является трехмерным, третье измерение соответствует цвету в RGB. Перед использованием массива цвета в качестве текстуры его следует преобразовать к типу double и масштабировать элементы:

»

с =

double

(С) ;

С<:

, :, 1)

= С(:,

:, U/255

»

С С

, 2)

= С(:,

2)/255

»

С(:

, 3)

= С<:.

:, 3)/255

Теперь трехмерный массив вещественных чисел можно использовать для задания цвета поверхности.

» surface(XData, X, YData, Y, ZData, Z, CData, C, ...

FaceColor, texturemap, CDataMapping, 1 direct1); » view(-37.5, 30)


Исходная текстура и текстурированная поверхность приведены на рис. П2.

Рис. П2. Текстура и текстурированная поверхность

Стиль и толщина линий каркасной поверхности устанавливаются при помощи свойств LineStyle и LineWidth. Значением LineStyle может быть: :, — * или a LineWidth —вещественное число, равное толщине линий в пунктах (1 пункт = 1/72 дюйма).

Тип, размер и способ закраски границ и внутренности маркеров, помещаемых в узлах каркасной сетки, определяют свойства Marker, MarkerSize, MarkerEdgeColor, MarkerFaceColor.

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

•Ambientstrength— интенсивность ненаправленного окружающего света, который освещает всю поверхность. Значением может быть вещественное число от нуля до единицы, по умолчанию используется 0.3. Цвет определяется значением свойства AmbientLigthCoior осей (объекта axes).

•BackFaceLighting — определение способа частей поверхности в зависимости от направления нормали к поверхности и расположения наблюдателя. Значение reverselit (установленное по умолчанию) соответствует освещению внутренних поверхностей, нормаль к которым направлена от наблюдателя, так же как и внешних. Внутренние поверхности не освещаются, если свойство BackFaceLighting имеет значение unlit. Освещение границы замкнутых объектов убирается при помощи lit.

35 Зм. 130



0 ... 354 355 356 357 358 359 360 ... 365