<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="geom3d">
    <refnamediv>
        <refname>geom3d</refname>
        <refpurpose>projection 3D vers 2D après une instruction
            de dessin 3D
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Séquence d'appel</title>
        <synopsis>[x,y]=geom3d(x1,y1,z1)</synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Paramètres</title>
        <variablelist>
            <varlistentry>
                <term>x1,y1,z1</term>
                <listitem>
                    <para>vecteur réels de même taille (points 3D).</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>x,y</term>
                <listitem>
                    <para>
                        vecteurs réels de même taille que <literal>x1</literal>,
                        <literal>y1</literal> et <literal>z1</literal>.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Description</title>
        <para>Après l'utilisation d'une instruction de dessin 3D du type
            <literal>plot3d</literal>, <literal>plot3d1</literal> ou <literal>param3d</literal>,
            <literal>geom3d</literal> permet de faire la correspondance entre un point de
            l'espace 3D <literal>(x1(i),y1(i),z1(i))</literal> et le point correspondant
            <literal>(x(i),y(i))</literal> dans le plan projeté 2D. On peut ainsi utiliser
            les primitives graphiques avec <literal>(x,y)</literal> pour superposer des
            dessins.
        </para>
    </refsection>
    <refsection>
        <title>Exemples</title>
        <programlisting role="example"><![CDATA[
deff("[z]=surface(x,y)","z=sin(x)*cos(y)")
t=%pi*(-10:10)/10;
// 3D plot of the surface
fplot3d(t,t,surface,35,45,"X@Y@Z")
// now (t,t,sin(t).*cos(t)) is a curve on the surface
// which can be drawn using geom3d and xpoly
[x,y]=geom3d(%pi/2,0,surface(%pi/2,0))
 ]]></programlisting>
        <scilab:image>deff("[z]=surface(x,y)","z=sin(x)*cos(y)")
            t=%pi*(-10:10)/10;
            fplot3d(t,t,surface,35,45,"X@Y@Z")
            [x,y]=geom3d(%pi/2,0,surface(%pi/2,0))
        </scilab:image>


        <programlisting role="example"><![CDATA[

my_plot_desc          = "plot3d and use of geom3d";

  r = (%pi):-0.01:0;
x = r.*cos(10*r);
y = r.*sin(10*r);

deff("[z]=Surf(x,y)","z=sin(x)*cos(y)");
t=%pi*(-10:10)/10;

// Plot the surface'
fplot3d(t,t,Surf,35,45,"X@Y@Z",[19,2,3]);

// Add 2d graphics on 3d graphic'
z=(sin(x).*cos(y));
[x1,y1] = geom3d(x,y,z);
xpoly(x1,y1,"lines");

// Adjust some plotting parameters'
BackgroundColorId           = color(70,174,255);
current_axe                 = gca();
plot_3d                     = current_axe.children(2);
plot_3d.hiddencolor         = 32;
polyline                    = current_axe.children(1)';;
polyline.foreground         = 8;
current_axe.rotation_angles = [70,47];
current_axe.background      = BackgroundColorId;

// A second 2d graphics'
[x1,y1] = geom3d([0,0],[0,0],[5,0]);
xsegs(x1,y1);
xstring(x1(1),y1(1),"The point (0,0,0)");

xtitle(my_plot_desc," "," "," ");

 ]]></programlisting>
        <scilab:image>

            my_plot_desc          = "plot3d and use of geom3d";

            r = (%pi):-0.01:0;
            x = r.*cos(10*r);
            y = r.*sin(10*r);

            deff("[z]=Surf(x,y)","z=sin(x)*cos(y)");
            t=%pi*(-10:10)/10;

            // Plot the surface'
            fplot3d(t,t,Surf,35,45,"X@Y@Z",[19,2,3]);

            // Add 2d graphics on 3d graphic'
            z=(sin(x).*cos(y));
            [x1,y1] = geom3d(x,y,z);
            xpoly(x1,y1,"lines");

            // Adjust some plotting parameters'
            BackgroundColorId           = color(70,174,255);
            current_axe                 = gca();
            plot_3d                     = current_axe.children(2);
            plot_3d.hiddencolor         = 32;
            polyline                    = current_axe.children(1)';;
            polyline.foreground         = 8;
            current_axe.rotation_angles = [70,47];
            current_axe.background      = BackgroundColorId;

            // A second 2d graphics'
            [x1,y1] = geom3d([0,0],[0,0],[5,0]);
            xsegs(x1,y1);
            xstring(x1(1),y1(1),"The point (0,0,0)");

            xtitle(my_plot_desc," "," "," ");
        </scilab:image>

    </refsection>
</refentry>
