<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) ENPC - Jean-Philippe Chancelier
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="contour" xml:lang="pt">
    <refnamediv>
        <refname>contour</refname>
        <refpurpose>curvas de nível em uma superfície 3d</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Seqüência de Chamamento</title>
        <synopsis>contour(x,y,z,nz,[theta,alpha,leg,flag,ebox,zlev])
            contour(x,y,z,nz,&lt;opt_args&gt;)
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Parâmetros</title>
        <variablelist>
            <varlistentry>
                <term>x,y</term>
                <listitem>
                    <para>vetores de reais de tamanhos n1 e n2.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>z</term>
                <listitem>
                    <para>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
                        <literal>z=f(x,y)</literal>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>nz</term>
                <listitem>
                    <para>os valores de nível ou o número de níveis.</para>
                    <variablelist>
                        <varlistentry>
                            <term>-</term>
                            <listitem>
                                <para>
                                    Se <literal>nz</literal> for um inteiro, seu valor
                                    fornece o número de níveis igualmente espaçados de zmin a zmax
                                    como segue:
                                </para>
                                <programlisting role=""><![CDATA[
z= zmin + (1:nz)*(zmax-zmin)/(nz+1)
 ]]></programlisting>
                                <para>
                                    Note que os níveis <literal>zmin</literal> e
                                    <literal>zmax</literal> não são desenhados (genericamente eles
                                    são reduzidos a pontos) mas podem ser adicionados através
                                    de
                                </para>
                                <programlisting role=""><![CDATA[
[im,jm] = find(z == zmin);     // ou zmax
plot2d(x(im)',y(jm)',-9,"000")
 ]]></programlisting>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>-</term>
                            <listitem>
                                <para>
                                    Se <literal>nz</literal> for um vetor,
                                    <literal>nz(i)</literal> fornece o valor da i-ésima curva de
                                    nível. Note que isto pode ser útil para se visualizar as
                                    curvas de nível <literal>zmin</literal> e
                                    <literal>zmax</literal> para se adicionar uma tolerância eps:
                                    <literal>nz=[zmin+%eps,..,zmax-%eps]</literal>.
                                </para>
                            </listitem>
                        </varlistentry>
                    </variablelist>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>&lt;opt_args&gt;</term>
                <listitem>
                    <para>
                        uma seqüência de declarações <literal>key1=value1,
                            key2=value2
                        </literal>
                        ,... onde keys podem ser
                        <literal>theta</literal>,<literal>alpha</literal>,<literal>leg</literal>,<literal>flag</literal>,
                        <literal>ebox</literal>,<literal>zlev</literal> (ver abaixo). Neste
                        caso, a ordem não possui significado especial.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>theta, alpha</term>
                <listitem>
                    <para>valores reais de dados em graus, as coordenadas esféricas do
                        ponto de observação.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>leg</term>
                <listitem>
                    <para>string definindo os rótulos para cada eixo com @ como um
                        separador de campos, por exemplo "X@Y@Z".
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>flag</term>
                <listitem>
                    <para>um vetor real de tamanho três.
                        <literal>flag=[mode,type,box]</literal>.
                    </para>
                    <variablelist>
                        <varlistentry>
                            <term>mode</term>
                            <listitem>
                                <para>string de representação de modo.</para>
                                <variablelist>
                                    <varlistentry>
                                        <term>mode=0:</term>
                                        <listitem>
                                            <para>as curvas são desenhadas na superfície definida
                                                por (x,y,z).
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>mode=1:</term>
                                        <listitem>
                                            <para>as curvas são desenhadas em um esboço 3d e sobre o
                                                plano definido pela equação z=zlev.
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>mode=2:</term>
                                        <listitem>
                                            <para>as curvas são desenhadas em um esboço 2D.</para>
                                        </listitem>
                                    </varlistentry>
                                </variablelist>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>type</term>
                            <listitem>
                                <para>um inteiro (tipo de escala)</para>
                                <variablelist>
                                    <varlistentry>
                                        <term>type=0</term>
                                        <listitem>
                                            <para>o esboço é feito utilizando-se a escala 3d
                                                corrente (definida por uma chamada anterior a
                                                <literal>param3d</literal>, <literal>plot3d</literal>,
                                                <literal>contour</literal> ou
                                                <literal>plot3d1</literal>).
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>type=1</term>
                                        <listitem>
                                            <para>re-escala automaticamente caixas 3d com relação de
                                                aspecto extrema, as fronteiras são especificadas pelo
                                                valor do argumento opcional
                                                <literal>ebox</literal>.
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>type=2</term>
                                        <listitem>
                                            <para>re-escala automaticamente caixas 3d com relação de
                                                aspecto extrema, as fronteiras são computadas
                                                utilizando-se dados fornecidos.
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>type=3</term>
                                        <listitem>
                                            <para>fronteiras 3d isométricas com fronteiras da caixa
                                                dadas por <literal>ebox</literal>, de modo semelhante a
                                                <literal>type=1</literal>
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>type=4</term>
                                        <listitem>
                                            <para>fronteiras 3d isométricas derivadas dos dados, de
                                                modo semelhante a <literal>type=2</literal>
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>type=5</term>
                                        <listitem>
                                            <para>fronteiras 3d isométricas expandidas com
                                                fronteiras fornecidas por <literal>ebox</literal>, de
                                                modo semelhante a <literal>type=1</literal>
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>type=6</term>
                                        <listitem>
                                            <para>fronteiras 3d isométricas expandidas derivadas dos
                                                dados, de modo semelhante a
                                                <literal>type=2</literal>
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                </variablelist>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>box</term>
                            <listitem>
                                <para>um inteiro (moldura ao redor do esboço).</para>
                                <variablelist>
                                    <varlistentry>
                                        <term>box=0</term>
                                        <listitem>
                                            <para>nada é desenhado ao redor do esboço.</para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>box=1</term>
                                        <listitem>
                                            <para>não implementado (é como box=0).</para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>box=2</term>
                                        <listitem>
                                            <para>apenas os eixos atrás da superfície são
                                                desenhados.
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>box=3</term>
                                        <listitem>
                                            <para>uma caixa cercando a superfície é desenhada e
                                                legendas são adicionadas.
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                    <varlistentry>
                                        <term>box=4</term>
                                        <listitem>
                                            <para>uma caixa cercando a superfície é desenhada e
                                                legendas e eixos são adicionados.
                                            </para>
                                        </listitem>
                                    </varlistentry>
                                </variablelist>
                            </listitem>
                        </varlistentry>
                    </variablelist>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>ebox</term>
                <listitem>
                    <para>
                        usado quando <literal>type</literal> em
                        <literal>flag</literal> é 1. Especifica as fronteiras do esboço
                        através do vetor
                        <literal>[xmin,xmax,ymin,ymax,zmin,zmax]</literal>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>zlev</term>
                <listitem>
                    <para>número real.</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Descrição</title>
        <para>
            <literal>contour</literal> 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
            <literal>plot3d</literal> (exceto por <literal>zlev</literal>)e seus
            significados são os mesmos. Eles controlam o desenho das curva de nível em
            um esboço 3d. Apenas <literal>flag(1)=mode</literal> tem significado
            especial.
        </para>
        <variablelist>
            <varlistentry>
                <term>mode=0</term>
                <listitem>
                    <para>as curvas são desenhadas na superfície definida por
                        (x,y,z).
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>mode=1</term>
                <listitem>
                    <para>as curvas são desenhadas em um esboço 3d e sobre o plano
                        definido pela equação z=zlev.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>mode=2</term>
                <listitem>
                    <para>as curvas são desenhadas em um esboço 2D.</para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>Você pode modificar o formato dos pontos flutuantes impressos sobre
            os níveis utilizando <literal>xset("fpf",string)</literal> onde
            <literal>string</literal> fornece o formato em na sintaxe de formato C
            (por exemplo <literal>string="%.3f"</literal>). Use
            <literal>string=""</literal> para voltar ao formato padrão e use
            <literal>string=" "</literal> para suprimir a impressão.
        </para>
        <para>
            Geralmente é usado <literal>contour2d</literal> para se esboçar
            curvas de nível em um esboço 2d.
        </para>
        <para>
            Entre com o comando <literal>contour()</literal> para visualizar uma
            demonstração.
        </para>
    </refsection>
    <refsection>
        <title>Exemplos</title>
        <programlisting role="example"><![CDATA[
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]);
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>Ver Também</title>
        <simplelist type="inline">
            <member>
                <link linkend="contour2d">contour2d</link>
            </member>
            <member>
                <link linkend="plot3d">plot3d</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
