plot3d1 Esboço 3d em níveis de cinza ou de cores de uma superfície

## Seqüência de Chamamento

    plot3d1(x,y,z,[theta,alpha,leg,flag,ebox])
                plot3d1(xf,yf,zf,[theta,alpha,leg,flag,ebox])

                plot3d1(x,y,z,<opts_args>)
                plot3d1(xf,yf,zf,<opts_args>)

## Parâmetros

x,y

  vetores linhas de tamanhos n1 e n2 (coordenadas dos eixos x e y). Estas coordenadas devem ser monótonas.

z

  matriz de tamanho (n1,n2). `z(i,j)` é o valor da superfície no ponto (x(i),y(j)).

xf,yf,zf

  matrizes de tamanho (nf,n). Elas definem as facetas usadas para desenhar a superfície. Há `n` facetas. Cada faceta `i` é definida por um polígono com `nf` pontos. As coordenadas dos eixos x, y e z dos pontos da i-ésima faceta são dados respectivamente por `xf(:,i)`, `yf(:,i)` e `zf(:,i)`.

<opt_args>

  representa uma seqüência de declarações `key1=value1, key2=value2` ,... onde `key1`, `key2,...` pode ser um dos seguintes: theta, alpha , leg, flag, ebox (ver definições abaixo).

theta, alpha

  valores reais de dados em graus, as coordenadas esféricas do ponto de observação.

leg

  string definindo os rótulos para cada eixo com @ como um separador de campos, por exemplo "X@Y@Z".

flag

  um vetor real de tamanho três. `flag=[mode,type,box]`.

  mode

    um inteiro (cor da superfície).

    mode>0

      a superfície é pintada com a cor `"mode"` ; a borda da faceta é desenhada com o estilo e linha e cor correntes.

    mode=0:

      uma malha da superfície é desenhada.

    mode<0:

      a superfície é pintada com a cor `"-mode"` ; a borda da faceta não é desenhada.

      Note que o tratamento de cor da superfície pode ser feito utilizando-se as opções `color_mode` e `color_flag` através das propriedades da entidade Surface (ver surface_properties).

  type

    um inteiro (tipo de escala).

    type=0:

      o esboço é feito utilizando-se a escala 3d corrente (definida por uma chamada anterior a `param3d`, `plot3d`, `contour` ou `plot3d1`).

    type=1:

      re-escala automaticamente caixas 3d com relação de aspecto extrema, as fronteiras são especificadas pelo valor do argumento opcional `ebox`.

    type=2:

      re-escala automaticamente caixas 3d com relação de aspecto extrema, as fronteiras são computadas utilizando-se dados fornecidos.

    type=3:

      fronteiras 3d isométricas com fronteiras da caixa dadas por `ebox`, de modo semelhante a `type=1`.

    type=4:

      fronteiras 3d isométricas derivadas dos dados, de modo semelhante a `type=2`.

    type=5:

      fronteiras 3d isométricas expandidas com fronteiras fornecidas por `ebox`, de modo semelhante a `type=1`.

    type=6:

      fronteiras 3d isométricas expandidas derivadas dos dados, de modo semelhante a `type=2`.

      Note que as fronteiras dos eixos podem ser customizadas através das propriedades da entidade Axes (ver axes_properties).

  box

    um inteiro (moldura ao redor do esboço).

    box=0:

      nada é desenhado ao redor do esboço.

    box=1:

      não implementado (é como box=0).

    box=2:

      apenas os eixos atrás da superfície são desenhados.

    box=3:

      uma caixa cercando a superfície é desenhada e legendas são adicionadas.

    box=4:

      uma caixa cercando a superfície é desenhada e legendas e eixos são adicionados.

      Note que o aspecto dos eixos pode ser customizado através das propriedades da entidade Axes (ver axes_properties).

ebox

  especifica as fronteiras do esboço através do vetor `[xmin,xmax,ymin,ymax,zmin,zmax]`. Este argumento é utilizado junto com `type` em `flag` : é ajustado para `1`, `3` ou `5` (volte acima para ver o comportamento correspondente). Se `flag` estiver faltando, `ebox` não é levado em conta.

  Note que, quando especificado, o argumento `ebox` age no campo `data_bounds` que também pode ser ajustado através das propriedades da entidade de eixos (ver axes_properties).

## Descrição

`plot3d1` esboça uma superfície com cores dependendo do nível z da superfície. Esta função de esboço especial também pode ser habilitada ajustando `color_flag=1` após um `plot3d` (ver surface_properties)

Entre com o comando `plot3d1()` para visualizar uma demonstração.

## Exemplos

    // esboço simples utilizando z=f(x,y)
    t=[0:0.3:2*%pi]';
    z=sin(t)*cos(t');
    plot3d1(t,t,z)

t=[0:0.3:2*%pi]'; z=sin(t)*cos(t'); plot3d1(t,t,z)

    // mesmo esboço utilizando facetas computadas por genfac3d
    t=[0:0.3:2*%pi]';
    z=sin(t)*cos(t');
    [xx,yy,zz]=genfac3d(t,t,z);
    plot3d1(xx,yy,zz)

t=[0:0.3:2*%pi]'; z=sin(t)*cos(t'); [xx,yy,zz]=genfac3d(t,t,z); plot3d1(xx,yy,zz)

    // esboços múltiplos
    t=[0:0.3:2*%pi]';
    z=sin(t)*cos(t');
    [xx,yy,zz]=genfac3d(t,t,z);
    plot3d1([xx xx],[yy yy],[zz 4+zz])

t=[0:0.3:2*%pi]'; z=sin(t)*cos(t'); [xx,yy,zz]=genfac3d(t,t,z); plot3d1([xx xx],[yy yy],[zz 4+zz])

    // esboço simples com ponto de vista e legendas
    plot3d1(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[2,2,3])

plot3d1(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[2,2,3])

    // mesmo esboço sem grid
    plot3d1(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[-2,2,3])

plot3d1(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[-2,2,3])

    // mesmo esboço sem grid
    deff("[x,y,z]=sph(alp,tet)",["x=r*cos(alp).*cos(tet)+orig(1)*ones(tet)";..
    "y=r*cos(alp).*sin(tet)+orig(2)*ones(tet)";..
    "z=r*sin(alp)+orig(3)*ones(tet)"]);
    r=1; orig=[0 0 0];
    [xx,yy,zz]=eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
    plot3d(xx,yy,zz)
    e=gce();
    e.color_flag=1;
    scf(2);
    plot3d1(xx,yy,zz) // os dois gráficos são similares

deff("[x,y,z]=sph(alp,tet)",["x=r*cos(alp).*cos(tet)+orig(1)*ones(tet)";.. "y=r*cos(alp).*sin(tet)+orig(2)*ones(tet)";.. "z=r*sin(alp)+orig(3)*ones(tet)"]); r=1; orig=[0 0 0]; [xx,yy,zz]=eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20)); plot3d(xx,yy,zz)

## Ver Também

- plot3d
- gca
- gce
- scf
- clf