# contour

curvas de nível em uma superfície 3d

## Seqüência de Chamamento

    contour(x,y,z,nz,[theta,alpha,leg,flag,ebox,zlev])
                contour(x,y,z,nz,<opt_args>)

## Parâmetros

x,y

  vetores de reais de tamanhos n1 e n2.

z

  matriz de reais de tamanho (n1,n2), os valores da função sobre o gride ou uma função Scilab que define uma superfície `z=f(x,y)`.

nz

  os valores de nível ou o número de níveis.

  -

    Se `nz` for um inteiro, seu valor fornece o número de níveis igualmente espaçados de zmin a zmax como segue:

        z= zmin + (1:nz)*(zmax-zmin)/(nz+1)

    Note que os níveis `zmin` e `zmax` não são desenhados (genericamente eles são reduzidos a pontos) mas podem ser adicionados através de

        [im,jm] = find(z == zmin);     // ou zmax
        plot2d(x(im)',y(jm)',-9,"000")

  -

    Se `nz` for um vetor, `nz(i)` fornece o valor da i-ésima curva de nível. Note que isto pode ser útil para se visualizar as curvas de nível `zmin` e `zmax` para se adicionar uma tolerância eps: `nz=[zmin+%eps,..,zmax-%eps]`.

<opt_args>

  uma seqüência de declarações `key1=value1, key2=value2` ,... onde keys podem ser `theta`,`alpha`,`leg`,`flag`, `ebox`,`zlev` (ver abaixo). Neste caso, a ordem não possui significado especial.

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

    string de representação de modo.

    mode=0:

      as curvas são desenhadas na superfície definida por (x,y,z).

    mode=1:

      as curvas são desenhadas em um esboço 3d e sobre o plano definido pela equação z=zlev.

    mode=2:

      as curvas são desenhadas em um esboço 2D.

  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`

  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.

ebox

  usado quando `type` em `flag` é 1. Especifica as fronteiras do esboço através do vetor `[xmin,xmax,ymin,ymax,zmin,zmax]`.

zlev

  número real.

## Descrição

`contour` desenha curvas de nível de uma superfície z= f(x,y). As curvas de nível são desenhadas sobre uma superfície 3d. Os argumentos opcionais são os mesmos que os da função `plot3d` (exceto por `zlev`)e seus significados são os mesmos. Eles controlam o desenho das curva de nível em um esboço 3d. Apenas `flag(1)=mode` tem significado especial.

mode=0

  as curvas são desenhadas na superfície definida por (x,y,z).

mode=1

  as curvas são desenhadas em um esboço 3d e sobre o plano definido pela equação z=zlev.

mode=2

  as curvas são desenhadas em um esboço 2D.

Você pode modificar o formato dos pontos flutuantes impressos sobre os níveis utilizando `xset("fpf",string)` onde `string` fornece o formato em na sintaxe de formato C (por exemplo `string="%.3f"`). Use `string=""` para voltar ao formato padrão e use `string=" "` para suprimir a impressão.

Geralmente é usado `contour2d` para se esboçar curvas de nível em um esboço 2d.

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

## Exemplos

    t=linspace(-%pi,%pi,30);
    function z=my_surface(x,y),z=x*sin(x)^2*cos(y),endfunction

    contour(t,t,my_surface,10)
    // mudando o formato da impressão dos níveis
    xset("fpf","%.1f")
    clf()
    contour(t,t,my_surface,10)
    // 3D
    clf()
    z=feval(t,t,my_surface);
    plot3d(t,t,z);contour(t,t,z+0.2*abs(z),20,flag=[0 2 4]);

## Ver Também

- contour2d
- plot3d