surfnorm

Вычислите и отобразите 3-D поверхностные нормали

Синтаксис

surfnorm(Z)
surfnorm(X,Y,Z)
surfnorm(axes_handle,___)
surfnorm(___,Name,Value)
[Nx,Ny,Nz] = surfnorm(___)

Описание

surfnorm(Z) строит поверхность матричного Z с surf и отображает его поверхностные нормали как исходящие векторы.

surfnorm(X,Y,Z) строит поверхность и ее поверхностные нормали от векторов или матриц X, Y и матричный Z. X, Y и Z должны быть одного размера.

surfnorm(axes_handle,___) графики в axes_handle вместо gca и это может включать любой из входных параметров в предыдущих синтаксисах.

surfnorm(___,Name,Value) может использоваться, чтобы установить значение заданных свойств Surface Properties.

[Nx,Ny,Nz] = surfnorm(___) возвращает компоненты 3-D поверхностных нормалей для поверхности, не строя поверхностные или поверхностные нормали.

Входные параметры

Z

2D массив вещественных чисел, представляющих поверхность

X

2D массив вещественных чисел, который задает x компонент поверхностной сетки

Y

2D массив вещественных чисел, который задает y компонент поверхностной сетки

axes_handle

Обработайте к целевым осям, в которых можно построить поверхность

Если вы не задаете axes_handle, MATLAB® использует текущую систему координат.

Name,Value

Задайте дополнительные пары, разделенные запятой Имени, аргументы Value, где Имя является именем и значением аргумента, являются соответствующим значением. Имя должно находиться внутри одинарных кавычек (' '). Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Имена свойства и значения объекта подложки

Смотрите Surface Properties для описания имен свойства и значений.

Выходные аргументы

[Nx,Ny,Nz]

x, y и компоненты z 3D поверхностных нормалей для поверхности

Примеры

свернуть все

Вычислите и постройте векторы нормали для усеченного конуса. Установите пределы по осям с помощью функции axis.

[x,y,z] = cylinder(1:10);
figure
surfnorm(x,y,z)
axis([-12 12 -12 12 -0.1 1])

Вычислите векторы нормали выражения, представляющего поверхность.

[nx, ny, nz] = surfnorm(peaks);

Присвойте эти нормали свойству VertexNormals который использование MATLAB® вычислить поверхностную подсветку. Установите алгоритм подсветки на gouraud и добавьте свет с помощью camlight.

b = reshape([nx ny nz], 49,49,3);
figure
surf(ones(49),'VertexNormals',b,'EdgeColor','none');
lighting gouraud
camlight

Больше о

свернуть все

Нормальная поверхность

Мнимый перпендикуляр строки на плоскую поверхность или перпендикуляр к плоскости касательной в точке на неплоской поверхности

Советы

  • surfnorm не принимает комплексные входные параметры.

  • Инвертируйте направление нормалей путем вызова surfnorm с транспонированными аргументами:

    surfnorm(X',Y',Z')
    

  • Поверхностные нормали представляют условия в вершинах и не нормированы. Нормали для поверхностных элементов, которые отворачиваются от средства просмотра, не отображаются.

  • surfl использует surfnorm, чтобы вычислить поверхностные нормали при вычислении коэффициента отражения поверхности.

Алгоритмы

После выполнения bicubic припадка данных в x, y и направлениях z, диагональные векторы вычислены и пересечены, чтобы сформировать нормальное в каждой вершине.

Смотрите также

| | | |

Представлено до R2006a