diffuse

Reflectância difusa (lambertiana) de uma superfície para uma dada direção de luz.

Categoria: Graphics > Formatting and Annotation

Sintaxe

R = diffuse(Nx, Ny, Nz, S)

Retorna a reflectância difusa em cada ponto da superfície, dadas as componentes da normal e a direção da luz S.

Descrição

A função implementa a lei do cosseno de Lambert. Cada normal e a direção da luz são normalizadas, e o resultado é o produto escalar entre elas, limitado a zero, de modo que superfícies voltadas para o lado oposto à luz ficam simplesmente escuras.

Os valores servem para sombrear uma superfície manualmente. Para iluminar um objeto gráfico diretamente, use light e lighting.

Argumentos de entrada

Nx, Ny, Nz
Arrays do mesmo tamanho com as componentes x, y e z das normais da superfície, por exemplo obtidas de surfnorm.
S
Direção da luz, como vetor [x y z] ou como o par [azimute elevação] em graus.

Argumentos de saída

R
Array do mesmo tamanho de Nx, com valores de 0 (sem luz) a 1 (luz incidindo de frente).

Exemplo

Normais inclinadas em relação à luz

Nx = [0 0 1];
Ny = [0 1 0];
Nz = [1 1 1];
R = diffuse(Nx, Ny, Nz, [0 0 1])
Saída
R = 1×3

    1.0000    0.7071    0.7071

Veja também

specular surfnorm light lighting material